在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
使用gitklog,我无法发现gitmerge和gitmerge--no-ff的效果之间的区别。我如何观察差异(使用git命令或某些工具)? 最佳答案 --no-ff标志阻止gitmerge在检测到您当前的HEAD时执行“快进”您尝试merge的提交的祖先。快进是,git不构建merge提交,而是将分支指针移动到指向传入的提交。这通常发生在没有任何本地更改的情况下执行gitpull时。但是,有时您希望防止这种行为发生,通常是因为您希望维护特定的分支拓扑(例如,您正在merge主题分支并且希望确保它在读取历史记录时看起来是那样的)。为
假设我们在Git中有以下情况:创建的存储库:mkdirGitTest2cdGitTest2gitinitmaster中的一些修改发生并提交:echo"OnMaster">filegitcommit-a-m"Initialcommit"Feature1从master分支出来并完成了一些工作:gitbranchfeature1gitcheckoutfeature1echo"Feature1">featureFilegitcommit-a-m"Commitforfeature1"与此同时,在master-code中发现了一个错误,并建立了一个hotfix-branch:gitcheckout