有没有办法将我的所有本地提交推送到远程存储库,除了最新的?我想在本地保留最后一个,以防万一我需要修改。
答案 0 :(得分:78)
试试这个(假设你正在使用master
分支而你的远程调用origin
):
git push origin HEAD^:master
HEAD^
指向当前分支中最后一个提交之前的提交(最后一次提交可以称为HEAD
),因此该命令将此提交(包含所有先前的提交)推送到远程{{ 1}}分支。
如果您感兴趣,可以在this man page中找到有关指定修订的更多信息。
更新:我怀疑是这种情况,但无论如何,如果您的上次提交是合并,则应该小心该命令。使用origin/master
HEAD
中的合并提交是指该提交的第一个父级HEAD^
- 指向其第二个父级,等等。
答案 1 :(得分:8)
另一种可能性是
git reset --soft HEAD^
取消提交您最近的提交并将更改移至暂存状态。那你可以
git push
它只会推送剩余的提交。通过这种方式,您可以在推送之前看到将推送的内容(通过git log
)。
答案 2 :(得分:5)
对push
达到某个提交的更通用的方法是指定提交哈希。
git push <remote> <commit hash>:<branch>
例如,如果您有这些提交:
111111
222222
333333
444444
555555
666666
git push origin 555555:master
..将除了您最后一次提交之外的所有提交推送到您的远程master
分支和
git push origin 333333:myOtherBranch
..将提交到333333
的提交到您的远程分支myOtherBranch