如何在SourceTree和git bash中推送选定的Git提交?

3
假设我在git中已经提交了五个提交,按顺序为1->2->3->4->5。
我知道可以使用git bash来推送选择的提交,比如说提交1和2,在这里有解释 Push selective commits using git bash
但是,我想知道是否可以使用Atlassian SourceTree实现这一点?这将是一个非常方便的功能。
另一个问题:如何只使用git bash推送提交2和4,而不影响其他提交?我知道可以通过重新排序提交来完成此操作,但我想知道是否可以在不重新排序的情况下完成此操作。

截至2013年,git还没有这个功能。https://answers.atlassian.com/questions/217192/push-only-some-commits - jaredready
git 不会推送任意提交。您必须推送一个引用,即分支或标签,以确保整个图形直到该引用都存在并完全连接到远程。存储库不仅是随机提交的存储空间,这些提交与其他提交没有任何关联。 - twalberg
2个回答

1

首先,像ResidentBiscuit建议的那样,SourceTree不支持此功能,但已经为此创建了一个Jira工单。您可以跟踪this工单以确定何时将此功能添加到SourceTree中。

同时,在SourceTree中有一个很好的功能,可以与git bash一起解决此问题。首先,您需要重新排序提交。单击存储库 -> 交互式Rebase。它会给您一个提交列表,您可以重新排序提交,使2和4在1、3、5之前。然后,您可以在git bash中发出以下命令

$ git push origin master~3:master

这个命令将会把 head 回滚至三个 commit 之前,然后推送到远程主分支,这样只有第二个和第四个 commit 会被推送到远程主分支。

0

看起来 Source Tree 不支持此功能,可以查看这篇post了解更多。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接