首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有以前提交的情况下将特定的提交推送到远程?

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

Stack Overflow用户
提问于 2016-01-18 15:18:48
回答 2查看 14.3K关注 0票数 11

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

代码语言:javascript
复制
git commit -m "message 1"
git commit -m "message 2"
git commit -m "message 3"

现在我用下面的SHA提交了三次

代码语言:javascript
复制
commit-1 SHA1
commit-2 SHA2
commit-3 SHA3

但我只想使用git推送在远程存储库中推送commit-2

如果我运行git push,那么它将推送所有提交。

我还尝试了以下命令:

代码语言:javascript
复制
git push SHA2

但这也推动了所有的提交。

如何在远程仓库中推送这个唯一的commit-2

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-18 15:30:41

您需要首先提交您的分支,以便使commit2成为origin/yourBranch之后的第一个提交。

代码语言:javascript
复制
 x--x--C1--C2--C3 (B)
    |
  (origin/B)

git rebase -i C1~

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

然后,您可以推送该提交。

参见"git - pushing specific commit":

代码语言:javascript
复制
git push <remotename> <commit SHA>:<remotebranchname>
# Example
git push origin 712acff81033eddc90bb2b45e1e4cd031fefc50f:master

它确实会将所有提交推送到您选择的提交。

但由于您的提交是第一个提交,所以它只推送该提交。

我不建议挑剔,因为它改变了推送的提交的SHA1 :当您最终推送您的完整分支时,您将以重复提交而告终。

票数 9
EN

Stack Overflow用户

发布于 2016-01-18 16:19:50

您也可以使用cherry-pick来执行此操作,但是包含未推送提交的本地分支将从您的远程分支转移。

该怎么做呢?

代码语言:javascript
复制
# cd into your project folder

# create new branch based on the origin branch (latest code in remote)
git checkout -b <new branch> origin/master

# "grab" the commit you wish to use
git cherry-pick <SHA-1>

# now your branch contains the desired commit.
# push it back to your remote.

############################################################################
### Note: you might not be able to push if you try to push it back to    ### 
###       master. To fix it you might need to rename the original master ###
###       and your then rename the new barch to master                   ###
############################################################################
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34849144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档