我正在审查一个存储库,我想发表一些评论,它会添加更多内容,例如添加评论、进行一些更改等。
如何更改先前提交的文件内容并进行推送,我知道提交历史记录将被更改,所有受影响的文件也将被更改,但 git 会将受影响的文件与进一步的提交(--> Master)进行比较并执行积极改变?
答案1
你所要求的是改写历史n0 次提交。这通常是一个坏主意,因为它会使您的远程存储库与基于它的任何其他存储库不同步。这将使事情变得更加复杂,以至于其他人将无法再合并,并且需要任何其他存储库删除其分支并拉下新修改的分支。在这种情况下,您不妨开始一个新分支并向其添加注释。无论如何,这都会变得有点混乱。
为此,您需要检查合并(例如,我们将使用 commits和A
),然后返回到,分支该分支(我们将该分支称为B
C
A
审查,以及原来的拉取请求):
...A --B --C (pull-request)
\
A' (review)
git checkout HEAD{3}
git checkout -b review
然后进行评论修改并签入。
git add . # or specify the specific files
git commit -m "message" --author="original author"
或者,如果您想要相同的消息/作者并且不想将其键入,您可以使用以下命令,我会将其放入脚本或别名 git 命令中:
git add $(git diff-tree --no-commit-id --name-only -r <sha-of-A>)
git commit -m "$(git rev-list --format=%B <sha-of-a>)" --author="$(git rev-list --format=%an <sha-of-A>)"
也可以通过从适当的父级检索适当的 sha 来自动完成,但我不确定如何区分分支父级和合并父级 atm。
接下来合并B
到审查
git merge <sha-of-B>
然后进行评论修改并签入。(见上文)。
继续执行此操作,直到完成为止:
...A --B --C (pull-request)
\ \ \
A'--B'--C' (review)
然后,如果您愿意,您可以合并回原来的分支,或者只是将该审核分支返回给您正在审核的人员。