基本操作
配置全局的name 和email
git config --global user.name "name"
git config --global user.email "email"
生成SSH Key
ssh-keygen -t rsa -C "youremail"
- 会在你C:\Users\Administrator.ssh的目录里有个id_rsa.pub文件 用记事本打开复制里面的值
克隆项目
git clone 项目地址
拉取项目
git pull
上传项目
git push // 推送到当前你所处的分支
git push origin 分支名 // 推送到你标明的分支
分支操作
新建分支
git branch 分支名
切换分支
git checkout 分支名
合并分支
当你拉去了线上主分支到本地但是你并不想直接在上面更改,而是新建一个本地分支来进行更改,当你更改完成之后需要切回到主分支然后合并子分支
git merge 本地子分支
删除指定分支
git branch -D 分支名
commit合并操作
当你的本地commit想要多条合并成一条时 按如下操作即可
- 首先使用
git log --oneline // 显示本地的commit --oneline显示在一行 可以加也可以不加
- 找到你想要最终合并的上一条commit_id(hash值)
git rebase -i commit_id(hash值) // 全部合并到commit_id中
应该选择add1下面这个commit_id值
3. 这时候会进入vim界面 注意上面会有一个pick
-
pick 是指会执行这个 commit
-
squash是指这个commit会被合并到前一个commit中
- vi 常用命令:
- Esc:切换到命令行模式
- u:撤销
- i :从目前光标所在处输入
- :wq:保存文件并退出
- vi 常用命令:
只保留第一个为pick剩下的替换成squash 如下图
输入完成后敲击键盘上的Esc之后输入:wq结束vim
-
这时候会进入另一个vim 输入你最终合并的commit信息
最终我修改的信息是这样的
输入结束和前一个一样都是使用i和Esc :wq退出Vim
最后会有个successful的信息
- 进行上传即可
git push
rebase 命令 合并commit
git rebase --continue // 继续合并
git rebase --abort // 取消合并
git rebase --edit-todo // 打开你输入的合并信息 可以再次修改
上传代码到指定仓库
如何指定上传代码到某个仓库?
用于初始化的时候
- 在你的文件夹中 执行 git init 命令
git init
- 将所有文件丢进文件夹中,然后
git add .
- 将上一步add的文件commit到仓库
git commit -m "提交的说明注释"
- 将本地仓库关联到的仓库上
git remote add origin https://github.com/shiyuan233.github.io/
- 使用pull命令
git pull origin master
- 将本地仓库的文件上传到GitHub远程仓库
git push -u origin master
-
如果报错是因为你仓库可能没有进行初始化 少了README.md文件
-
error: Your local changes to the following files would be overwritten by merge:
出现这种问题,是因为有人在git服务器上直接修改文件,导致从git pull最新代码会提示这样的问题。 解决这样的问题,有以下两种方案: 方法1:如果你想保留刚才本地修改的代码,并把git服务器上的代码pull到本地(本地刚才修改的代码将会被暂时封存起来)
git stash git pull origin master git stash pop
常见问题
git commit -m 'xxx'出现报错
原因是:
pre-commit钩子惹的祸
当你在终端输入git commit -m"XXX",提交代码的时候, pre-commit(客户端)钩子,它会在Git键入提交信息前运行做代码风格检查。 如果代码不符合相应规则,则报错。
解决方式:
一、 简单粗暴的方式
- 进入项目的.git文件夹下面hooks文件夹,手动删除pre-commit文件
- 运行命令:rm -rf ./git/hooks/pre-commit 删除pre-commit文件
二、 根据提示在命令中添加--no-verify
将git commit -m"XXX" 改为 git commit --no-verify –m"XXX"
三、 代码改到符合标准再提交(推荐使用这个)
git commit 不成功
当你git commit 没有带提交信息的时候会进入让你输入提交信息的地方
- 按住字母i可以进入编辑模式输入你想要提交的信息
- 最后输入
:wq加回车结束
版本回退
回退到线上某个版本
git reset --hard commit_id(hash值)
git push origin HEAD --force // 如果不成功看看是不是增加了分支保护
回退到本地某一个分支
当你仅仅是传到了本地缓存库中并没有上传仓库
比如当你今天增加了多个commit 如commit1和commit2,你想回退到commit1,可以输入一下指令
git log // 获取某一个commit的commit_id(hash值)
git reset --hrad commit_id // 回退到某次commit
然后接着再进行push操作即可
强制覆盖
git push -f