一、版本库常用命令
-
初始化某目录为git项目。(默认为master分支)
git init
-
从远程clone一个项目 git clone <http://abc.com/scm/abc/def.git>
-
查看当前分支状态
git status
-
更新代码(本质上是先fetch再merge)
git pull origin master
一般只有一个远程分支跟踪,可以简写为:git pull
二、分支操作
-
新建分支
git branch -b <branchname>
-
切换分支
git checkout <branchname>
-
新建并切换分支
git checkout -b <branchname>
-
重置dev分支为master(把dev的指针指向master指针位置)
git checkout dev
git reset --hard master
-
查看远程分支
git branch -a
-
删除远程分支
git push origin --delete <branchname>
三、提交操作
养成先pull再提交的习惯,减少冲突。
- 提交前配置用户名密码
git config --global user.name "工号"
git config --global user.email "邮箱"
2.代码提交流程
#提交到缓存区 git add <filename或者用.表示所有修改的文件>
#提交到本地分支 git commit -m "提交log"
#推送至远程服务器分支(branch)(注:测试用例提交分支feature/SF_AUTOTEST_API) git push origin feature/abc
#推送至远程服务器主干(master) git push origin master
可简写为git push
3.强行推送本地至分支(一般当本地与远程log差异较大时会禁止push,可采用以下命令强行推送)git push origin <branchname> --force
四、merge操作
-
合并master到分支dev
git checkout dev
git merge master
-
若merge时提示unrelated histories,拒绝merge操作,则可采用以下命令
git merge master --allow-unrelated-histories
五、冲突解决
git status
查看冲突的文件- 手动打开冲突的文件,编辑冲突。并删除冲突的标记符,保存。
- 执行add、commit即可
六、撤销操作
-
仅修改,还没有add,想还原修改(用版本库替换工作区文件)
git checkout <filename>
或git checkout .
还原工作区所有修改的文件 -
已经add,还没commit,想撤销add(回退版本、从暂存区退回工作区)
git reset HEAD <filename>
可加参数,控制文件修改 -
已经commit,还没push。想撤销commit
git reset <logid>
#撤销提交,但修改的代码还在git reset --hard <logid>
#撤销提交,代码也被还原了 -
已经提交,但发现少提交了一个东西/提交日志写错了
git add <filename>
git commit --amend -m "提交log"
#将两次提交合并,log只显示一次。 -
已经push,想删除这次push
#方法一(会产生一次新的提交):git revert HEAD
git push
#方法二:git reset --hard HEAD^
git push
-
将本地分支重置为远程版本
git reset --hard origin/[branch-name]
七、其它操作
-
编辑器使用(在命令行中commit时需要写入log)
c #进入编辑
ESC #退出编辑
:wq #保存并退出
-
中文乱码解决(若命令行中显示均为数字乱码,可使用)
git config --global core.quotepath false
-
清理操作,解决local rsf报错
git gc --prune=now
-
查看log中某文件详细的修改内容
git log -p <filename>
-
git reflog
-记录所有提交,包括reset、删除的提交。可用于恢复删除。
八、reset、revert、checkout区别
-
git reset HEAD^
移动指针的指向。
--soft:缓存区和工作目录都不会被改变
--mixed :默认选项。缓存区和你指定的提交同步,但工作目录不受影响
--hard:缓存区和工作目录都同步到你指定的提交
--推荐在个人分支上使用。 -
git checkout
-带上分支名:切换分支。
-带上文件名:用版本库中的文件替换工作区文件。一般用于撤销工作区中的修改。 -
git revert
-用一个新的提交去"抵消"之前的修改。
-推荐在公共分支上使用。
git reset | 提交层面 | 在私有分支上舍弃一些没有提交的更改 |
git reset | 文件层面 | 将文件从缓存区中移除 |
git checkout | 提交层面 | 切换分支或查看旧版本 |
git checkout | 文件层面 | 舍弃工作目录中的更改 |
git revert | 提交层面 | 在公共分支上回滚更改 |
git revert | 文件层面 | (然而并没有) |
命令 |
作用域 |
常用情景 |
---|