在git-merge的手册页中,有许多您可以使用的merge策略。解决-这只能使用3路merge算法解决两个头(即当前分支和您从中提取的另一个分支)。它会尝试仔细检测交叉merge歧义,通常被认为是安全和快速的。递归-这只能使用3-waymerge算法解决两个头。当有多个共同祖先可用于三向merge时,它会创建一个共同祖先的merge树,并将其用作三向merge的引用树。据报道,通过对从Linux2.6内核开发历史中获取的实际merge提交进行的测试,这可以减少merge冲突,而不会导致错误merge。此外,这可以检测和处理涉及重命名的merge。这是pull或merge一个分支时的默
我开始更改我的代码库,却没有意识到我在一个旧主题分支上。为了转移它们,我想把它们藏起来,然后将它们应用到master的一个新分支。我使用gitstashpop将正在进行的更改转移到这个新分支,忘记了在创建新分支之前我没有将新更改pull入master。这导致了一堆merge冲突,并丢失了我的更改的干净存储(因为我使用了pop)。一旦我正确地重新创建了新分支,我该如何恢复我stash的更改以正确应用它们? 最佳答案 事实证明,Git足够聪明,不会在应用不干净时删除存储。我能够通过以下步骤达到所需的状态:取消暂存merge冲突:gitr
在Git中,有没有一种方法可以将一个分支的所有更改merge到另一个分支,但同时压缩为一个提交?我经常在单独的分支中开发新功能,并且会定期提交/推送-主要用于备份或将我正在开发的内容转移到另一台机器上。大多数情况下,这些提交会说“FeaturexxxWIP”或一些多余的东西。一旦该工作完成并且我想将WIP分支merge回master,我想丢弃所有这些中间提交,并且只有一个干净的提交。有没有简单的方法来做到这一点?或者,一个压缩分支上自分支点以来的所有提交的命令怎么样? 最佳答案 另一个选项是gitmerge--squash然后最后做
如何在Git中执行以下操作?我当前的分支是branch1,我做了一些本地更改。但是,我现在意识到我实际上是想将这些更改应用到branch2。有没有办法应用/merge这些更改,使它们成为branch2上的本地更改,而无需在branch1上提交它们? 最佳答案 由于您的文件尚未在branch1中提交:gitstashgitcheckoutbranch2gitstashpop或gitstashgitcheckoutbranch2gitstashlist#tocheckthevariousstashmadeindifferentbranc
我正在merge一个可能有很多冲突的远程分支。我怎么知道它是否会发生冲突?我在git-merge上没有看到类似--dry-run的东西。 最佳答案 如前所述,传入--no-commit标志,但为了避免快进提交,还传入--no-ff,例如所以:$gitmerge--no-commit--no-ff$BRANCH检查分阶段更改:$gitdiff--cached而且您可以撤消merge,即使它是快进merge:$gitmerge--abort 关于git-有git-merge--dry-run
我在GitHub存储库中有两个分支,即master和development。如图所示,我正在开发分支中进行所有开发。gitbranchdevelopmentgitadd*gitcommit-m"Myinitialcommitmessage"gitpush-uorigindevelopment现在我想将development分支上的所有更改merge到master中。我目前的做法是:gitcheckoutmastergitmergedevelopmentgitpush-uoriginmaster请让我知道我遵循的程序是否正确。 最佳答案
我是GitHub的新手.今天我在尝试将我的代码推送到GitHub时遇到了一些问题。Pushingtogit@github.com:519ebayproject/519ebayproject.gitTogit@github.com:519ebayproject/519ebayproject.git![rejected]master->master(non-fast-forward)error:failedtopushsomerefsto'git@github.com:519ebayproject/519ebayproject.git'hint:Updateswererejectedbec
我在分支mybranch1。mybranch2是从mybranch1派生出来的,并且在mybranch2中进行了更改。然后,在mybranch1上,我完成了gitmerge--no-commitmybranch2说明merge时有冲突。现在我想丢弃所有内容(merge命令),以便mybranch1恢复到原来的状态。我不知道该怎么做。 最佳答案 最新的Git:gitmerge--abort这会尝试将您的工作副本重置为merge前的任何状态。这意味着它应该从merge之前恢复任何未提交的更改,尽管它并不总是可靠地这样做。通常,您无论如何
gitrevert一个人是行不通的。显然,-m必须指定。 最佳答案 在gitrevert-m中,-m选项指定了parentnumber。这是必需的,因为merge提交有多个父级,并且Git不会自动知道哪个父级是主线,哪个父级是您要取消merge的分支。当您在gitlog的输出中查看merge提交时,您会看到它的父项列在以Merge开头的行中:commit8f937c683929b08379097828c8a04350b9b8e183Merge:8989ee07c6b236Author:BenJamesDate:WedAug1722:
当使用gitmerge将主题分支“B”merge到“A”时,我遇到了一些冲突。我知道所有的冲突都可以使用“B”中的版本来解决。我知道gitmerge-sours。但我想要的是类似gitmerge-stheirs的东西。为什么不存在?在与现有git命令发生冲突merge后,如何获得相同的结果?(gitcheckout来自B的每个未merge的文件)只是丢弃分支A中的任何内容(merge提交点到树的B版本)的“解决方案”不是我想要的。 最佳答案 一个类似的选择是--strategy-option(缩写-X)选项,它接受他们的。例如:gi