【问题标题】:Bitbucket - Syncing Branch with another BranchBitbucket - 将分支与另一个分支同步
【发布时间】:2015-10-06 22:28:57
【问题描述】:

这可能是 How to keep a git branch in sync with master 的副本(我假设我可以将 Master 替换为另一个分支),但这很重要,并且不会以错误的方式合并,所以我需要确定。

场景

有一个名为v1 的分支,我创建了一个名为v1_adminui 的分支。我已经对我的分支 v1_adminui 进行了大约 10 次提交,但是在 v1 中对项目的另一部分进行了重大改进,所以我想将这个更改与我当前的分支同步。

我相信以下方法可以做到:

git checkout v1
git pull
git checkout v1_adminui
git merge v1

请您确认这是否正确?如果没有,我们将不胜感激有关如何完成此操作的任何帮助。

【问题讨论】:

  • 如果 v1_adminui 是一个本地分支,我会通过在 origin/v1 之上重新设置 v1_adminui 来做到这一点,正如对您链接的问题的不同答案中所建议的那样:stackoverflow.com/a/16330782/5085250
  • v1_adminui 是在 bitbucket 上创建并获取然后签出的。但是,我是团队中唯一使用v1_adminui 的人。我还应该尝试使用变基解决方案吗?我假设要使用的命令是git rebase v1_adminui/v1
  • 如果您的分支在 bitbucket 上(包含所有提交!),您可以尝试不同的方法而不会破坏任何内容。如果出现问题,您可以发送git reset origin/<branchname> 并重试。
  • 命令是git checkout v1_adminui,然后是git rebase origin/v1。然后你本地的v1_adminui 分支被重新定位到origin/v1 分支。
  • 下页rebase vs merge解释得很好。

标签: git sync bitbucket git-branch git-merge


【解决方案1】:

由于你是唯一一个在这个分支上工作的人,你应该使用rebase 而不是merge

# Get the base branch
git checkout v1

# Pull in any changes to make sure you have the latest version
git pull

# Check out your branch
git checkout v1_adminui

# Rebase your changes on top of the v1 changes
git rebase v1

# Optionally push your rebased branch
git push origin v1_adminui

在最后一步推送时,您可能必须使用--force 选项。由于您正在使用变基重写分支的历史记录,因此远程分支将具有不同的历史记录。只有在没有其他人使用此分支时才这样做!

【讨论】:

  • 我修复了我的冲突,但现在我看到了:git rebase --continue app/index.html: needs merge app/v1/js/controllers/AdminCtrl.js: needs merge app/v1/js/models/AdminModel.js: needs merge app/v1/views/admin/admin.html: needs merge You must edit all merge conflicts and then mark them as resolved using git add
  • 修复冲突后,按照 Git 的要求执行操作:使用 git add . 添加所有更改的文件。完成后,使用git rebase --continue 继续变基。
  • 我明白了,谢谢。似乎它经历了每一次提交并解决了冲突,所以不得不这样做几次。看起来它现在正在工作将仔细检查所有内容。感谢您的帮助!
  • 提交和推送不会更新 v1 对吗?我明白了:git status # On branch v1_adminui # Your branch and 'origin/v1_adminui' have diverged, # and have 15 and 7 different commits each, respectively. # nothing to commit (working directory clean)
  • 好 - 最后一条消息告诉您,您的远程分支现在有不同的历史记录。如果要推送,则必须使用 --force 标志,如我的回答中所述。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 2017-07-07
相关资源
最近更新 更多