有时我同时与多个分支机构合作。假设我有名为master、release-1.1和experimental的分支。我创建了一个新文件或在实验中进行了更改,我希望将这一更改应用到其他分支。我可以在git中做这个吗?如果我只是将提交merge到另一个分支,git会自动“快进”并包含其间的任何提交。但是必须有一些方法来处理这个用例。 最佳答案 你想做的叫做cherrypicking.您可以使用以下命令挑选单个提交:$gitcherry-pick这会将来自该提交的更改仅merge到您当前的分支中。但是请注意,这会创建一个新提交;这个新提交与精
鉴于两个分支已经fork,并且需要将一个分支(而不是所有分支)的特定提交引入另一个分支,gitcherrypick恰好实现了这一点。一段时间后,需要完全merge两个分支。git将如何知道它已经拥有过去精心挑选的提交,这样它就不会重新引入它? 最佳答案 avoidingduplicatecommit中提到的“tonio'sanswer”文章说:Imaginewehavethemasterbranchandabranchb:o---XNowweurgentlyneedthecommitsb1andb3inmaster,butnotth
鉴于两个分支已经fork,并且需要将一个分支(而不是所有分支)的特定提交引入另一个分支,gitcherrypick恰好实现了这一点。一段时间后,需要完全merge两个分支。git将如何知道它已经拥有过去精心挑选的提交,这样它就不会重新引入它? 最佳答案 avoidingduplicatecommit中提到的“tonio'sanswer”文章说:Imaginewehavethemasterbranchandabranchb:o---XNowweurgentlyneedthecommitsb1andb3inmaster,butnotth
我们团队的工作方式如下:我们的GitHub存储库中只有一个master分支,它不稳定-每天都会被推送到那里;对于稳定版本,我们使用标签(为了开发,我们在GitHub上使用私有(private)分支)我们每3周发布一个新的次要版本,其中包含错误修复和新功能(例如1.2.4、1.2.5、1.2.6...)我们还必须在有限的时间(几个月)内维护每个次要的旧版本,因此当有人使用1.2.4而最新版本是1.2.7时,他们发现了一个错误,他们可以要求我们修复他们使用的分支上的错误。然后我们发布一个补丁版本,1.2.4A。补丁非常特别。我们通常为次要版本做不超过1-2个补丁。对于大多数版本,我们不打补
我们团队的工作方式如下:我们的GitHub存储库中只有一个master分支,它不稳定-每天都会被推送到那里;对于稳定版本,我们使用标签(为了开发,我们在GitHub上使用私有(private)分支)我们每3周发布一个新的次要版本,其中包含错误修复和新功能(例如1.2.4、1.2.5、1.2.6...)我们还必须在有限的时间(几个月)内维护每个次要的旧版本,因此当有人使用1.2.4而最新版本是1.2.7时,他们发现了一个错误,他们可以要求我们修复他们使用的分支上的错误。然后我们发布一个补丁版本,1.2.4A。补丁非常特别。我们通常为次要版本做不超过1-2个补丁。对于大多数版本,我们不打补
gitcherry-pick有有效的对立面吗?例如前段时间,由于业务流程尚未准备好,我不得不进行一些临时更改以禁用一组功能。现在该业务流程已准备就绪,我想简单地删除提交及其影响。虽然我当然可以只查看这些提交的差异并找出所有需要完成的事情,但了解是否可以在不重置和丢失之后的所有内容的情况下取消历史上的那些提交会很有趣他们。 最佳答案 gitrevert不是gitcherry-pick的反义词。gitrebase-i是。gitrevert添加一个新提交,删除一个或多个旧提交所做的更改。它不会删除原始提交。gitrebase-i将向您显示
gitcherry-pick有有效的对立面吗?例如前段时间,由于业务流程尚未准备好,我不得不进行一些临时更改以禁用一组功能。现在该业务流程已准备就绪,我想简单地删除提交及其影响。虽然我当然可以只查看这些提交的差异并找出所有需要完成的事情,但了解是否可以在不重置和丢失之后的所有内容的情况下取消历史上的那些提交会很有趣他们。 最佳答案 gitrevert不是gitcherry-pick的反义词。gitrebase-i是。gitrevert添加一个新提交,删除一个或多个旧提交所做的更改。它不会删除原始提交。gitrebase-i将向您显示
我想知道是否有一种方法可以在不checkout该分支的情况下将一个提交复制到另一个分支。例如,我有两个分支:master和parallel_version。我在parallel_version分支上,我在这些分支的文件中发现了一个常见的错误。我已修复并promise。假设我使用的是git-svn,如何将此提交复制到另一个分支?通常我会这样做:$gitcheckoutmaster$gitcherry-pickparallel_version$gitcheckoutparallel_version有更好的方法吗? 最佳答案 那是不可能的
我想知道是否有一种方法可以在不checkout该分支的情况下将一个提交复制到另一个分支。例如,我有两个分支:master和parallel_version。我在parallel_version分支上,我在这些分支的文件中发现了一个常见的错误。我已修复并promise。假设我使用的是git-svn,如何将此提交复制到另一个分支?通常我会这样做:$gitcheckoutmaster$gitcherry-pickparallel_version$gitcheckoutparallel_version有更好的方法吗? 最佳答案 那是不可能的
我在分支X上工作。我做出了promise并push了它。然后我想cherry-pick它来分支Y。但是由于存在一些未merge的文件,我收到以下消息:error:'cherry-pick'isnotpossiblebecauseyouhaveunmergedfiles.hint:Fixthemupintheworktree,hint:andthenuse'gitadd/rm'ashint:appropriatetomarkresolutionandmakeacommit,hint:oruse'gitcommit-a'.fatal:cherry-pickfailed现在,我只想删除我的分