gitstashとgitpull


92

私はGitを初めて使用し、EGiteclipseプラグインを使用してコミットしています。

いくつかのファイルを変更し、変更を隠してからgit pull、コマンドラインで実行して最新のコミットをすべてプルアップしました。それから私はApply stashed changesEGitからやりました。今、それは私の変更を適用し、隠されたファイルの最後のコミットからプルされた変更は消えました。マージの競合について尋ねられず、変更を上書きし、以前のコミットの変更を失った理由がわかりません。

それらの変更を取得する方法は?


それはもっともらしく聞こえません。stash applyは、競合しない変更をもたらすか、マージの競合を引き起こします。私はあなたが何かに言及するのを忘れたと思います。また、手順を繰り返すこともできます。おそらく、隠し場所がまだリストに残っているので、git stash listそれを表示するために使用します。
kan

回答:


215

作業コピーに変更がある場合は、コマンドラインから次の手順を実行します。

git stash 

これにより、変更が隠され、ステータスレポートがクリアされます

git pull

これにより、アップストリームブランチから変更がプルされます。レポートに早送りと表示されていることを確認してください。そうでない場合は、おそらく意図しないマージを行っています

git stash pop

これにより、隠された変更が作業コピーに適用され、競合がない限り、変更が隠されて削除されます。競合が発生した場合、それらは隠し場所にとどまるため、必要に応じて最初からやり直すことができます。

隠し場所に何があるかを確認する必要がある場合

git stash list

@ java_newbie、stashを使用してこれを実行し、noをプルする場合、方法はありません。ただし、リベースでも同じ結果を得ることができます。コマンド 'git rebase origin / <アップストリームブランチ名>'も同じことをするはずです。
yilmazhuseyin 2014

5
私はこれでうまくいくと思います:git stash && git pull && git stash pop
Fabrice Kabongo 2015

@yilmazhuseyin「同じ結果」とはどういう意味ですか?できれば逸話をあげられますか?git rebase origin/masterと同じ結果になるということgit stash; git pull; git stash popですか?
nehem 2016

9
Git v2.9.0以降のバージョンを使用している場合は、を試してくださいgit pull --rebase --autostashFYI
momocow

1
--autostash常に動作しますか?たとえば、すでに部分的にGitにある追跡されていないファイルがある場合はどうなりますか?
qräbnö
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.