我常常遇到一个常见的工作流障碍:
master 是我们的“稳定”分支
$ git status
# On branch master
nothing to commit (working directory clean)
在分支上创建一个模块
$ git checkout -b foo
$ echo "hello" > world
$ git add .
$ git commit -m "init commit for foo module"
$ git checkout master
$ git merge foo
在主分支或其他分支上进行工作
在接下来的几周里,更多的代码将直接提交到主分支和其他分支。在此期间,foo
分支将不会被修改。
恢复工作/更新 foo 分支
$ git checkout foo
糟糕!foo已经严重过期了!我知道为什么,但是我确实需要将foo与同步。
问题
我如何从master分支获取最新内容?
rebase
正是我正在寻找的东西;比删除/重新创建主题分支更合适。如果您将您的答案更新为“git rebase master”,我将很高兴接受它。(请不要指定origin/master
,因为我没有处理远程) - mačekgit rebase master foo
等同于git checkout foo && git rebase master
:) - mačekfoo
发布到服务器上,那么重新在master
分支上进行变基操作可能会导致潜在的问题。这是因为变基操作会改变分支中所包含的提交记录的哈希值,当你尝试推送变基后的foo
分支时,它与服务器上的不匹配,导致无法完成推送,提示错误信息"不是一个快进"。 - giorgiosironigit rebase
应该在提交更改之后,但在将更改推送或合并到公共分支之前进行。 - Teemu Leisti