Get changes from master into branch in Git
在我的存储库中,有一个名为aq的分支,我正在研究它。
然后,我在master中提交了新的工作和bug。
将这些承诺提交到aq分支机构的最佳方法是什么?从master中创建另一个新分支,并将其与aq合并?
- 在将来,您还可以从主分支和其他需要修复的分支的共同祖先开始bugfix分支,这样您就可以将它合并到所有这些分支中,而不必拾取任何其他分支。
- @但如果他不是这个项目的唯一工作人员,那是他无法控制的。其他人更新主控形状。见鬼,你自己也可以从第三个分支更新主,这种情况是不可避免的,需要一个通用的解决方案。
- @阿恩比兹卡德,我很确定他能控制自己的分支机构。如果他的分支是他想要合并的分支的共同祖先,并且人们随后添加到这些分支中,那么它仍然是共同祖先。
- 伙计们问,这个命令行吗,git pull origin my_branch_name。
查看aq分支,并从master重新平衡。
1 2
| git checkout aq
git rebase master |
- REBASE可以来自其他分支吗?即Git Rebase Otherbranch?我的问题似乎有点跑题了,我从一个分支上分支,然后对原来的分支进行了更改。
- 如果我是对的,那么在请求的基础上重新设置,它将显示所有主提交。如果使用合并/原始主控形状,则所有主控形状提交都将显示为1提交,这使得代码检查更加容易。
- 有时,git merge会更好。如果这两个分支都是随着时间的推移而发展的,那么您应该考虑哪一个最适合您。
- 参加派对较晚,但这是一个很好的关于何时重新设定和合并的概述:atlassian.com/git/tutorials/merging vs rebasing/…
- 如果您以前在分支AQ上的提交是公开的,那么不要重新平衡。atlassian.com/git/tutorials/rewriting-history/git-rebase
- 注意:这将复制对aq分支机构的承诺,但仍将承诺留给master分支机构,我认为这不是您的意图。因此,您必须将master回滚到commit,然后才能移动您想要移动的commit,例如使用git stash,然后使用git reset --hard ,然后使用git stash pop。
- 下面是一篇关于合并与重新平衡的更贴心的文章:kristopherwilson.com/2015/02/12/stop-merging-master
- 确保签出master,拉取最新的更改,然后更改为feature branch。我忘了这么做,一直想知道为什么我的更改没有应用:p
当你在你的AQ分支机构工作时,你应该只需要1〔6〕。
1 2
| git checkout aq
git merge origin/master |
号
- 当您希望从父分支中引入更改时,合并不是理想的解决方案。请参阅以下内容了解Rebase更好的原因:stackoverflow.com/questions/457927/…
- 如果钢筋"更好",完全取决于具体情况。
- 除了错误修复提交之外,源站主服务器可能还有提交。
- 为什么不叫"git合并主控形状"而不是"git合并源/主控形状"?
- 如果您的分支机构是本地的并且没有被推到origin,则使用rebase。如果您的分支已经被推过,请使用merge。rebase将改写历史。
- 为什么不叫"git合并主控形状"而不是"git合并源/主控形状"?
- @Toskan您可能会遇到一些问题,您的本地主机与远程设备不同步。这样可以确保您正在合并代码的远程副本。
- @GarbageCollector我反对Rebase(我可以,但不会重新base),我看不出有理由拿Rebase赌博。它只是让事情变得不必要的复杂。你总是问"我把这个推到遥控器了吗?"思考和向新来的人解释是一件痛苦的事。有人说它可以避免合并提交。但是我想要合并提交。它们不是杂乱的,它们记录分支合并时的情况。所以,最后一次,我们能不能停止表现得好像我们都在向大师承诺?如果您如此不喜欢日志中的合并提交,只需过滤它们——不需要合并。
- 在SVN世界中,我们可以指定日期间隔。在Git世界也是这样吗?假设我只对过去24小时内从master将更改合并到我的分支中感兴趣,我该怎么做呢?
先退房给主人:
做所有的改变,修补和承诺,并推动你的主人。
返回到您的分支"aq",并将master合并到其中:
1 2
| git checkout aq
git merge master |
。
您的分支机构将与master保持最新。合并的一个好的基本示例是3.2 Git分支-基本分支和合并。
不能保证主错误修复不在其他提交中,因此不能简单地合并。做
1 2 3 4 5
| git checkout aq
git cherry-pick commit1
git cherry-pick commit2
git cherry-pick commit3
... |
假设这些提交表示错误修复。
不过,从现在开始,将错误修复保存在单独的分支中。你就可以
。
当您想将它们全部转入常规的dev分支时。
无论是cherry-pick相关承诺进入aq分公司,还是将master分公司并入aq分公司。
与aq合并
1 2 3 4 5
| git checkout master
git pull
git checkout aq
git merge --no-ff master
git push |
简单的方法
1 2 3
| # 1. Create a new remote branch A base on last master
# 2. Checkout A
# 3. Merge aq to A |
。
对我来说,我已经有了一些改变,我想从基础分支机构得到最新的改变。我做不到rebase,cherry-pick要花很长时间,所以我做了以下的事情:
1 2
| git fetch origin <base branch name>
git merge FETCH_HEAD |
。
所以在这种情况下:
1 2
| git fetch origin master
git merge FETCH_HEAD |
你有几个选择。git rebase master aq到将保留提交名称的分支上,但如果这是一个远程分支,则不重新设置。如果您不关心保存提交名称,可以使用cx1〔10〕。如果您想要保留提交名称,并且它是一个远程分支git cherry-pick ,那么提交到您的分支。