2016-06-30 7 views
0

gitの動作を理解しようとしています。なぜgit pullはローカルの変更をマージできないのですか?

私はgit pullを実行すると私は警告

error: Your local changes to the following files would be overwritten 
by merge: 
     foo/bar 
Please, commit your changes or stash them before you can merge. Aborting 

しかし、私git stash savegit stash pull、およびgit stash popが、変更は問題なく適用されているかを取得します。

Auto-merging foo/bar 
... 

なぜgit pullは同じことをしないのですか?

+1

'git pull' =' git fetch' + 'git merge' ...マージするので、エラーメッセージです。 –

+0

あなたがスマッシュな 'git pull'をstash/pull/popしたいのであれば、[git-smart](https://github.com/geelen/git-smart)と' git smart-プルコマンド。 – meagar

+0

git stash save/popのワークフローはコミットされていないコードで動作します。 gitはコミットされていないコードを使って何をしたいのかをどのように知っていますか?私はむしろあなたがほしいと言ってほしいのではなく、それを吹き飛ばしたり、マージしたり、それを自動的に離れさせたりするのではなく、あなたに促したいと思います。アップストリームの変更(プルの目的...)を使用してあなたのものをマージしようとする前に、コミットされていないコードを手動で処理する必要があります – g19fanatic

答えて

2

一般的に、マージが自動的に実行できる保証はありません。手動による解決が必要な競合が残る可能性があります。この場合、作業中のローカル変更を忘れて、マージを元に戻して元の場所に戻したければ、ユーザーにとっては非常に不満です。コミットまたは最初に隠れている場合は、マージを中止/元に戻すことができます。コミットしてもコミットが残っていて、隠れポップが競合なしに自動マージされなかった場合、隠しは除去された。

関連する問題