0

我有一个本地分支master,并跟踪两个远程分支masterdev-me. 同时,另一个开发人员拥有自己的本地master,并跟踪同一个远程master和他自己的专用远程分支dev-other

有时,我们每个人都会分别从自己的本地推master送到远程开发分支(即dev-medev-other)。然后我们想将我们的远程dev-x分支合并到远程master分支中。

我正在考虑执行以下操作:

  1. 我们中的任何一个都将他的远程分支合并dev-x到远程master分支中。

  2. 另一个人这个合并的远程master分支变基到他自己的远程dev-x分支。

  3. 步骤 2) 中的同一个人合并回远程master分支。

这是一个正确的方法吗?

4

2 回答 2

0

您没有正确使用分支。看看我的帖子,你不应该关注什么 dev 有什么 master 和 main 分支。您应该专注于进行中的分支或功能分支,并使用其他分支来管理它们的集成:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/

于 2012-08-01T03:14:33.493 回答
-1

你把它复杂化了。将 git 中的所有内容都视为本地操作并忽略其他人,并将远程 repo 视为共享存储区域。

听起来(如果我没听错的话)你们每个人都在 master 工作,但同时推动 origin/master 和 origin/dev-something。这可行,但可能会令人困惑。如果您在 master 中工作,请推送到 master。如果您想推送到 dev-something,请在 dev-something的本地副本中工作

听起来你有它,如果你想合并所有远程的东西,这样做:

git fetch --all
git checkout master
git merge origin/master origin/dev-me origin/dev-other
[resolve conflicts]
git push origin master:master

如果您决定使用变基,则需要将每个远程分支按顺序变基到 master 上,这虽然为您提供线性历史记录,但并不能真正代表并行开发的现实。另外,您需要决定谁的更改“首先”。

我建议,如果你们每个人都在本地 dev-whatever 分支中工作并专门推送到该分支的上游版本,那会更好。当您想将代码导入 master 时,请检查 master 的本地副本,合并您的本地 dev-whatever 副本,然后将您的本地 master 备份。因此:

git checkout dev-whatever
git fetch --all
git merge origin/dev-whatever
[hack hack hack]
git commit -a
git push origin dev-whatever:dev-whatever
[decide you want to integrate what you've got into master]
git checkout master
git merge dev-whatever
git push origin master:master

如果你们两个都这样做,那么你们将各自整合自己的更改。如果您的同事已经推送,您的推送与他/她自己的合并更改,您的推送将失败。不用担心,此时您需要做的就是:

 git fetch --all
 git merge origin/master
 [resolve conflicts]
 git push origin master:master

在这种情况下,您可以将 merge 替换为 rebase,只需使用“他得到他们的第一个”方法来决定提交顺序。

于 2012-07-31T23:24:14.243 回答