我正在一个项目中工作,因为我做了一个改变,我提交它。然后,在提交3或4个更改后,我将其全部推送。
我想做的是推送我在本地修改的其中一个。我能这样做吗?怎么样?
由于
答案 0 :(得分:7)
尝试在当地的“工作”部门工作。这有一个优点,例如你可以切换到一个不同的分支,如果你被调用工作说,一个错误。
当你准备推送时:git checkout master,git pull,git merge work,git push,将是你的正常流程。
但是,您可以从工作分支到主服务器进行提交,这样只会推送那些提交。
git checkout master
git cherry-pick <id of commit you want>
git push
你现在可能会这样做。
git checkout -b work
git log (and look for the IDs of the commits you want)
git checkout master
git reset --hard HEAD~3 (remove last 3 commits from master)
git cherry-pick <ID of commit you want>
git push
答案 1 :(得分:3)
我不太确定你想做什么。如果您有4个未提交的提交,并且您只想推送其中的第一个提交,则可以将其ref传递给git push
。如果您想推送,比如说,第三个提交,但不是第一个或第二个提交,那么您将遇到问题。你真的不能这样做。 (好吧,你可能可以,但那时它将与树的其余部分断开连接)。
如果您只想在推送之前将四个提交折叠为单个提交,则可能需要在单独的分支中工作并使用squash合并。在本地存储库中存在提交之前,您无法将提交推送到远程存储库。作为推送的一部分,你无法综合提交(据我所知)。