【发布时间】:2021-06-27 00:41:39
【问题描述】:
我在分支中错误地使用了“git rm my_file”。
经过一些提交、合并和......现在我正试图从主分支取回文件, 我正在使用“git rebase master”,它说当前分支是最新的,但文件不存在。
是否可以将文件从 master 获取到我的分支?我认为只需创建一个新分支即可解决问题。
【问题讨论】:
标签: git git-branch git-rebase
我在分支中错误地使用了“git rm my_file”。
经过一些提交、合并和......现在我正试图从主分支取回文件, 我正在使用“git rebase master”,它说当前分支是最新的,但文件不存在。
是否可以将文件从 master 获取到我的分支?我认为只需创建一个新分支即可解决问题。
【问题讨论】:
标签: git git-branch git-rebase
既然你告诉文件还在 master 上,你可以简单地从 master 获取文件并提交它:
git checkout master -- path-and-name-of-the-deleted-file
git commit
注意破折号周围有空格“--”,即使文件被删除,git也会将它们的右边部分视为文件名。
这是最简单的方法,但是在你的提交历史中,这个文件会被删除并重新创建,这不是很漂亮。
如果你想有一个干净的历史记录,你可以尝试撤消删除:
找到您删除文件的提交 ID:
git log --name-status --diff-filter=D
假设它是提交 abcdef123456。然后对该提交的 parent 进行交互式变基:
git rebase -i abcdef123456^
(插入符号 ^ 表示父提交)
您将获得自删除文件以来所做的所有提交的剧本。最上面的将是 abcdef123456,看起来像
pick abcdef12
从“pick”改为“edit”,保存,退出编辑器。 git 将启动 rebase 并在第一次提交后停止。
然后从master获取文件的当前版本:
git checkout master -- path-and-name-of-the-deleted-file
git commit --amend
git rebase --continue
...您的删除操作将被撤消。
【讨论】:
您是否检查过该文件是否存在于 master 分支中?仔细检查您当前的分支是否是主分支。
【讨论】: