草庐IT

rebase-merge

全部标签

git - Git merge 冲突后,很多我没碰过的文件变成了要提交的更改

所以我在一个分支中工作,进行一些更改,然后运行​​gitmergemaster。我在我修改的一个文件上遇到了merge冲突(我知道如何处理),但出于某种原因,我没有触摸了一堆文件(但在master中更新了)突然进入我的“要提交的更改”列表。这是为什么?我该如何解决这个问题?我不希望提交任何这些非我更改。 最佳答案 我自己也遇到了同样的问题,想出了一个中间解决方案。以后需要找到更好的。首先要解决@NoufalIbrahim提出的问题:至于“我不希望提交任何这些非我的更改。”,如果你不想,你为什么要进行merge有什么变化吗?您误解了@

git - 比较 Git 中 rebase 的差异

假设我刚刚将分支foo重新设置为master的基础,但有冲突。我想确保我没有在冲突解决期间通过引入额外更改或丢失更改(除了适合冲突解决的内容之外)而意外损坏foo的内容。我通过以下方式完成了此操作:diff-u(更新:或我刚刚被提醒的git-diff的等效...语法:)diff-u这向我展示了master..foo发生的所有更改,这些更改被视为补丁,这正是我想要检查的最小值。然而,调用很复杂,输出也不是完全易于解释的。有没有更好的方法来完成这项任务——提供相同的信息,但使用更好的方法或格式——还是我应该把上面的内容放在脚本中? 最佳答案

ruby-on-rails-3 - rebase 时 Gemfile.lock 中的冲突

在Git中rebase时人们有什么策略来解决Gemfile.lock冲突?我在最近的一个项目中不得不做很多这件事,这不仅很乏味,而且并不总是很清楚如何进行merge。 最佳答案 您可以在每次merge时重新锁定它,通过merge驱动程序(我通常使用它来alwayskeepthelocalversionofafileduringamerge)。请参阅AutoMergeGemfile.lock中的“WillLeinweber”:Allyouhavetodoisrunbundlelock(obsoleteinRail3)bundleins

git: 为什么 "Merge branch ' master' of ...”? pull 和推时

我还是git新手。我修改了一些源文件并提交。然后,我执行了gitpush。但是,我收到了这个错误。To/foo/bar/![rejected]master->master(non-fast-forward)error:failedtopushsomerefsto'/foo/bar/'Topreventyoufromlosinghistory,non-fast-forwardupdateswererejectedMergetheremotechangesbeforepushingagain.Seethe'Noteaboutfast-forwards'sectionof'gitpush--

git - 使用gitflow删除一个 'feature'分支而不 merge 到master分支

我正在使用Atlassian称为“Souretree”的GitGUI,特别是“Gitflow”模块来管理各种分支。我刚刚创建了一个“发布”分支,我不想将其merge回主分支或开发分支。我该如何摆脱它?我可以删除它吗?我担心的是我弄乱了gitflow配置。我只对这个分支做了一个我不关心的提交。 最佳答案 看来我可以根据以下来源删除分支:EvanHahndominiksymonowicz引用Evan的话:Totrashabranchusinggit-flow,simplydeleteitlikeyou'dnormallydeleteaG

svn - 是什么让一些版本控制系统更擅长 merge ?

我听说许多分布式VCS(git、mercurial等)比Subversion等传统VCS更擅长merge。这是什么意思?他们做了什么样的事情来使merge更好?这些事情可以在传统的VCS中完成吗?额外的问题:SVN1.5的merge跟踪是否完全平衡了竞争环境? 最佳答案 SVN的merge功能不错,简单的merge场景也能正常工作——例如发布分支和主干,其中主干跟踪RB上的提交。更复杂的场景会很快变得复杂。例如,让我们从稳定分支(stable)和trunk开始。你想演示一个新功能,并且更喜欢将它基于stable,因为它比trunk更

git - 如何防止 'master' 分支中的狐步舞 merge ?

foxtrotmerge是一种merge,其中'origin/master'作为第二个(或更高版本的)父级merge,如下所示:提交“D”是一个狐步舞merge,因为“origin/master”是它的第二个父级。请注意此时来自“origin/master”的第一父历史如何包含提交“B”。但在我的git仓库中,我需要所有涉及“origin/master”的merge,以将“origin/master”保留为第一个父级。不幸的是,git在评估提交是否符合快进条件时并不关心父顺序。这导致我的主分支上的第一个父历史有时会丢失曾经存在的提交(例如,“gitlog--first-parent”的

git pull --rebase 与 git rebase : what's the danger?

我不明白gitpull--rebase和gitrebase之间的区别,没有任何其他选项。我不明白它们是安全的、好的做法还是非常危险。我可以通过在本地执行gitpull--rebase来打破提交历史吗? 最佳答案 我完全不推荐rebase,只推荐私有(private)分支。我所说的私有(private)是指您非常确定只有您pull的分支。rebase将分支的起点更改为某个较新的提交,从而将所有提交merge到该点。这可能会导致与在其存储库中拥有旧分支基础的人员发生merge冲突。我建议始终采用纯merge,仅在某些情况下(例如功能分支

git - 如何将一个远程分支覆盖而不是 merge 到另一个分支?

我有两个分支。分期和测试版。暂存中有我根本不需要的代码(包括文件)。我怎样才能让Beta完全覆盖Staging,以便这些文件或代码都不会从Stagingmerge到Beta。我看到有人建议这样做:gitcheckoutstaginggitmerge-soursbeta但我不认为预先存在的文件会是“代码冲突”,因此不会被删除。我错了吗?如果我是对的,我将如何实现这一点? 最佳答案 您可以简单地删除staging并根据beta重新创建它:gitbranch-Dstaginggitcheckoutbetagitbranchstaging

git - 取消 merge 一个 git 分支,保留 merge 后的提交

假设有两个分支master和branchA。我在master工作,我是branchA的friend。一旦事情完成,我们将branchA与mastermerge。在merge后的master上多次提交后,客户想要在branchA上完成的工作已删除,但不是merge后完成的提交。我们该怎么做? 最佳答案 通读ProGit-UndoingMerges.基本上,您gitrevertmerge提交:gitrevert-m1hash_of_merge_commit您最终可能会遇到一些必须手动取消merge的冲突,就像正常merge时一样。附加链