1

这可能是一个非常简单的问题,但我对 Git 完全陌生,所以......

  1. 我已经对我的主分支进行了拉动。
  2. 另一个人对 master 分支做了很多更改。
  3. 我想放弃所有更改,所以我在本地删除了项目(刚刚从 Windows 资源管理器中删除),然后运行 ​​git pull myremote master。

我现在明白为什么这不起作用了。结果是只从主分支中提取了更改的文件。如果我现在运行 git status 我会将所有其他文件视为已删除文件。不好!!

所以,我想做的是获得主分支的干净副本或签出(或称为),就好像这是我第一次从主分支中提取项目一样。重置本地 Git 存储库还是什么?

我该如何进行?

4

3 回答 3

1

尝试这样做以忽略您的更改:

git checkout .

和/或:

git reset HEAD --hard

然后从主人那里拉

编辑:

此外,如果您执行 agit status并看到文件已被删除,您可以执行 agit add -u来暂存这些删除并提交它们以确认。

于 2012-09-13T07:16:34.067 回答
1

要将本地树(您可以实际编辑的文件)重置为服务器(远程)上主服务器的确切状态,您可以执行以下操作(假设服务器的远程名称是 origin):

git reset origin/master --hard 
git clean -fd

第一个命令会将当前签出的本地分支的 HEAD(第一行git statusis : On branch $current_branch)重置为服务器主服务器的状态(这意味着 $current_branch 和 origin/master 的 git log 将完全相同)。第二个命令将删除可能遗留的无关文件。

我会推荐使用

git checkout -b wip

之前创建一个名为 wip 的分支,以防您想保留一些直接在本地主机上完成的本地未推送提交。然后,您可以根据需要合并 wip 或挑选一些提交。

建议的命令

git reset HEAD --hard

会将本地树重置为本地分支的头部提交记录的状态,但本地分支的历史仍可能与远程分支的历史不同。它将清除您在本地所做的任何修改,并且不会丢失您尚未推送的任何提交。

于 2012-09-13T12:00:02.707 回答
0

我最终创建了一个新文件夹,浏览到该文件夹​​并在该文件夹中运行“git init”。然后我在这个文件夹中创建了一个指向我的项目的新遥控器,然后我使用“git pull myremote master”拉出项目。然后我删除了导致我的问题的以前的文件夹。这很简单:-)。

于 2012-09-13T11:46:17.040 回答