2

私は最近、作品のリポジトリの master ブランチにファイルをコミットしました。

その後、他の作業を行うために新しいローカル ブランチを作成しましたが、元のコミットで何かを見逃していることに気付きました。新しいブランチにいる間に変更を加えました。git commit --amend は機能しますか、それとも新たにコミットする必要がありますか? 新しいローカル ブランチの新しいファイルから git 上のファイルを修正するだけで git commit --amend を実行すると想定するのは正しいですか。

4

1 に答える 1

1

ブランチはここで「問題」です

修正はまだコミット中です - 同じブランチでまだ発生しているため、次のようになります。

  • マスターでのコミット
  • ブランチを「新しいローカル ブランチ」に切り替える
  • そこに変更を加える

git commit を実行すると、「新しいローカル ブランチ」に新しいノードが追加され、マスターに触れることさえありません。

オプション 1: master ブランチで git commit --amend

$ git checkout master
// apply changes here
$ git commit --amend

これにより、マスターブランチの現在のヒントを置き換える新しいコミットが作成されます(あなたまたは他の人がすでにそこで作業していない限り、以前のコミットがプッシュされたなどの場合を除き、おそらくそこで行った以前のコミットです)。

オプション 2: master ブランチで git commit

$ git checkout master
// apply changes here
$ git commit -m "New commit, new commit message"

エレガントではありません。でも押したら?とても魅力的な。

オプション 3: 「新しいローカル ブランチ」で git commit し、cherry pick と squash を実行する

// changes applied on local branch creating commit with SOME_SHA
$ git checkout master
$ git cherry-pick "new local branch name here"

これにより、「新しいローカル ブランチ」の先端でコミットによって導入された変更が適用されます。ブランチがあまりにも異なる場合、競合が発生する可能性があります。

$ git rebase -i

ここで、コミットを 1 つにまとめる必要があります。変更をプッシュしていない場合にのみ行ってください。

あなたが私に尋ねると、やや上のオプションです。:-)

「いやだ!押した!」オプション

オプション 2、または...git revert SHA-of-original-commitすべての変更とコミットが続きます。

その元のコミットの何かが実際に悪い/有害である場合にのみ使用します。

于 2016-04-18T18:36:15.647 に答える