让A<-B<-C
成为Git提交的序列。
提交B
和C
介绍3种类型的更改:
不幸的是,B
和C
中类型2和3的更改被证明是错误的。因此,我们需要派生修改后的序列A<-B'<-C'
,其中B'
和C'
仅包含原始A
和B
中的文件添加内容,放弃任何修改或缺失。
怎么办呢?
如果有帮助,我们绝对不需要B'
和C'
作为单独的提交;我们可以使用A<-D
,其中D
包含B
或C
中添加的每个文件。
答案 0 :(得分:2)
您可以尝试重置为A,并添加所有新文件:
# reset index, reset HEAD to A, preserve working tree.
git reset A
# Add only new files
git add $(git ls-files -o --exclude-standard)
# Make commit D (equals B and C new files)
git commit -m "only new files from B and C"
对于第二步(仅添加新文件),请参阅“Git add only all new files, not modified files”。
C删除了B引入的一些文件。因此,C工作副本不包括B引入的所有文件。我想我可以一次迭代一次提交,并为每一个执行此操作。< / p>
是的,需要一种迭代方法:
git reset --hard B
git reset A
git add $(git ls-files -o --exclude-standard)
git commit -m "only new files from B"
这会产生提交B'
。
重复C
,使用B'
作为基础:
git reset --hard C
git reset B'
git add $(git ls-files -o --exclude-standard)
git commit -m "only new files from C"