2017-06-23 4 views
0

新しいブランチに切り替えてファイルをコミットして(バックアップとしてGitHubにプッシュすると)、古いブランチに戻ったら、ファイルはすべて変更されなくなりました。最後のコミット。gitを使って、変更を再適用しても変更をコミットしない方法はありますか?

この場合、以前のようにファイルを変更できますか?

私はでき

git rebase tmp-branch 

およびそれらの変更を取得しますが、このアクションはまた、私の現在のブランチにコミット適用されます。コミットを行わない方法はありますか?ファイルを変更してコミットしないままにしておきます。私はあなたがのgitのstash家族を探しているのだと思い

+2

あなたが探しているものを隠していますか? https://git-scm.com/docs/git-stash – Goose

+0

それを隠すことができますか?最初に隠し、新しいブランチに切り替え、隠しを適用し、コミットし、古いブランチに戻って、再び隠しを適用するか?しかし、もし私が隠れていないと私はすでに他の支店で約束? –

+0

私はかなり確信しています。 – Goose

答えて

0

https://git-scm.com/docs/git-stash

を指令するときにはスタッシュを他のブランチに切り替えて、あなたがそれらをコミットせずに変更を保存することができ、そして「ポップ」戻る。ここで

はそれのいくつかの基本的な例が

git add . 

以上に個々のファイルを追加を使用してインデックスに変更を加え、そのページから

http://gitready.com/beginner/2009/01/10/stashing-your-changes.html

を使用していますインデックス、あなたの選択。で変更内容を離れて隠し:

git stash 

とブームを!あなたは元の作業状態に戻ります。そのバグは修正されましたか?バックあなたの仕事を持参:

git stash apply 

またスタッシュの複数の層を行うので、あなたの現在のもののすべてをチェックアウトするに

git stash list 

を使用してくださいすることができます。スタックの深いところから隠しを適用する必要がある場合は、それも簡単です。ここでは、あなたが持っている二スタッシュを適用する方法は次のとおりです。

git stash apply [email protected]{1} 

また、簡単に使用することにより、スタックの一番上のスタッシュを適用することができます。このコマンドで

git stash pop 

ノート、その隠しを削除しますが、適用しません。手動でスタッシュを削除することができます。

git stash drop <id> 

かで保存されたスタッシュのすべてを削除します。

git stash clear 
+0

あなたは多分この特定の状況のた​​めのステップを列挙できますか?私が隠しをしないと、元の質問に私が望むものを達成することができないのでしょうか? –

+0

私は試してみます、私は主にこれをサポートするGUIを使用します。隠れていないと、あなたは変更が上書きされたと思います。私のGUIでは、それはあなたがそれをやってしまうのを妨げるので、私は確信していません。 – Goose

+0

@太極拳無極而生nevermind、それはあなたがunstashed変更を回復することができるようです。 https://stackoverflow.com/questions/19003009/git-how-to-recover-stashed-uncommitted-changes – Goose

2

編集:はどうやらGitの人々はすでに、この考えています。
-nフラグをcherry-pickに渡して、別のコミットの変更を適用し、新しいコミットを作成する前に停止することができます。

git checkout old-branch  # Go back to the old branch, files are unmodified 

git cherry-pick -n tmp-branch # Apply the changes from tmp-branch's tip 
+0

ああ男の子... gitは低レベルであなたの車を微調整するのとちょっと同じです...多分それはみんなそれが好きな理由です –

0

Gitリポジトリ:スタッシュunstaged変更

これは、あなたがgitの追加していないすべての修正隠します:新しく作成された(非追加)のファイルが残ります

git stash -k 

注意を-uスイッチも使用していない限り、作業ディレクトリにあります。

git stash -k -u 

また、後で隠しポップを入れたときに、作業ディレクトリがクリーン(つまり、すべての変更を追加する必要があります)である必要があります。

関連する問題