如何在没有先前的提交的情况下将特定提交推送到远程?

Und*_*our 8 git

我使用代码在本地存储库中提交了2次或更多次

git commit -m "message 1"
git commit -m "message 2"
git commit -m "message 3"
Run Code Online (Sandbox Code Playgroud)

现在我有三个提交跟随SHA

commit-1 SHA1
commit-2 SHA2
commit-3 SHA3
Run Code Online (Sandbox Code Playgroud)

但我想只commit-2使用git push在远程存储库中推送.
如果我运行git push,那么它将推送所有提交.
我也尝试了以下命令:

git push SHA2
Run Code Online (Sandbox Code Playgroud)

但这也推动了所有提交.

如何仅commit-2在远程存储库中推送它?

Von*_*onC 8

git rebase -i首先需要你的分支,以便在commit2之后进行第一次提交origin/yourBranch.

 x--x--C1--C2--C3 (B)
    |
  (origin/B)

git rebase -i C1~

 x--x--C2'--C1'--C3' (B)
    |
  (origin/B)
Run Code Online (Sandbox Code Playgroud)

然后你可以推送该提交.

请参阅" git - 推送特定提交 ":

git push <remotename> <commit SHA>:<remotebranchname>
# Example
git push origin 712acff81033eddc90bb2b45e1e4cd031fefc50f:master
Run Code Online (Sandbox Code Playgroud)

它确实推送所有提交,包括您选择的提交.
但由于您的提交是第一个,它只会推送该提交.


我不建议采摘樱桃,因为它更改了提交的提交的SHA1:当你最终推送完整的分支时,你最终会重复提交.