我有一个开发分支,由项目中所有人共享并进行远程跟踪。
本地上,我已经从该分支切出去并开始了一些持续性的工作。然而,与此同时另一个开发者已经提交并推送了一些变更到开发分支,我希望将这些变更反映到我的本地分支中。 现在是进行变基的时候了吗?
我不想简单地将我的本地分支提交到开发分支,然后开始一个新的分支,因为我想保留我的提交历史。
据我所知,变基会将开发分支的HEAD取出,并在其上重新应用所有我的提交,但如果我们对相同的行进行了更改,那么它会覆盖其他开发者的更改吗?是否会产生冲突?
首先,你要fetch,然后再进行rebase。这样做不会破坏其他人的更改;你所做的是重新设置你的变更集,使其成为针对他的更改而不是早期版本的差异。这消除了日志中不必要和无用的合并消息,并使日志更有意义如果这确实是开发历史应该被表示的方式。
请放心进行rebase;在这种情况下听起来是正确的做法。太多人在没有思考的情况下就执行git pull命令。
是的,您说得对,rebase会获取开发分支的头部,并重新应用所有提交。
不过,它不会在没有抛出冲突的情况下覆盖其他开发人员的更改。如果存在冲突的更改,您需要解决冲突,就像合并一样(修复冲突,并使用git add
将修复内容暂存),然后告诉rebase继续使用git rebase --continue
。
是的,这是进行rebase的适当时机。这是许多人的工作方式;如果他们有未推送的本地提交,而又有上游提交,他们会在继续工作或推送到公共repo之前对其本地提交进行rebase。
.gitignore
来避免额外的文件影响你的工作,并在有未完成的更改时使用git stash
。除非你正在积极地进行工作,否则git status
应该报告没有需要提交的内容。 - Brian Campbell