当我开始使用Git时,我学到的第一件事之一是Git不会将信息存储为基于文件的更改(补丁)列表,而是作为快照流。提交是仓库所有内容的一个快照。
假设我们在仓库中有两个分支Branch_A和Branch_B。无论它们之间的关系是多么简单或复杂(与其他分支合并...),只需将它们表示为以下形式:
由于某些原因,我希望将Branch_A的下一次提交完全设置为Branch_B中提交P的状态(快照)。
是否有git命令可以实现这一点?
我不能使用“正常”合并,因为我不想解决P和K之间的冲突。
我不能使用递归合并选项“theirs”,因为它会保留所有在K中不与P冲突的文件,即使它们在P中不存在。
我可以按照以下方式完成:
但我想象中有一个 Git 命令可以完成这个任务。
假设我们在仓库中有两个分支Branch_A和Branch_B。无论它们之间的关系是多么简单或复杂(与其他分支合并...),只需将它们表示为以下形式:
A <--- ... -- I <----- J <----- K Branch_A
M <------ N <----- O <----- P Branch_B
由于某些原因,我希望将Branch_A的下一次提交完全设置为Branch_B中提交P的状态(快照)。
是否有git命令可以实现这一点?
我不能使用“正常”合并,因为我不想解决P和K之间的冲突。
我不能使用递归合并选项“theirs”,因为它会保留所有在K中不与P冲突的文件,即使它们在P中不存在。
我可以按照以下方式完成:
cd /path/to/myrepo;
git checkout Branch_B
cp -R * /path/to/save_branch_b_state
git checkout Branch_A
rm -rf *
cp -R /path/to/save_branch_b_state . (In fact, I copy everything but the .git directory)
git add *
git commit
但我想象中有一个 Git 命令可以完成这个任务。