- 暂存
- git stash save ""
- git stash pop
- cherry-pick
- git cherry-pick 序列号
- git push
- 中断merge
- git merge --abort
- reset(强制回到某一个版本,之后的提交全部没了)
- git reset --hard 序列号
- git push origin master --force
- revert(撤销某一次提交,之后的提交还在)
- git revert -m 1 序列号
- git push origin master
- rebase(用于把一个分支的修改合并到当前分支)
-
never use it on public branches(不要在公共分支上使用)
- git checkout master
- git pull
- git checkout dev
- git rebase -i HEAD~2 //合并提交 --- 2表示合并两个,这里是将本地分支的近两次提交合并成一次提交(简化提交历史,减少冲突解决次数)
- git rebase master---->解决冲突(每次只能解决一个冲突)--->git add . --->git rebase --continue
- git push origin dev --force (本地分支可以不推送远程,就没有这一步)
- git checkout master
- git merge dev
- git push origin master
如果你rebase master 到你的feature分支:
rebase 将所有master的commit移动到你的feature 的顶端。问题是:其他人还在original master上开发,由于你使用了rebase移动了master,git 会认为你的主分支的历史与其他人的有分歧,会产生冲突。
在执行git rebase 之前 问问自己,
会有其他人看这个分支么?
if YES 不要采用这种带有破坏性的修改commit 历史的rebase命令
if NO ok,随你便,可以使用rebase
rebase 和 merge 总结
都是用于把一个分支的修改合并到当前分支
如果你想要一个干净的,没有merge commit的线性历史树,那么你应该选择git rebase
如果你想保留完整的历史记录,并且想要避免重写commit history的风险,你应该选择使用git merge