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

从git获取干净的文件副本

  •  2
  • leon  · 技术社区  · 10 年前

    在svn中,有时我会删除一个本地文件,然后使用“svn update”获取一个干净的副本。我怎么能用吉特做? git pull/fetch不起作用。我唯一的办法就是使用大小便失禁的diff。谢谢 我正在使用tortoise Git。

    2 回复  |  直到 10 年前
        1
  •  8
  •   mockinterface    10 年前

    文件在git和svn中的暂存和提交方式不同。与gits观点不同的要点是,使用git,文件通过一个名为 指数 从那里开始,它是对 提交的局部图 您的分支指向,并从那里传播到 远程提交图 当您将分支推送到远程服务器时。

    虽然承认最新版本有些误导,但为了简化一点,有四个最新文件版本:工作树中的版本、索引中的版本,本地分支中的版本和远程分支中的文件。本地分支和远程分支不一定是同步的。因此,当你说你想要一份干净的文件副本时,你必须先完善这个问题,然后自己回答你想要的四个文件中的哪一个。

    索引中的最新版本:

    $ git checkout -- /path/to/file
    

    本地分支的最新版本(也将丢弃索引中的文件):

    $ git checkout HEAD -- /path/to/file
    

    远程分支的最新版本(在本地计算机上为当前版本,可能已过时):

    $ git checkout origin/master -- /path/to/file
    

    远程分支的最新版本(更新为最新的酒吧竞争条件-未过时):

    $ git fetch
    $ git checkout origin/master -- /path/to/file
    

    远程分支机构的最新版本(均更新为最新版本,并与本地分支机构同步):

    $ git pull
    $ git checkout master -- /path/to/file
    
        2
  •  1
  •   Azeem Rob Hyndman    5 年前

    尝试使用 git checkout :

    git checkout <filename>
    

    请注意,如果您处于 合并 重新设置基准 ,并希望解决冲突 您需要添加 --ours --theirs 让git知道 <filename> 你想要的。

    例如。:

    git checkout --ours <filename>
    

    如果您希望文件名在历史记录的其他位置显示(或在其他分支上显示)

    git checkout <branch-name or SHA> -- <filename>
    

    注意 -- 将git REF名称与文件名分开。