2016-05-27 4 views
1

私はGitで働いています。隠し場所の内容を削除して、その際に発生するマージの競合を隠す。私は次のことをしています:私の隠しを新しいブランチに適用し、隠されているものですべてをオーバーライドしたい

git checkout -b *newbranchname* 
git stash apply 

そして、私はファイル内のマージの競合を教えています。どうすれば端末でこれを行うことができ、具体的に対処しなくても自動的に紛争の隠れ家を好むことができますか?私の意見で

答えて

2

、最も簡単な方法は、代わりに

:-)、独自のブランチにごgit stash内容を向ける「ことを実行しない」である。

git stash branch newbr 

今、あなたは持っています新しいブランチnewbr(インデックスにはgit addのアイテムがあった場合)とコミットする準備が整っていて、スティッシュごとに変更された作業ツリーはgit addとなりコミットされます。注意深く追加したことがある場合は、先に進んでコミットしてから、すべてを追加してもう一度コミットしてください。そうでない場合は、今すぐすべてを追加してコミットしてください。今度は、新しいブランチnewbrを1つまたは2つコミットしています。どれくらい多くのものがgit commitの数に依存するのですか?git stashを実行したときにコミットしたものと結合します。

異なる開始点から別の新しい分岐を作成することができます(希望の場合)。git cherry-pickを使用してそれらのコミットを引き継ぎ、新しい分岐を破棄できます。または、git rebase -i<upstream>とオプションの場合は--onto引数)を使用して、通常のリベース方式のどこかでコミットをコピーし、コピーが完了したら元のコミットを破棄することができます。または、既存の開始点newbrが結局望むものであれば、すでにすべて設定されています。


あなたは本当にがちょうど完全にそれらのファイルの現在のバージョンを無視して、競合ファイルの作業ツリーのバージョンをチェックアウトしたいならば、あなたは非常に簡単にそれを行うことができ、言ったすべてのこと。覚えておくべき事は(いくつかの数Nまたは[email protected]{N})参照名stashコミットw ORKツリーを参照していることである、それはstash bagiwコミットを保存した際に行われているgit stash。したがって:

git checkout stash -- path/to/file 

インデックス(従って任意の競合マージを解決する)、完全にそのファイルのHEADバージョンを無視を通してそれを書き込み、path/to/filewバージョンを抽出します。

(ファイルのi NDEXコミットバージョンはstash^2にあり、人跡未踏があれば、私はthat other answerで述べたように/すべてのファイルがコミット、それらのファイルは、stash^3である。コミットwは技術的にマージされますが、それはです通常のマージではなく、特にすべてのファイルコミットは、のファイルとインデックス/作業ツリーファイルがないため、非常に珍しいです。)

0

あなたは結果を好きかどうかを確認するために

git merge-recursive --theirs stash^ -- @ stash 

を試みることができます。

関連する問題