【问题标题】:Git - New checkoutGit - 新结帐
【发布时间】:2012-09-06 05:49:13
【问题描述】:

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

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

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

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

我该如何进行?

【问题讨论】:

    标签: git github


    【解决方案1】:

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

    git checkout .
    

    和/或:

    git reset HEAD --hard
    

    然后从 master 拉取

    编辑:

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

    【讨论】:

    • 谢谢,效果很好。我刚刚做了 git checkout 。然后从主人那里拉出来。现在我已经签出了所有文件,并且 git status 没有报告任何已删除的文件。它确实说我在 origin/master 之前提交了 181 次。不明白这是什么意思,但希望没什么不好。
    • 您有额外的文件未与 master 同步但尚未推送
    • 好的,我该如何删除那些多余的文件?这是否意味着,如果我现在 push,master 分支会发生很多变化?我不希望我之前的任何更改被提交。
    • 嗯,我想这毕竟并不能完全解决我的问题,因为我现在的提交中似乎有很多文件尚未推送。我也尝试了 git reset HEAD --hard 但 git status 仍然报告在 origin/master 之前提交了 181 个提交。我希望拉取结果是服务器中内容的完整副本,就好像这是我第一次检查它一样。
    • 看看这里,如果有帮助请告诉我stackoverflow.com/questions/2342618/… :)
    【解决方案2】:

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

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

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

    我会推荐使用

    git checkout -b wip
    

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

    建议的命令

    git reset HEAD --hard
    

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

    【讨论】:

    • 感谢 Jean 的精彩解释。不幸的是,在我完全删除了我的 git checkout 所在的整个本地目录然后创建了一个全新的目录之前,我没有看到您的评论,请参阅下面的答案。因此,我无法验证您的答案是否对我有用。至少它让我更聪明:-),一票赞成。
    • 您可以通过重新创建您所处的状态轻松地对此进行试验:在 master 上创建一个本地虚拟提交,然后处理一些文件并尝试各种命令 :)
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2013-05-11
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 2017-04-27
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多