3

古いコミットを手動で編集する方法を知っています:

$ git log --pretty=format:'%h %s'
    60e5ed9 Second commit
    0fbc8ed First commit
$ git rebase --interactive 0fbc8ed # Going back to 'First commit'
    # * $EDITOR gets fired up *
    # change 'pick 0fbc8ed' to 'edit 0fbc8ed'
$ echo 'Hello Kitteh!' > some_file
$ git add some_file
$ git commit --amend -m 'some message'
$ git rebase --continue # Go back

ここでの問題:

git rebase --interactiveエディターを起動しますが、これはスクリプト作成には適していません。これを克服する方法、つまりコマンドedit 0fbc8edに直接渡す方法はありますか?git rebase

私が試みていることはばかげていますか、それともこれを行うためのより明確で別の方法がありますか?

同様の質問がありますが、私の場合は次のように変更pickしたいと思いeditます。

git rebase --interactive が提示するものを自動的に受け入れるにはどうすればよいですか?

4

2 に答える 2

2

これは「gitfilter-branch」とオプション「--commit-filter」のジョブです。ここにあるマニュアルページを見てください。サンプルセクションがあります。

于 2012-04-24T16:01:14.633 に答える
2

インタラクティブなリベースなしで同じことを行うことができます:

git branch some_temporary_name # to save your initial place
git reset --hard commit_you_want_to_change
...edit...
git commit --amend -m 'some message'
git rebase your_initial_branch_name some_temporary_name
git checkout your_initial_branch_name
git merge some_temporary_name # This will be a ff since you rebased
git branch -d some_temporary_name # remove unneeded branch
于 2012-04-24T16:07:05.137 に答える