2

最近、10 個のファイルを含むコミットを行いました。ファイルの 1 つはコミットされていないはずです。それには、他のユーザーには機能しない私のローカル テストの変更が含まれています。

以前のコミットからそのファイルをチェックアウトし、元のファイルとして再コミットしてから、変更をローカルに再適用したいと思います。

git revert良さそうに聞こえますが、コミット内の 1 つのファイルではなく、コミット全体のようです。gitのおしゃべり/ログを最小限に抑えながら、これを行う良い方法はありますか? おそらく以前のコミットを修正しますか?

それが役立つ場合、これはまだプッシュされていません。

4

2 に答える 2

4

git revert良さそうに聞こえますが、コミット内の 1 つのファイルではなく、コミット全体のようです。

コミットを簡単に変更する方法はありません。既存のコミットのほんの少しでも変更したい場合は、元のコミットに似ているだけの新しいコミットを (新しい SHA で) 作成する必要があります。

gitのおしゃべり/ログを最小限に抑えながら、これを行う良い方法はありますか? (おそらく以前のコミットを修正しますか?)

問題のコミットがブランチの最後のコミットでない場合、git commit --amendあまり役に立ちません。説明については、これを参照してください。あなたはどちらかを使用することができますgit revert...

これはまだプッシュされていません。

まだリモートにプッシュしていないので (はい、役に立ちます)、いつでもインタラクティブなリベースを実行して、問題のあるファイルが最初に導入された時点からブランチの履歴を書き換えることができます。

于 2015-03-19T15:05:44.200 に答える
3

プッシュされていない場合は、履歴を好きなように書き換えることができます。

コミットがブランチの最後のコミットである場合は、コミットを修正することをお勧めします (そうでない場合は、プッシュされていないので、とにかく簡単に履歴を書き換えることができます)。ファイルの「古い」バージョンを取得するには、 command を使用して以前のコミットからチェックアウトできますgit checkout COMMIT-HASH-ID path_to_file

したがって、git log --oneline出力が次のように見える場合-

 $ git log --oneline
9ab100f Your awesome 10-file commit message
e62c6d5 Merge pull request #607 from origin/someone-elses-feature
cfdf47a someone elses commit message

やるだけ

git checkout e62c6d5 path/to/your_file_name.js

次に、ステージに追加します

git add .

その後修正

git commit --amend

歴史を見てください、あなたはすべて良いはずです。

于 2015-03-19T15:10:15.293 に答える