如何在Git中将上次提交复制为新提交?
我想复制我的上一次提交,我想从复制的提交(上一次提交)中进行新的提交,以推送到远程分支 我尝试了以下代码:如何在Git中将上次提交复制为新提交?,git,Git,我想复制我的上一次提交,我想从复制的提交(上一次提交)中进行新的提交,以推送到远程分支 我尝试了以下代码: git rm -r . git checkout HEAD~0 . git commit -m "My new Commit" 但它没有起作用。有什么建议吗?如果您的历史记录是C-B-A(其中A是最新的),您必须更改某些内容才能在A之上进行新的提交。您可以使用--allow empty标志绕过此操作,只需执行git commit--allow empty,您将在A上获得一个空提交,但提交
git rm -r .
git checkout HEAD~0 .
git commit -m "My new Commit"
但它没有起作用。有什么建议吗?如果您的历史记录是
C-B-A
(其中A
是最新的),您必须更改某些内容才能在A
之上进行新的提交。您可以使用--allow empty
标志绕过此操作,只需执行git commit--allow empty
,您将在A
上获得一个空提交,但提交将不同(因为父级、时间等不同)
你为什么要这样做?如果我错了,请纠正我,但我听起来好像你在试图修改你的上一次承诺?e、 对上一次提交进行一些纠正性更改,并重新推出 您可以使用
--amend
标志执行此操作,这将更新当前分支上的最新提交。然后,您可以通过执行git push--force
或git push--force with lease
(在git 1.8.5中引入)来推送修改后的提交,以确保在修改提交时不会覆盖推送的任何更改
强制推送是必要的,因为通过修改最新的提交,您实际上是在一起替换它,因此您需要强制推送来明确声明您想要删除以前的提交
例如:
git commit --amend -a
git push --force-with-lease
如果您的目的是在推送之前对现有提交进行更改
$ git log --pretty=oneline
a931ac7c808e2471b22b5bd20f0cad046b1c5d0d c
b76d157d507e819d7511132bdb5a80dd421d854f b
df239176e1a2ffac927d8b496ea00d5488481db5 a
也就是说,a是第一个提交,然后是b,最后是c
运行git-rebase--interactive HEAD~2
可以为编辑器提供
pick b76d157 b
pick a931ac7 c
# Rebase df23917..a931ac7 onto df23917
#
# 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
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
将b的“拾取”更改为“挤压”将导致出现您看到的错误,但如果改为通过将文本更改为“挤压”,将c挤压为b
pick b76d157 b
s a931ac7 c
and save-quitting your editor, you'll get another editor whose contents are
# This is a combination of 2 commits.
# The first commit's message is:
b
# This is the 2nd commit message:
c
When you save and quit, the contents of the edited file become commit message of the new combined commit:
$ git log --pretty=oneline
18fd73d3ce748f2a58d1b566c03dd9dafe0b6b4f b and c
df239176e1a2ffac927d8b496ea00d5488481db5 a
您可以使用
git log
复制上次提交
git log --oneline -n 1
您通常运行git push origin将本地更改推送到远程存储库。如果您只想复制上一次提交并在其他分支中作为新提交播放,尝试git cherry pick什么是
--允许空的
选项?可能的重复您想复制上一次提交并对其进行更改以创建新的提交,还是想在不做任何更改的情况下精确复制上一次提交?您的用例是什么?你想有不同的评论吗?那不会复制任何东西。它只是向你展示了你最后的承诺。