我想让主题分支与其父分支保持同步。这与使用rebase到父分支的本地主题分支非常有效:
git checkout topic
git rebase master
但是,如果topic是远程分支,那么似乎对master的rebased与检查远程分支相冲突。
跟踪远程分支中主服务器更改的最佳方法是什么。
这是我一直在做的事情。在将远程分支变为主控时,我似乎总是会遇到多个冲突和多个“分支”。
使用远程分支时使用标准构造:
git checkout master
git checkout -b topic
git push origin topic
git branch --set-upstream topic origin/topic
我继续研究主题,提交提交,并推动原点。
# edit some files
git commit -a
git push
在某些时候,master已经更新,我需要将这些更改合并到我的主题分支中。
git checkout master
git pull
git checkout topic
git rebase master
大。现在推动更新。
$ git push
To git@github.com:duane/branchtest.git
! [rejected] topic -> topic (non-fast-forward)
error: failed to push some refs to 'git@github.com:duane/branchtest.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
奇怪的是,日志看起来像这样:
$ git log --graph --format=oneline
* 31f4b133a4a9983528ba309e6c161e09e8061f84 Change 1 for topic 2.
* 2dc45b91856748a9c6adaf3579a7b8b2cf90a6ae Change 3 for file1.
* db97959ec75267bf94d97af6e8b2a8a762c61b25 Add topic2.txt.
* 08e6cc4b14a23dad86c2d283ee4acc1cebc775ef Change 2 for file1.
* e707b9571b2aa4d01073f156abb407fec15a195a Change 1 for file1.
* 2002670efda4d8c83150a4cc1c25fac62e37814d Add file1.txt.
* d3a6eae43e4824f455872622491c2ca861f96d4f Begin the repo.
$ git pull
Merge made by recursive.
之后看起来像
$ git log --graph --format=oneline
* 18ba5265e2836e1a7884341dbedb8b2cc8ab9727 Merge branch 'topic' of github.com:duane/branchtest into topic
|\
| * 0e5f3022c7f087ed4dd70d11a0cba250300be05e Change 1 for topic 2.
* | 31f4b133a4a9983528ba309e6c161e09e8061f84 Change 1 for topic 2.
* | 2dc45b91856748a9c6adaf3579a7b8b2cf90a6ae Change 3 for file1.
|/
* db97959ec75267bf94d97af6e8b2a8a762c61b25 Add topic2.txt.
* 08e6cc4b14a23dad86c2d283ee4acc1cebc775ef Change 2 for file1.
* e707b9571b2aa4d01073f156abb407fec15a195a Change 1 for file1.
* 2002670efda4d8c83150a4cc1c25fac62e37814d Add file1.txt.
* d3a6eae43e4824f455872622491c2ca861f96d4f Begin the repo.
主题2的更改1是我所做的更改。它现在列出两次。
当然,推送最终会在我的远程主题分支上出现这种混乱。
更大的问题是,每次发生主要变换时,都会重复这个额外的合并点;即使主人没有变化!
我哪里出错了?如何在维护远程分支的同时与主分支保持同步?
答案 0 :(得分:1)
如果我理解正确,您希望远程主题分支完全镜像您的本地分支,但只在本地计算机上进行更改?
在这种情况下,只要您对主题分支进行本地更改,就应该git push --force
。但是,如果您与其他任何人共享您的主题分支,则不应该这样做。在这种情况下,您应该跳过rebase
并从主人那里做一个merge
以及时了解它。它并不像“漂亮”,但它更可靠。