首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在同一个分支上移动提交历史记录中的提交的最简单方法

在同一个分支上移动提交历史记录中的提交的最简单方法
EN

Stack Overflow用户
提问于 2014-04-23 15:51:23
回答 2查看 652关注 0票数 2

我希望能够轻松地从我的提交历史中的任何地方获取提交,并使它们成为同一分支上的最新提交。为此,我更愿意使用git命令行工具,但我也对GUI工具开放。

我研究了git-cherry-pick,但是根据我对文档的理解和我自己的测试,选择一个现有的提交会使选中的(最近的)提交成为空的,因为它已经存在于历史中。

您可以假设不会发生冲突,因为我对此的需求来自于遵循这些 文章中概述的开发策略。即使有,我也可以根据需要加以纠正。

编辑:我找到了一个使用交互式重基的解决方案。我把它作为这个问题的答案,但我很好奇还有什么其他的解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-23 20:36:07

我发现一个相当简单的解决方案是使用git-重基的交互式重基模式重新排序提交。在调用git rebase -i HEAD~3以重新定位HEAD之前的最近三次提交时,会出现(我自己的注释用#注释):

代码语言:javascript
复制
pick 57c3e7e [bug 972919] Removed outdated information from the readme
pick 9390105 [bug 972919] Cleaned up app.js
pick 626e865 [bug 972919] Removed CORS logic

# Git provides standard instructions for the use of this mode in comments
# below the commits you've selected

通过将我想要的提交行移到列表的末尾,它将其重新排序为在完成重基时历史上最近的一次:

代码语言:javascript
复制
pick 9390105 [bug 972919] Cleaned up app.js
pick 626e865 [bug 972919] Removed CORS logic
pick 57c3e7e [bug 972919] Removed outdated information from the readme # <-- this one will be most recent
票数 0
EN

Stack Overflow用户

发布于 2014-04-23 16:08:18

git rebase -i HEAD~NumberOfCommits,其中NumberOfCommits是要检查的提交量。

Git将使用提交列表打开编辑器,您可以在其中选择编辑、压缩或跳过任何提交。如果要删除提交,则删除行:

代码语言:javascript
复制
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell
#
#
# These lines can be re-ordered; they are executed from top to bottom.
#    
# If you remove a line here THAT COMMIT WILL BE LOST.

请注意,当您这样做时,您的分支将与远程不同,因此您将不得不强行推送,如果其他人有旧历史的副本,则需要对新历史进行硬重置。

请阅读重设基地的危险分章。它得到了一个比我能提供的更好的解释。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23249430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档