有没有办法把我所有的本地提交都推到远程仓库 * 除了最近的一个 *?我想把最后一个保存在本地,以防万一我需要做一个修改。
dced5bon1#
尝试以下操作(假设您正在使用master分支并且您的远程名为origin):
master
origin
git push origin HEAD^:master
HEAD^指向当前分支中最后一个提交之前的提交(最后一个提交可以称为HEAD),因此该命令将该提交(以及所有先前提交)推送到远程origin/master分支。如果您感兴趣,您可以找到有关在this man page中指定修订的更多信息。
HEAD^
HEAD
origin/master
**Update:**我怀疑这是真的,但无论如何,如果你的最后一次提交是merge,你应该小心使用这个命令。在HEAD中,merge提交HEAD^指的是该提交的第一个父提交,HEAD^2-指的是它的第二个父提交,以此类推。
HEAD^2
rdlzhqv92#
一个更通用的方法是指定提交哈希值,该方法对push直到某个提交都有效。
push
git push <remote> <commit hash>:<branch>
例如,如果您有以下提交:第一次提交**222222333333444444555555666666〈--上次提交
222222
333333
444444
555555
666666
git push origin 555555:master
..会将除最后一次提交之外的所有提交推送到远程master分支,并且
git push origin 333333:myOtherBranch
..会将333333以下的提交推送到远程分支myOtherBranch
myOtherBranch
wqsoz72f3#
另一种可能性是
git reset --soft HEAD^
取消提交最近的提交并将更改移至暂存。然后您可以
git push
并且只推送剩余的提交,这样你就可以在推送之前看到什么将被推送(通过git log)。
git log
3条答案
按热度按时间dced5bon1#
尝试以下操作(假设您正在使用
master
分支并且您的远程名为origin
):HEAD^
指向当前分支中最后一个提交之前的提交(最后一个提交可以称为HEAD
),因此该命令将该提交(以及所有先前提交)推送到远程origin/master
分支。如果您感兴趣,您可以找到有关在this man page中指定修订的更多信息。
**Update:**我怀疑这是真的,但无论如何,如果你的最后一次提交是merge,你应该小心使用这个命令。在
HEAD
中,merge提交HEAD^
指的是该提交的第一个父提交,HEAD^2
-指的是它的第二个父提交,以此类推。rdlzhqv92#
一个更通用的方法是指定提交哈希值,该方法对
push
直到某个提交都有效。例如,如果您有以下提交:
第一次提交**
222222
333333
444444
555555
666666
〈--上次提交..会将除最后一次提交之外的所有提交推送到远程
master
分支,并且..会将
333333
以下的提交推送到远程分支myOtherBranch
wqsoz72f3#
另一种可能性是
取消提交最近的提交并将更改移至暂存。然后您可以
并且只推送剩余的提交,这样你就可以在推送之前看到什么将被推送(通过
git log
)。