假设我做了几个提交,并希望挑选出哪些提交推送到远程仓库。C1-〉C2-〉C3-〉C4,我想推C2和C4)。重新排序,重置,推,然后重置工作吗?(C1-〉C2-〉C3-〉C4 =〉C2-〉C4-〉C1-〉C3 =〉重置C4 =〉推=〉重置C3)。有更好的方法吗?
31moq8wy1#
您可能正在寻找:
git push origin $commit:$branch
贷方:http://blog.dennisrobinson.name/push-only-one-commit-with-git/解释性说明:
git rebase -i
$commit
$branch
如果远程分支还不存在,而您想创建它,则必须使用refs/heads/作为前缀(以消除标记的分支歧义):
refs/heads/
git push origin $commit:refs/heads/$branch
作为这个主题的一个变体,删除一个远程分支可以被认为是向它推送no commit:
git push origin :$branch
专业提示:git-revise是一个在推送前将你的提交栈处理成合适的形状的工具。它有一个类似于git rebase的接口。这个工具是不可替代的(如果我错了,请纠正我),用于足够困难的提交解缠工作,尽管它的接口急需更换。
git rebase
gpnt7bae2#
如果你的提交在私有分支上,你可以从私有分支上挑选提交,并将它们应用到官方分支上。此时你可以将所有提交推送到官方分支上(这是你之前挑选的子集)。
lnlaulya3#
$ git push <remote name> <commit hash>:<remote branch name> # Example: $ git push origin 2dc2b7e393e6b712ef103eaac81050b9693395a4:master
eeq64g8w4#
IIRC,由于git考虑提交工作的方式,C4固有地包含C3,所以“推送C4而不推送C3”的概念对git来说没有意义(同样,C2相对于C1也是如此)。(参见this previous question的答案)。
4条答案
按热度按时间31moq8wy1#
您可能正在寻找:
贷方:http://blog.dennisrobinson.name/push-only-one-commit-with-git/
解释性说明:
git rebase -i
),这样它们就按照你想要推送的顺序。$commit
不一定是sha1,例如,“HEAD~N”会在最后N次提交之前推送所有内容。$branch
(通常是“master”或“main”)是您推送 * 到 * 的分支-远程分支。它不必与本地分支相同。如果远程分支还不存在,而您想创建它,则必须使用
refs/heads/
作为前缀(以消除标记的分支歧义):作为这个主题的一个变体,删除一个远程分支可以被认为是向它推送no commit:
专业提示:git-revise是一个在推送前将你的提交栈处理成合适的形状的工具。它有一个类似于
git rebase
的接口。这个工具是不可替代的(如果我错了,请纠正我),用于足够困难的提交解缠工作,尽管它的接口急需更换。gpnt7bae2#
如果你的提交在私有分支上,你可以从私有分支上挑选提交,并将它们应用到官方分支上。此时你可以将所有提交推送到官方分支上(这是你之前挑选的子集)。
lnlaulya3#
eeq64g8w4#
IIRC,由于git考虑提交工作的方式,C4固有地包含C3,所以“推送C4而不推送C3”的概念对git来说没有意义(同样,C2相对于C1也是如此)。(参见this previous question的答案)。