如何在单独的合并请求中推送每个文件更改
How to push every single file change in separate merge request
我有几个文件:
tasks/foo1
config/foo2
foos/foo3
我对其中的每一个都进行了更改,并且我有两个提交,每个提交都对所有这些进行了更改。我如何为他们制作单独的先生?我的意思是 1 个先生 -> 1 个文件已更改
MR 仅包含提交。为了实现这一点,您至少需要每次提交只包含对一个文件的更改。对于您描述的场景,您将不得不撤消(重置)编辑这三个文件的两次提交,然后 re-perform 添加文件的提交一一更改。这是历史改写。
假设您当前在编辑的分支上,其中有两个提交编辑了三个文件。您可以创建 3 个新分支(每个文件将从中创建 3 个新 MR)并相应地重写历史记录:
git branch edit-file1
git branch edit-file2
git branch edit-file3
# checkout the branch where HEAD contains your two commits
git checkout edit-file1
# reset the two commits, unstaging changes to 3 files
git reset HEAD~2
# add and commit just 1 file
git add path/to/file1
git commit -m "edited file 1"
# push new branch and make MR
git push -u origin edit-file1 -o merge_request.create
# do the same thing for file 2
git checkout edit-file2
git reset HEAD~2
git add path/to/file2
git commit -m "edited file 2"
git push -u origin edit-file2 -o merge_request.create
# and for file 3
git checkout edit-file3
git reset HEAD~2
git add path/to/file3
git commit -m "edited file 3"
git push -u origin edit-file3 -o merge_request.create
不过,如果您从不进行前两次提交,而最初只是一个接一个地添加和提交文件,这可能会更容易。
看你是想串联还是并联三个变化,
git reset --soft @~2 # back up over the last two commits
git commit -o tasks/foo1 # make three commits in series, adding one file each time
git commit -o config/foo2
git commit -o foos/foo3
或
git reset --soft @~2
git commit -o tasks/foo1; git branch foo1merge
git reset --soft @~
git commit -o config/foo2; git branch foo2merge
git reset --soft @~
git commit -o foos/foo3; git branch foo3merge
这将为三个更改的文件中的每一个提供一个可合并的分支。
我有几个文件:
tasks/foo1
config/foo2
foos/foo3
我对其中的每一个都进行了更改,并且我有两个提交,每个提交都对所有这些进行了更改。我如何为他们制作单独的先生?我的意思是 1 个先生 -> 1 个文件已更改
MR 仅包含提交。为了实现这一点,您至少需要每次提交只包含对一个文件的更改。对于您描述的场景,您将不得不撤消(重置)编辑这三个文件的两次提交,然后 re-perform 添加文件的提交一一更改。这是历史改写。
假设您当前在编辑的分支上,其中有两个提交编辑了三个文件。您可以创建 3 个新分支(每个文件将从中创建 3 个新 MR)并相应地重写历史记录:
git branch edit-file1
git branch edit-file2
git branch edit-file3
# checkout the branch where HEAD contains your two commits
git checkout edit-file1
# reset the two commits, unstaging changes to 3 files
git reset HEAD~2
# add and commit just 1 file
git add path/to/file1
git commit -m "edited file 1"
# push new branch and make MR
git push -u origin edit-file1 -o merge_request.create
# do the same thing for file 2
git checkout edit-file2
git reset HEAD~2
git add path/to/file2
git commit -m "edited file 2"
git push -u origin edit-file2 -o merge_request.create
# and for file 3
git checkout edit-file3
git reset HEAD~2
git add path/to/file3
git commit -m "edited file 3"
git push -u origin edit-file3 -o merge_request.create
不过,如果您从不进行前两次提交,而最初只是一个接一个地添加和提交文件,这可能会更容易。
看你是想串联还是并联三个变化,
git reset --soft @~2 # back up over the last two commits
git commit -o tasks/foo1 # make three commits in series, adding one file each time
git commit -o config/foo2
git commit -o foos/foo3
或
git reset --soft @~2
git commit -o tasks/foo1; git branch foo1merge
git reset --soft @~
git commit -o config/foo2; git branch foo2merge
git reset --soft @~
git commit -o foos/foo3; git branch foo3merge
这将为三个更改的文件中的每一个提供一个可合并的分支。