Chi*_*tel 197 git git-stash git-checkout
我做了一个git stash pop并最终导致了合并冲突.我从文件系统中删除了文件并执行了git checkout如下所示的操作,但它认为文件仍然未合并.然后我尝试更换文件并git checkout再次执行相同的结果.我的事件尝试用-f旗帜强迫它.任何帮助,将不胜感激!
chirag-patels-macbook-pro:haloror patelc75$ git status
app/views/layouts/_choose_patient.html.erb: needs merge
app/views/layouts/_links.html.erb: needs merge
# On branch prod-temp
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: db/schema.rb
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# unmerged: app/views/layouts/_choose_patient.html.erb
# unmerged: app/views/layouts/_links.html.erb
chirag-patels-macbook-pro:haloror patelc75$ git checkout app/views/layouts/_choose_patient.html.erb
error: path 'app/views/layouts/_choose_patient.html.erb' is unmerged
chirag-patels-macbook-pro:haloror patelc75$ git checkout -f app/views/layouts/_choose_patient.html.erb
warning: path 'app/views/layouts/_choose_patient.html.erb' is unmerged
Run Code Online (Sandbox Code Playgroud)
tan*_*ius 219
参见man git merge(如何解决冲突):
看到冲突后,你可以做两件事:
决定不合并.您需要的唯一清理是将索引文件重置为HEAD提交以反转2.并清除由2.和3进行的工作树更改.git-reset --hard可用于此目的.
解决冲突.Git将标记工作树中的冲突.将文件编辑为形状,然后将它们添加到索引中.使用git commit来达成交易.
在TRUE MERGE下(看看2.和3.指的是什么):
如果不明显如何协调更改,则会发生以下情况:
HEAD指针保持不变.
MERGE_HEAD ref设置为指向另一个分支头.
干净地合并的路径在索引文件和工作树中都会更新.
...
因此:git reset --hard如果要从工作树中删除存储更改,或者git reset如果只想清理索引并将工作树中的冲突留在手工合并中,请使用.
在man git stash(OPTIONS,pop)下你还可以阅读:
应用国家可能会因冲突而失败; 在这种情况下,它不会从隐藏列表中删除.您需要手动解决冲突并随后手动调用git stash drop.
Aar*_*ron 41
我有类似的事发生在我身上.我还不想暂存这些文件,所以我添加了它们,git add然后就这样做了git reset.这基本上只是添加然后取消了我的更改,但清除了未合并的路径.
Ped*_*eno 13
如果像我一样,你通常想要的是用stashed文件的内容覆盖工作目录的内容,并且你仍然会遇到冲突,那么你想要的是git checkout --theirs -- .从root用户解决冲突.
之后,您可以git reset将索引中的所有更改带到工作目录,因为在发生冲突时,对非冲突文件的更改将保留在索引中.
您可能还希望git stash drop [<stash name>]之后运行,以摆脱存储,因为git stash pop在发生冲突时不会删除它.