代码之家  ›  专栏  ›  技术社区  ›  n179911

Git中的“rm”+“svn update”等价物?

  •  6
  • n179911  · 技术社区  · 15 年前

    在svn工作目录中,我可以

    1. 对工作目录中的文件进行一些更改
    2. 删除我所做的所有更改'rm该目录中的所有源文件,但保留我的.svn目录)
    3. 通过使用“svn update”来检索主干,svn会将所有源文件下载回我的工作目录。

    git中是否有等效的命令?你能告诉我怎么做吗?

    3 回复  |  直到 15 年前
        1
  •  9
  •   Community CDub    8 年前
    git reset --hard
    

    它是 git reset --hard HEAD “应该是你想要的。

    小心使用它,因为它可以有效地删除工作目录中的任何当前更改。见“ Undoing in Git "

    注:作为 Charles Bailey 在评论中提到,并且 in his answer ,这不会删除未跟踪的文件。
    为了这个 git clean 是正确的工具。看他的 answer for more ,但也有一个问题” How do you remove untracked files from your git working copy? ,或Git Ready文章 cleaning up untracked files ".

    所以如果我们想做一次大的清理:

    $ git clean -n -d -x
    

    该命令将清除项目下列出的文件 .gitignore 以及删除其他不需要的文件和目录。
    在运行git clean时,请始终使用预防措施,并确保仔细检查真正删除的内容。

    注意,你可能想 move your untracked files instead .

        2
  •  4
  •   Tate Johnson    15 年前
    1. 您希望放弃对工作目录中跟踪文件的所有更改
    2. 您是工作目录的根目录

      $git结帐。

    这将递归地签出(还原)当前分支(head)中从上次提交开始跟踪的每个文件。

        3
  •  2
  •   CB Bailey    15 年前

    假设你是工作副本的根。

    你想清除任何未跟踪的文件,先做一次试运行,以确保它不会首先删除任何文件。(您可能需要调查目录(-d)并使用忽略规则(-x)选项。)

    git clean -n
    

    然后“真实地”运行它。

    git clean -f
    

    然后从索引中为所有跟踪的文件签出未修改的新文件。

    git checkout .