V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
CNCCTV
V2EX  ›  git

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

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

    想问一下你对这个“重置当前分支到此次提交 强行合并 - 丢弃所有修改过的工作副本”功能怎么看?
    使用这个功能之后,真的是丢弃所有修改过的工作副本了吗?怎么文件夹没变小啊?
    如果经常使用这个功能,会不会形成依赖啊。。。
    8 条回复    2015-05-18 11:16:35 +08:00
    FrankFang128
        1
    FrankFang128  
       2015-05-18 06:38:29 +08:00 via Android
    不知道,只会用命令行。。。
    networm
        2
    networm  
       2015-05-18 07:59:43 +08:00 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 自动合并,最后可能有冲突,自行解决。
    也有可能是拉取后产生冲突了,直接解决冲突即可。
    holulu
        3
    holulu  
       2015-05-18 08:04:00 +08:00
    有提交的话,一般都不会丢吧。而且最好是一个人用一个分支来工作,之后合到主分支上,这样可以避免混乱,又可以保住自己的工作成果
    blank4me
        4
    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
        5
    blank4me  
       2015-05-18 09:00:46 +08:00
    不过要是你不是想问这个就无视吧... 才知道v2ex不能删除..
    qinkun1234
        6
    qinkun1234  
       2015-05-18 09:09:29 +08:00
    换一个角度理解你的问题

    http://jnuc093.github.io/gitflow/
    crystaldust
        7
    crystaldust  
       2015-05-18 09:49:24 +08:00
    最好到命令行用git的命令看一下。SourceTree这类工具软件有些设计不太符合git的规范,另外也封装了一些功能,一上来就用工具可能会导致对git理解不透彻。(我们一个新同事用了3个月的SourceTree,前几天才知道git在本地有3层local,stage,repository,因为他用SourceTree每次都是直接commit,根本没有add这个步骤)
    zhouzm
        8
    zhouzm  
       2015-05-18 11:16:35 +08:00
    用工作流啊,每次你自己的开发开启一个工作流分支,这样别人 push 的代码就不会和你的提交直接冲突。
    等你的功能开发(并提交)完毕后,将你的工作流分支合并到公共分支上,这时候可以定定心心的处理冲突,冲突解决完后再提交并推送。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5507 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:44 · PVG 14:44 · LAX 22:44 · JFK 01:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.