熟悉 Git 的 V2EXers,表现的机会来了呀!

2015-04-05 12:48:39 +08:00
 bl2fu
我add了一个文件file1,然后commit,又rm这个文件file1。
接下来我对文件file2做了一些别的操作,又commit一次。
那么此时我push到远程仓库时,会执行两个commit。问题来了,由于file1的远程push失败,阻塞了整个push,可以看出其实file的commit是多余的(添加又删除),但是我想保留对file2的更改到服务器,该怎么做?
4365 次点击
所在节点    git
13 条回复
kchum
2015-04-05 12:54:32 +08:00
可以 Stage 的先 Stage,然后 Reset 到前2个版本,再把 Stage 的应用,Commit and Push 即可
FrankFang128
2015-04-05 12:57:57 +08:00
即使是多余的你也应该提交啊
zhchbin
2015-04-05 12:58:15 +08:00
“由于file1的远程push失败,阻塞了整个push”

是什么错误呢?
goophy
2015-04-05 13:05:34 +08:00
jokester
2015-04-05 13:14:25 +08:00
fetch
在remote branch的新位置開本地branch
cherry-pick 改file2的commit
push
結束
otakustay
2015-04-05 13:44:28 +08:00
不是把2个commit给squash成一个就行了吗
moult
2015-04-05 13:49:58 +08:00
本地将两个提交合并掉。。
lilydjwg
2015-04-05 14:17:21 +08:00
git rebase -i
bl2fu
2015-04-05 14:52:01 +08:00
@FrankFang128 嗯,确实!
bl2fu
2015-04-05 14:53:24 +08:00
@zhchbin github文件大小限制!
msg7086
2015-04-05 16:26:53 +08:00
@bl2fu git仓库里保存的是git的提交历史而非git里的文件。
因此要修正这个错误,需要改变历史才行。
一种是像#6说的那样直接把两个commit合并,这样add和rm就互相抵消了。
另一种是像#5说的那样,直接把第一个commit略过,这样就是没有add只有rm了。
两种做法都可以,看你熟悉那个了。
wwqgtxx
2015-04-05 16:32:06 +08:00
kchum
2015-04-07 16:15:42 +08:00
刚刚想起发现 1# 写错单词了, Stage -> Stash。
不过看样子楼主应该已经解决了,楼下给了那么多方案。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/181682

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX