--preserve-merges
Instead of ignoring merges, try to recreate them.
This uses the --interactive machinery internally, but combining it
with the --interactive option explicitly is generally not a good idea
unless you know what you are doing (see BUGS below).
Run Code Online (Sandbox Code Playgroud)
那么当你使用时会发生什么--preserve-merges?它与默认行为(没有该标志)有何不同?"重新创建"合并等意味着什么?
我长时间在分支上开发后切换到了主人.日志显示:
您的分支在167个提交后面是"origin/master",可以快速转发.
我试过了:
git checkout HEAD
Run Code Online (Sandbox Code Playgroud)
它没有效果.这是因为我在master上签出了一个中间提交.
如何让主人留在头上?
我是组织中唯一一个使用以下消息进行提交的人:
将远程跟踪分支'origin/develop'合并到develop中
不知道我在做什么导致他们,但我想停下来.
我发出什么命令来创建这个提交,我应该用什么命令来生成它?
我在推送到github存储库时收到此消息.你能告诉我一步一步修复它吗?我只推了一次就成功了.但是,当我更新一个项目并尝试推送我的第二次提交时,它显示"主人拒绝非快进"并且不允许我推送.请解释一下程序.
公司策略是--no-ff用于合并提交.我个人喜欢调整合并日志消息,所以我使用--no-commit.另外,我想在提交之前进行实际的编译和测试.
如何为所有分支制作--no-ff和--no-commit默认?
(而且我在问这个以后的几年里学到了,我几乎总是对提交感到满意,因此默认情况下允许它提交更简单,只要我修改或以其他方式解决问题,然后再进行推送都好...)
简短版本:只有在执行本地提交后明确合并时,是否需要保留合并?究竟会发生什么?它是否将您提交的代码重新应用于合并的分支?
请解释什么时候git pull --rebase --preserve-merges对常规有用git pull --rebase?我git pull --rebase在这里阅读了一个问题:http:
//notes.envato.com/developers/rebasing-merge-commits-in-git/
这可能会导致代码更改重复.
我在这里读到:什么时候`git pull --rebase`让我陷入困境?
只有在你提交了一些提交后才基本上进行了修改,才会发生这种情况.
所以我不确定我什么时候需要git pull --rebase --preserve-merges,如果使用它就不好了 git pull --rebase.
我正在使用我在开发环境中克隆的5个回购.当我想更新git仓库时,我输入文件夹/ home/adrian/repo1 /并执行:
git checkout master git pull origin master
但是,每天早上我必须为其他4个回购做同样的事情.这很麻烦.
我可以把它放在shell脚本中吗?我的意思是,如果我在shell脚本中编写这些git命令并运行它,我能否更新所有的repos?
我在想写这样的东西......
cd repo1
git checkout master
git pull origin master
cd ..
cd repo2
git checkout master
git pull origin master
cd ..
Run Code Online (Sandbox Code Playgroud)
(我在linux上)
编辑:也许这比我想象的更具挑战性.大多数情况下,当我做"git pull origin master"时,我会得到像"你的本地更改......将被合并覆盖"这样的错误.所以我必须进入相应的分支并藏匿东西..
编辑2:
我正在考虑的是,如果发生冲突,请忽略它并转到下一个回购
cd repo1
git checkout master
git pull origin master
(if there is conflict, ignore and go to the next line but dont stop here)
cd ..
cd repo2
git checkout master
git pull origin master
cd ..
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在括号中写出这个东西.
我必须从未合并的分支机构创建一些代码审查.
在寻找解决方案时,我们不要去本地分支上下文问题,因为这将在服务器上运行; 只有原点远程,我会在其他命令之前运行git fetch origin命令,当我们谈论分支时,我们将引用origin/branch-name.
如果设置很简单,并且每个源自master的分支继续以自己的方式继续,我们可以运行:
git rev-list origin/branch-name --not origin/master --no-merges
Run Code Online (Sandbox Code Playgroud)
对于每个未合并的分支,并将结果提交添加到每个分支的每个审阅.
当2-3个分支之间存在合并并且其中一些分支继续工作时会出现问题.正如我所说,对于每个分支,我想创建程序化的代码审查,我不想在多个评论中包含提交.
主要是每次提交找到原始分支时出现问题.
或者更简单一点......找到所有未创建的提交,这些提交按照他们最有可能创建的分支进行分组.
让我们关注一个简单的例子:
* b4 - branch2's head
* | a4 - branch1's head
| * b3
* | merge branch2 into branch1
* |\ | m3 - master's head
| * \| a3
| | |
| | * b2
| * | merge master into branch1
* /| | m2
|/ | * merge branch1 into …Run Code Online (Sandbox Code Playgroud) 每次我做一个
git pull origin master
Run Code Online (Sandbox Code Playgroud)
Git弹出一个编辑器,并要求我在提交之前写一个关于合并的评论.知道为什么会这样吗?另一位开发人员也在做master的工作,并没有遇到过这个问题.
据我所知,分支配置是正确的.除了我拉动时发生的令人讨厌的合并提交,我能够正常下拉变化并推动变化.
我一直在愉快地使用git一年的大部分时间,我们的团队正在使用git-flow模型(尽管不是git-flow本身).上周我创建了一个发布分支,并且很乐意将这些更改合并到开发/不稳定分支中 - 直到今天发生了一些非常奇怪的事情.
不知何故,发布分支得到了超合并,或者其他什么.老实说,我不能想到一个更好的方式来描述它而不是"穿越溪流".这是来自Git Extensions的视觉效果:

抱歉,我正在混淆大部分提交评论.但是,从底部开始,你可以清楚地看到在开发分支左和发布分支的右边是定期合并到它.直到大约一半时,我必须对合并做错了,因为在那一点上,发布分支实际上与开发分支合并 - 它们实际上似乎共享一个应该只在开发分支上的合并提交.
GitHub提供了一个更清晰的视图:

这看起来并不那么不寻常,除了蓝线和黑线应该是同一个分支.只是为了勾勒出明显的:
有来自其他贡献者的提交,但有关的具体提交来自我.我知道我可以信任提交消息.
提交信息都说着同样的事情:"合并分支'释放-1.3’进发展." 所以我知道我没有,例如,意外地将开发分支合并到发布分支中.
我从来没有创建的任何新的分支机构或使用比任何其他的命令git pull --rebase,git commit和git merge.我没有尝试或尝试使用存储库做任何有创意的事情.
它看起来像我放弃了原来的release-1.3分支,创建从一个新的develop中间附近分支.但我没有这样做.该release-1.3分支一直活跃.我发誓蓝色和黑色提交确实是同一个分支,除了将它们合并到开发(粉红色)分支之外,我从未做过任何合并.
所以我有两个问题:
这怎么可能呢?我从技术上理解它是如何可能的,git提交是图形节点和所有这些,但我无法从程序的角度弄清楚这是如何发生的.我可能犯了什么错误导致这种情况,我怎么能避免再次这样做?
我如何解开这些分支,以便在我的干净发布分支中没有来自不稳定分支的一堆半完成代码?它应该看起来像偶尔通过合并连接的两条平行线.我希望在没有强制推送或破坏性rebase的情况下执行此操作,因为这是一个共享存储库,尽管它是一个小团队和一个私有存储库,因此如果绝对必要,我可以让人们重新克隆.