This topic created in 4062 days ago, the information mentioned may be changed or developed.
昨天在使用SourceTree时, 刚想点推送,突然给我显示有几十个文件要拉取。。。
心想先拉取下来看看吧,但是修改的文件已提交,拉取报错了,想丢弃已提交的文件也不行(不知道那里出问题了)。。。
最后只能使用 “重置当前分支到此次提交 强行合并 - 丢弃所有修改过的工作副本” 回到修改之前的分支。
想问一下你对这个“重置当前分支到此次提交 强行合并 - 丢弃所有修改过的工作副本”功能怎么看?
使用这个功能之后,真的是丢弃所有修改过的工作副本了吗?怎么文件夹没变小啊?
如果经常使用这个功能,会不会形成依赖啊。。。
8 replies • 2015-05-18 11:16:35 +08:00
 |
|
2
networm May 18, 2015 via iPad
用完这个功能后本地的提交与修改都没了,不过提交可以找回,通过 git reflog。 建议阅读 Pro Git 第二版,了解 Git 的原理与使用方法。
针对你遇到的问题,正确的做法是: git add . git stash git pull 解决出现的冲突 git push git stash pop
无法拉取可能是本地修改了一个远程提交也修改的文件,拉取时直接报错,禁止拉取了。对应的解决方案就是先 git stash 存起来,过会儿在 git pull 后 git stash pop 让 git 自动合并,最后可能有冲突,自行解决。 也有可能是拉取后产生冲突了,直接解决冲突即可。
|
 |
|
3
holulu May 18, 2015
有提交的话,一般都不会丢吧。而且最好是一个人用一个分支来工作,之后合到主分支上,这样可以避免混乱,又可以保住自己的工作成果
|
 |
|
4
blank4me May 18, 2015
你可以把当前有问题、无法拉取的版本开个新分支存放 ``` git checkout -b my_work ``` 然后回到master,并重置到没问题的commit ``` git checkout master git reset --hard 没问题的commit ``` 这样你的当前工作在my_work分支上,不会丢失,然后你也可以在master上pull远程改动,本地看看到底哪些文件冲突了
|
 |
|
5
blank4me May 18, 2015
不过要是你不是想问这个就无视吧... 才知道v2ex不能删除..
|
 |
|
7
crystaldust May 18, 2015
最好到命令行用git的命令看一下。SourceTree这类工具软件有些设计不太符合git的规范,另外也封装了一些功能,一上来就用工具可能会导致对git理解不透彻。(我们一个新同事用了3个月的SourceTree,前几天才知道git在本地有3层local,stage,repository,因为他用SourceTree每次都是直接commit,根本没有add这个步骤)
|
 |
|
8
zhouzm May 18, 2015
用工作流啊,每次你自己的开发开启一个工作流分支,这样别人 push 的代码就不会和你的提交直接冲突。 等你的功能开发(并提交)完毕后,将你的工作流分支合并到公共分支上,这时候可以定定心心的处理冲突,冲突解决完后再提交并推送。
|