2016-10-26 3 views
1

は私が手動でパッチを適用すると、私は私がREJファイルが存在でもあったし、人跡未踏だったが、git add .という部分を見落としていたは、元に戻すか、gitの午前は、

git add . 
git am --resolved 
をやっ行われた後のことでした--resolved戻しますすべてのファイルを期待どおりにステージング領域に追加しました。 git am --resolvedパッチの差分があるrejファイルをコミットしました。

私はgit reset --soft HEAD^を実行したので、コミットを元に戻してパッチで修正されたファイルをコミットできました。

しかし、私はgit commitを行って以来、コミットメッセージと作者はパッチファイルからもう抽出されないという問題がありました。

gitを解決してrejファイルを削除し、再度コミットしてコミットメッセージと作成者が完全な状態になるようにするにはどうすればよいですか?

答えて

2

パッチにコミットが1つしかないようです。

この場合で最も簡単な方法は、(一つだけのコミット)git resetにあるバック不正確にコミットし、その後、余分なファイル(git rm ...)を削除し、git commit --amendを使用しています。 --amendオプションを指定すると、git commitは既存のメッセージと作成者を再利用し、現在のインデックスから新しいコミットを行い、古いコミットを脇に隠します。

すべてが.rejファイルを含む複数のコミットの場合は、Leon's answerなど(たとえば、より長い手動リベース)を使用する必要があります。このようなコミットのたびにコピーをフィルタリングするので、コピーされたコミットのセットをgit filter-branchに制限することができます。これは非常に遅いです。

不正なコミットにリセットするには、git reset --soft [email protected]{1}を使用してください。

2

あなたは、単に今、あなたは

git reset --soft [email protected]{1} 

で誤って確定されたときの状態に戻り、その後、上からgit filter-branchコマンドを実行する必要があります

git filter-branch --tree-filter 'rm rejfile' HEAD^.. 

を行っている可能性があります。

関連する問題