问题描述
我从master
创建了一个新分支,并更改了一些文件。我该如何从新创建分支中的master
中提取新文件,并忽略/覆盖当前分支中已更改的文件?
解决方法
您可以撤消本地更改,并通过说出以下内容来恢复文件在master
分支中的位置:
git checkout master -- .
--
告诉Git将接下来出现的内容解释为路径列表,而.
则指示所有路径。
如果您使用的是Git 2.23 (August 2019)或更高版本,则可以使用新的(但仍然是实验性)git restore
命令:
git restore master -- .
引入了两个新命令“ git switch”和“ git restore”,以拆分“检出分支以推进其历史记录”和“检出索引之外的路径和/或树状代码以进行处理”单个“ git checkout”中的“前进当前历史记录”
基本上,git checkout
确实收到了两个命令:
-
git switch
检出一个分支并相应地更新工作目录 -
git restore
从工作目录中的特定提交(或索引)中检出文件
有很多方法可以做到这一点。一些如下所示。
-
如果希望当前分支与本地
master
分支完全相同,则只需运行以下命令。这将删除您的所有更改。$ git reset --hard master
-
如果希望当前分支与远程
master
分支完全相同,则只需运行以下命令。我们应该获取远程分支,以确保它们都已同步。$ git fetch origin $ git reset --hard origin/master
-
另一种方法是删除当前分支,并从
master
创建一个具有相同名称的新分支。这样做之前,如果您有一些未提交的数据,则应将其存储或提交。-
要存储未提交的数据,请运行以下命令。
$ git add .; git stash; git stash drop
-
或以提交更改,请运行以下命令。
$ git add .; git commit -m "just commit & it won't be after a while"
最后通过运行以下命令删除并创建分支。
$ git checkout master $ git branch -D <branch-name> $ git branch <branch-name>
-