git merge 与 rebase, 还有stash概念

git merge 与 rebase, 还有stash概念

来源 https://git-scm.com/book/en/v2/Git-Branching-Rebasing
https://www.jianshu.com/p/c17472d704a0

在git中,有两种方法把修改从一个分支整合到另一个分支。
分支
假设现在分支是这样的,merge与rebase的区别:

merge

$ git checkout master
$ git merge experiment

切换到master分支,把experiment的修改合并到master分支
merge

rebase

$ git checkout experiment
$ git rebase master

切换到experiment分支,把master分支的修改插到experiment修改之前
rebase

应用场景

merge适合在分支开发完毕后,合并到主版本?
rebase适合在分支开发时,把master的修改同步到分支? 但rebase的话,不能真实看到分支的修改过程,比如分支的a修改在rebase后会变为a’修改,修改日期会改变

注意点

  • rebase 操作会丢弃当前分支已提交的 commit,故不要在已经 push 到远程,和其他人正在协作开发的分支上执行 rebase 操
  • 与远程仓库同步时,使用 pull 命令默认进行了 git fetch + git merge --no-ff 两个操作,可以通过加上 --rebase 命令将 fetch 后的 merge 操作改为 rebase 操作。或者仅仅fetch
  • 当有修改未 commit 时,不能进行 rebase 操作,此时可以考虑先用 git stash 命令暂存

stash

切换分支需要提交当前分支所有变动,但可能开发还没完成,不想提交,这时候可以用stash。

git stash

可以用以下指令看你stash了什么

git stash list

恢复上次stash的内容可以用apply

git stash apply

如果要恢复某次,加上在list看到的编号

git stash apply stash@{1}

猜你喜欢

转载自blog.csdn.net/ZhaoBuDaoFangXia/article/details/88817935