共计 1768 个字符,预计需要花费 5 分钟才能阅读完成。
一、git 常用指令
1、git 显示全部分支
git branch // 显示本地分支
git branch -a // 显示远程分支
2、git 创建分支
git branch 分支名
3、切换分支
git checkout 分支名
git checkout -b 分支名 若分支不存在,则创建它
4、删除分支
git branch -d 分支名
-d 当分支已经合并到主干后删除
- D 无论如何都删除分支
5、合并分支
git merge 分支名
6、撤销前一次 commit
git revert HEAD
7、撤销所有本地修改
git reset –hard
8、撤销所有本地到上一次修改
git reset –hard HEAD^
9、撤销上一次 commit,将 commit 的文件撤回暂存区
git reset –soft HEAD^
要是想撤销到上上次,就是 HEAD^^ , 以此类推。
git revert 是撤销某次操作,此次操作之前的 commit 都会被保留
git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区
10、将此次更新文件并入到上次 commit 的记录中,不新添加 commit
git commit -amend
二、git 进阶
1、git tag
可以将某个具体的版本打上一个标签,这样你就不需要记忆复杂的版本号哈希值了,例如你可以使用 ‘git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20’ 来标记这个被你还原的版本,那么以后你想查看该版本时,就可以使用 revert_version 标签名,而不是哈希值了
2、git stash
把所有本地修改都放到暂存区
3、git stash pop
把 git stash 放到暂存区的代码拿出来
tips:
- 使用 git stash 保存当前的工作现场,那么就可以切换到其他分支进行工作,或者在当前分支上完成其他紧急的工作,比如修订一个 bug 测试提交。
- 如果一个使用了一个 git stash,切换到一个分支,且在该分支上的工作未完成也需要保存它的工作现场。再使用 gitstash。那么 stash 队列中就有了两个工作现场。
- 可以使用 git stash list。查看 stash 队列。
- 如果在一个分支上想要恢复某一个工作现场怎么办:先用 git stashlist 查看 stash 队列。确定要恢复哪个工作现场到当前分支。然后用 git stash pop stash@{num}。num 就是你要恢复的工作现场的编号。
- 如果想要清空 stash 队列则使用 git stash clear。
- 同时注意使用 git stashpop 命令是恢复 stash 队列中的 stash@{0}即最上层的那个工作现场。而且使用 pop 命令恢复的工作现场,其对应的 stash 在队列中删除。使用 git stash apply stash@{num}方法除了不在 stash 队列删除外其他和 git stashpop 完全一样。
常见问题:
1、提交合并失败
查看源文件
git 迷惑之处在于它不知道是把 hello world 这行放在前面还是把报时功能这段放在前面。
修改冲突
重新提交
git commit -am “xxx”
2、解决 gerrit 冲突
解决远程冲突:
cd demo 以分支为 develop 为例打开 Gerrit 有冲突的那个网址,如 http://192.168.1.33:8080/#/c/16/ 找到 Download 如下命令,执行
git fetch ssh://minggui.li@192.168.1.33:29418/demo refs/changes/16/16/1 && git checkout FETCH_HEADgit checkout -b new_branch_namegit fetch origingit rebase origin/develop
修改冲突文件
git add .git rebase –continuegit push origin new_branch_name:refs/for/developgit checkout developgit branch -D new_branch_name 不会产生新的 changes 记录,将原 changes 记录重新 review 提交即可,这时在原冲突机器上直接 pull 会本地冲突,需要 git reset –hard HEAD^ 否则会出现 cannot do a partial commit during a merge. 最后更新下代码 git pull