如何移动一个文件错误地添加到一个分支/提交到另一个分支/在 Git 中提交?
How does one move a file erroneously added to a branch / commit to a different branch / commit in Git?
我在分支 ServiceProvisionSpecialist_06_08_2015
中有一个文件 (driver_06_05_2015.view
) 不应该存在并且被错误地提交到该分支,即使它应该在 driver_06_05_2015
分支中。
有没有一种方法可以通过重写历史将文件(而不是整个提交)移动到 driver_06_05_2015 分支(我认为当人们说它指的是 rebase 命令时......)
更新:现在使用变基,因为我看到你需要编辑倒数第二个提交。
您可以使用交互式变基,变基到您要编辑的提交的父提交上。在这种情况下,
git rebase -i HEAD~2
在编辑器中,在添加了您要删除的文件的提交行中,将 pick
替换为 edit
。然后关闭编辑器。
交互式变基将在该提交处停止,现在您可以编辑:
git rm --cached socialMediaGenerator/src/driver_06_05_2015.view
git commit --amend
git rebase --continue
--cached
选项允许您从 Git 中删除文件但将其保留在磁盘上。
然后你可以在另一个分支中添加它:
git checkout driver_06_05_2015
git add socialMediaGenerator/src/driver_06_05_2015.view
git commit -m "Add file driver_06_05_2015.view"
我在分支 ServiceProvisionSpecialist_06_08_2015
中有一个文件 (driver_06_05_2015.view
) 不应该存在并且被错误地提交到该分支,即使它应该在 driver_06_05_2015
分支中。
有没有一种方法可以通过重写历史将文件(而不是整个提交)移动到 driver_06_05_2015 分支(我认为当人们说它指的是 rebase 命令时......)
更新:现在使用变基,因为我看到你需要编辑倒数第二个提交。
您可以使用交互式变基,变基到您要编辑的提交的父提交上。在这种情况下,
git rebase -i HEAD~2
在编辑器中,在添加了您要删除的文件的提交行中,将 pick
替换为 edit
。然后关闭编辑器。
交互式变基将在该提交处停止,现在您可以编辑:
git rm --cached socialMediaGenerator/src/driver_06_05_2015.view
git commit --amend
git rebase --continue
--cached
选项允许您从 Git 中删除文件但将其保留在磁盘上。
然后你可以在另一个分支中添加它:
git checkout driver_06_05_2015
git add socialMediaGenerator/src/driver_06_05_2015.view
git commit -m "Add file driver_06_05_2015.view"