2017-06-07 6 views
0

コードを追加してコードを削除しました。今、私はこれをやり直したい。ファイルには他の変更があります(コミット時に変更された他のファイルもあります)。元に戻したくないので、標準の復帰はできません。私が望むのは、行番号を指定してこれらの選択された変更を元に戻すコミットを作成することです。そして、私のGUIクライアント(Github Desktop)を使ってdiffの変更点/行番号を選択できるようにする技術が望ましい。私はこれについてどうやって行くのですか?Gitのファイルの選択行を元に戻す

+0

、元に戻すに似たものを作成することを意味しますが行だけを復帰することをコミットし、実行します最初のコミットを取り除きたい、あるいは元のコミットを変更してそのラインを変更したくないということですが、他のすべてのラインも変更しますか? –

+0

私は復帰方法を意味します。選択した変更を元に戻す新しいコミットを作成しました。 –

+0

答えがあなたの問題の解決に役立つ場合は、それをマークしてください。それは、同様の質問をした他の人を助けるでしょう。ありがとう。 –

答えて

1

あり、これを達成するために、いくつかの方法は、おそらくですが、私のようなものでいいと思う:元に戻すことで

# stage a reversion of the given commit without making a commit of this reversion 
git revert -n <hash-of-commit-to-partially revert> 

# Unstage these changes so the reversion is only in the working tree 
git reset 

# Selectively stage only the parts which make the reversions which you want 
git add -p <path-of-interest> 

# Optional: discard other changes from the working tree for testing 
# (you might need to "git clean" if you are discarding the reversion 
# of a change that originally removed a file) 
git checkout -- . 

# Commit the selective reversion 
git commit 
+0

これはおそらく私のために働くでしょう。特に、GUIクライアントでインデックスの変更を選択的に再追加することができます。しかし、私は、異なるケースがあると感じます。たとえば、多くのファイルが変更されていて、私がしたいのは、1行を変更するだけです。私はその1行以外のすべてを追加する必要があります。非効率なようだ。 –

+0

@AlexBollbach:この場合でも、私はおそらく同じ手順に従います。あなたが多くの変更をしていて、あなたが興味のある一つのファイルに制限し、あなたが興味のないチャンクをすばやくスキップすることができるのは、(人の時間では)高価な 'add -p'だけです。 –

+0

コミットbtwを元に戻すとマージ競合が発生します。おそらく、同じ行のコードを元に戻すためです。 –