2012-09-13 48 views
1

这可能是一个很简单的问题,但我完全新的Git这样......Git的 - 新的Checkout

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

我现在明白为什么这是行不通的。它结束了,只有从主分支更改的文件被拉。如果我现在运行git status,我会将所有其他文件视为已删除的文件。不好!!

所以,我想要做的是获得一个干净的副本或签出(或它被称为)的主分支,就好像这是我第一次从主分支拉项目。重置本地Git存储库或其他东西?

我该如何继续?

回答

0

我最终创建了一个新文件夹,浏览到这个文件夹并在这个文件夹中运行'git init'。然后我在这个文件夹中创建了一个新的远程指向我的项目,然后我用'git pull myremote master'来拉动这个项目。然后我删除了以前导致我的问题的文件夹。 这很简单:-)。

1

尝试这样做是为了disreguard更改:

git checkout . 

和/或:

git reset HEAD --hard 

然后从主拉

编辑:

此外,如果你做一个git status并看到文件被删除,你可以做一个git add -u来演示那些del并提交他们确认。

+0

谢谢你,完美的工作。我只是做了git结账。然后从主人拉。现在我已检出所有文件,并且git状态不报告任何已删除的文件。它确实说我虽然在原产地/主人之前提交了181次提交。不明白这意味着什么,但希望没有什么不好。 – user1140596

+0

你有额外的文件没有与主还未推送 –

+0

好吧,我该如何摆脱这些额外的文件?这是否意味着如果我现在推动,主分支会做很多更改?我不希望我以前的任何更改被提交。 – user1140596

1

要重置本地树(文件实际上你可以编辑)到主服务器(远程),你可以做确切的状态(假设远程名称到您的服务器是原点):

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

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

我会推荐使用

git checkout -b wip 

前的情况下,创建一个分支WIP命名要保留一些地方unpushed直接在本地主的提交完成。您可以根据需要合并wip或樱桃选择一些提交。

建议的命令

git reset HEAD --hard 

将当地的树重置为头记录的状态提交您当地的分行,但当地分支机构的历史仍将可能是从远程的历史不同科。它将清除你在本地完成的任何修改,并且不会丢失任何尚未推送的提交。

+0

感谢让为你的好解释。不幸的是我没有看到你的评论,然后我完全删除了我的git checkout的全部本地目录,然后创建了一个全新的目录,请参阅下面的答案。因此我无法验证您的答案是否适合我。至少它让我更加明亮:-),一票赞成。 – user1140596

+0

您可以通过重新创建您所处的状态轻松实验:在master上创建一个本地虚拟提交,然后使用一些文件并尝试各种命令:) – Jean

相关问题