git push:推送除最后一个提交之外的所有提交

ndasle7k  于 2022-11-20  发布在  Git
关注(0)|答案(3)|浏览(207)

有没有办法把我所有的本地提交都推到远程仓库 * 除了最近的一个 *?我想把最后一个保存在本地,以防万一我需要做一个修改。

dced5bon

dced5bon1#

尝试以下操作(假设您正在使用master分支并且您的远程名为origin):

git push origin HEAD^:master

HEAD^指向当前分支中最后一个提交之前的提交(最后一个提交可以称为HEAD),因此该命令将该提交(以及所有先前提交)推送到远程origin/master分支。
如果您感兴趣,您可以找到有关在this man page中指定修订的更多信息。

**Update:**我怀疑这是真的,但无论如何,如果你的最后一次提交是merge,你应该小心使用这个命令。在HEAD中,merge提交HEAD^指的是该提交的第一个父提交,HEAD^2-指的是它的第二个父提交,以此类推。

rdlzhqv9

rdlzhqv92#

一个更通用的方法是指定提交哈希值,该方法对push直到某个提交都有效。

git push <remote> <commit hash>:<branch>

例如,如果您有以下提交:
第一次提交**
222222
333333
444444
555555
666666〈--上次提交

git push origin 555555:master

..会将除最后一次提交之外的所有提交推送到远程master分支,并且

git push origin 333333:myOtherBranch

..会将333333以下的提交推送到远程分支myOtherBranch

wqsoz72f

wqsoz72f3#

另一种可能性是

git reset --soft HEAD^

取消提交最近的提交并将更改移至暂存。然后您可以

git push

并且只推送剩余的提交,这样你就可以在推送之前看到什么将被推送(通过git log)。

相关问题