【问题标题】:Can I amend a commit to the master branch from a new local branch?我可以从新的本地分支修改对主分支的提交吗?
【发布时间】:2016-03-16 10:10:17
【问题描述】:

我最近将一个文件提交到我工作存储库的主分支。

然后我创建了一个新的本地分支来处理其他事情,但意识到我在原始提交中遗漏了一些东西。我在新分支中进行了更改。 git commit --amend 会起作用,还是我需要重新提交?我是否正确假设 git commit --amend 只是从我的新本地分支中的新文件修改 git 上的文件

【问题讨论】:

  • 仅供参考, git commit --amend 将创建一个新的提交...尽管基于您的旧提交。 :-)

标签: git github version-control git-amend


【解决方案1】:

分支是这里的“问题”

修改仍在提交 - 它仍然发生在同一个分支上,所以:

  • 提交到 master
  • 将分支切换到“新本地分支”
  • 在那里进行更改

意味着如果你执行 git commit,它会在“新本地分支”上添加一个新节点,甚至不会触及主节点。

选项 1:git commit --amend 在 master 分支上

$ git checkout master
// apply changes here
$ git commit --amend

这会创建新的提交替换 master 分支的当前提示(很可能是您之前在那里所做的提交,除非您或其他人已经在那里工作过,之前的提交已被推送等)。

选项 2:在 master 分支上 git commit

$ git checkout master
// apply changes here
$ git commit -m "New commit, new commit message"

不太优雅。但如果你推?很有吸引力。

选项 3:“新本地分支”上的 git commit 和樱桃采摘和壁球

// changes applied on local branch creating commit with SOME_SHA
$ git checkout master
$ git cherry-pick "new local branch name here"

这将应用由“新本地分支”尖端的提交引入的更改。如果分支差异太大,您可能会发生冲突。

$ git rebase -i

在这里,您需要将提交压缩为一个。仅当您没有推动更改时才这样做!

如果你问我的话,这有点过头了。 :-)

“哦不!我推了!”选项

选项 2,或...git revert SHA-of-original-commit,然后进行所有更改并提交。

我只会在原始提交中的某些内容实际上是坏/有害的情况下使用它。

【讨论】:

    猜你喜欢
    • 2015-07-24
    • 2020-09-07
    • 2022-01-06
    • 2021-07-31
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 2020-12-13
    • 2014-11-13
    相关资源
    最近更新 更多