gpt4 book ai didi

git - 你如何只推送一些本地 git 提交?

转载 作者:IT王子 更新时间:2023-10-29 01:19:26 25 4
gpt4 key购买 nike

假设我有 5 个本地提交。我只想将其中的 2 个推送到集中式存储库(使用 SVN 样式的工作流)。我该怎么做呢?

这没有用:

git checkout HEAD~3  #set head to three commits ago
git push #attempt push from that head

这最终会推送所有 5 个本地提交。

我想我可以执行 git reset 来实际撤消我的提交,然后是 git stash,然后是 git push——但我已经编写了提交消息并组织了文件,我不想重做它们。

我的感觉是传递给 push 或 reset 的一些标志会起作用。

如果有帮助,这是我的 git 配置

[ramanujan:~/myrepo/.git]$cat config 
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = ssh://server/git/myrepo.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master

最佳答案

假设您的提交在 master 分支上,并且您想将它们推送到远程 master 分支:

$ git push origin master~3:master

如果您使用的是 git-svn:

$ git svn dcommit master~3

对于 git-svn,您也可以使用 HEAD~3,因为它需要提交。在直接 git 的情况下,您需要使用分支名称,因为 HEAD 在 refspec 中未正确评估。

您还可以采取更长的方法:

$ git checkout -b tocommit HEAD~3
$ git push origin tocommit:master

如果您养成了这种工作流程的习惯,您应该考虑在一个单独的分支中完成您的工作。然后你可以这样做:

$ git checkout master
$ git merge working~3
$ git push origin master:master

请注意,“origin master:master”部分对于您的设置可能是可选的。

关于git - 你如何只推送一些本地 git 提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/604399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com