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 0fbc8edgit rebase命令?

我正在尝试这样做是愚蠢的,还是可能有更清晰,替代的方法来做到这一点?

有一个类似的问题,但就我而言,我想更改pickedit

如何自动接受 git rebase --interactive 呈现给我的内容?

4

2 回答 2

2

这是“git filter-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 回答