[英]git: push a single commit
假设我做了几次提交,并希望挑选我推送到远程存储库的那些。 我该怎么做(在 ascii 中:C1->C2->C3->C4,我想推送 C2 和 C4)。 使用 rebase、reset、push 和 reset 重新排序是否有效? (C1->C2->C3->C4 => C2->C4->C1->C3 => 重置 C4 => 推 => 重置 C3)。 有更好的方法吗?
您可能正在寻找:
git push origin $commit:$branch
信用: http : //blog.dennisrobinson.name/push-only-one-commit-with-git/
解释性说明:
git rebase -i
),以便它们按照您要推送的顺序排列。$commit
不必是 sha1。 例如,“HEAD~N”会在最后 N 次提交之前推送所有内容。$branch
(通常是“master”或“main”)是你推送到的分支——远程分支。 它不必与本地分支相同。 如果分支不远程存在,而您想创建它,则必须以refs/heads/
为前缀(以消除分支与标签的歧义):
git push origin $commit:refs/heads/$new_branch
专业提示: git-revise是一个类似但比git rebase更好的工具(特别是对于本地提交)。 出于我的目的,作为一个日常 git 用户,我认为如果你经常使用git revise -i
应该是必须的(这对于产生高质量的提交当然是非常必要的)。
如果您在私有分支上有提交,则可以从私有分支中挑选提交并将它们应用到官方分支。 此时,您现在可以将所有提交推送到官方分支(这是您之前精心挑选的子集)。
$ git push <remote name> <commit hash>:<remote branch name>
# Example:
$ git push origin 2dc2b7e393e6b712ef103eaac81050b9693395a4:master
IIRC,由于 git 考虑提交工作的方式,C4 固有地包含 C3,因此“推 C4 但不推 C3”的概念对 git 没有意义(同样 C2 相对于 C1)。 (请参阅上一个问题的答案。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.