SourceTree 重置当前分支到此次提交 强行合并 - 丢弃所有修改过的工作副本

2015-05-18 04:03:40 +08:00
 CNCCTV
昨天在使用SourceTree时, 刚想点推送,突然给我显示有几十个文件要拉取。。。
心想先拉取下来看看吧,但是修改的文件已提交,拉取报错了,想丢弃已提交的文件也不行(不知道那里出问题了)。。。
最后只能使用 “重置当前分支到此次提交 强行合并 - 丢弃所有修改过的工作副本” 回到修改之前的分支。

想问一下你对这个“重置当前分支到此次提交 强行合并 - 丢弃所有修改过的工作副本”功能怎么看?
使用这个功能之后,真的是丢弃所有修改过的工作副本了吗?怎么文件夹没变小啊?
如果经常使用这个功能,会不会形成依赖啊。。。
28177 次点击
所在节点    git
8 条回复
FrankFang128
2015-05-18 06:38:29 +08:00
不知道,只会用命令行。。。
networm
2015-05-18 07:59:43 +08:00
用完这个功能后本地的提交与修改都没了,不过提交可以找回,通过 git reflog。
建议阅读 Pro Git 第二版,了解 Git 的原理与使用方法。

针对你遇到的问题,正确的做法是:
git add .
git stash
git pull
解决出现的冲突
git push
git stash pop

无法拉取可能是本地修改了一个远程提交也修改的文件,拉取时直接报错,禁止拉取了。对应的解决方案就是先 git stash 存起来,过会儿在 git pull 后 git stash pop 让 git 自动合并,最后可能有冲突,自行解决。
也有可能是拉取后产生冲突了,直接解决冲突即可。
holulu
2015-05-18 08:04:00 +08:00
有提交的话,一般都不会丢吧。而且最好是一个人用一个分支来工作,之后合到主分支上,这样可以避免混乱,又可以保住自己的工作成果
blank4me
2015-05-18 08:50:03 +08:00
你可以把当前有问题、无法拉取的版本开个新分支存放
```
git checkout -b my_work
```
然后回到master,并重置到没问题的commit
```
git checkout master
git reset --hard 没问题的commit
```
这样你的当前工作在my_work分支上,不会丢失,然后你也可以在master上pull远程改动,本地看看到底哪些文件冲突了
blank4me
2015-05-18 09:00:46 +08:00
不过要是你不是想问这个就无视吧... 才知道v2ex不能删除..
qinkun1234
2015-05-18 09:09:29 +08:00
换一个角度理解你的问题

http://jnuc093.github.io/gitflow/
crystaldust
2015-05-18 09:49:24 +08:00
最好到命令行用git的命令看一下。SourceTree这类工具软件有些设计不太符合git的规范,另外也封装了一些功能,一上来就用工具可能会导致对git理解不透彻。(我们一个新同事用了3个月的SourceTree,前几天才知道git在本地有3层local,stage,repository,因为他用SourceTree每次都是直接commit,根本没有add这个步骤)
zhouzm
2015-05-18 11:16:35 +08:00
用工作流啊,每次你自己的开发开启一个工作流分支,这样别人 push 的代码就不会和你的提交直接冲突。
等你的功能开发(并提交)完毕后,将你的工作流分支合并到公共分支上,这时候可以定定心心的处理冲突,冲突解决完后再提交并推送。

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

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

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

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

© 2021 V2EX