git-最初克隆后获取最新文件

git-最初克隆后获取最新文件,git,Git,我是Git的新手,所以如果我听起来像个十足的傻瓜,我道歉 我最初运行了以下命令: git clone https://github.com/userx/projecty.git 我一直在我的工作站上进行更改,但没有上传任何更改。有一个文件已在github上更新,我想同步到我的工作站: https://github.com/userx/projecty/blob/master/whatever/whatever.py 我已经在本地对其进行了一些修改,但它们可能/应该被覆盖。我只想在我的工作站上

我是Git的新手,所以如果我听起来像个十足的傻瓜,我道歉

我最初运行了以下命令:

git clone https://github.com/userx/projecty.git
我一直在我的工作站上进行更改,但没有上传任何更改。有一个文件已在github上更新,我想同步到我的工作站:

https://github.com/userx/projecty/blob/master/whatever/whatever.py
我已经在本地对其进行了一些修改,但它们可能/应该被覆盖。我只想在我的工作站上刷新一个文件,而不去碰我做过的任何其他事情。任何关于如何做到这一点的想法都将不胜感激


谢谢

假设您只想覆盖工作副本中该文件的内容(以便在
git status
的输出中显示为“已修改”),那么您可以这样做:

  • 使用
    git fetch
    更新本地存储库的远程跟踪分支。这不会修改任何本地分支,也不会修改您的工作副本:

    git fetch--all

  • 使用
    git show
    从远程分支获取文件副本,并通过重定向标准输出将其写入磁盘:

    git show origin/master:whater/whater.py>whater/whater.py

  • 通过指定
    origin/master
    您正在从远程跟踪分支复制文件,该分支将是自
    git fetch
    起该文件的最新版本。当然,您可以重定向标准输出以覆盖如上所示的现有文件,或将输出写入其他位置

    git show
    命令也接受其他格式:请参见
    man gitrevisions
    中的“指定修订”


    请注意,正如@BlueFoots对他们的回答所评论的那样,如果您将此文件提交给本地分支,并且您的本地分支打算稍后与远程主机合并,那么您本地复制的
    whater/whater.py
    将与远程跟踪分支的更改相冲突。因此,通常情况下,您只会作为临时措施来测试某些东西,或者如果您以后不打算将本地分支与远程主机合并。

    我建议采用这种方法:

    # Undo your changes to whatever.py.
    git checkout whatever/whatever.py
    
    # Pack up all your other changes, saving them to a special stash area.
    git stash
    
    # Update your repo, getting the latest, including the latest whatever.py.
    git pull
    
    # Now restore you changes from the stash.
    git stash pop
    

    这应该可以做到,并使您处于良好的工作状态。

    看起来您可以在这里做到这一点:您要查找的是拉取单个文件,而不是克隆。您是否只是尝试获取该文件的最新内容,而是作为本地修改(但不是签入)的文件文件?也许不要问git操作的一些细节,让我们知道你想要完成什么。我在我的问题中添加了更多的细节。现在它更有意义了吗?@dana,是的,我想是的,谢谢。看看我的答案,让我知道这是否是你想要的。谢谢!我不确定你给我看的是不是黑客,但它起了作用(非常感谢!这并不是真正的黑客行为:)git最强大的功能之一是远程跟踪分支,因为它让您可以随时访问远程存储库的状态。在此状态下,您可以在任何修订时显示单个文件或树,或在更改中合并,或根据需要执行任何操作。我认为对学习git的人来说,最大的伤害之一就是在教git pull(相当于git pull)之前,不教git fetch和git merge组合,因为git pull掩盖了git如何使用远程跟踪分支。不,这也会更新遥控器上已更新的任何其他文件。@Raman:是的,但从字里行间看,我很确定这是海报想要的。提出的另一种解决方案是使用git show
    git show
    ,它会使whatever.py显示在git中,就好像海报是对该文件进行所有更改的海报一样,并且如果要提交,可能会导致非常困难的冲突。True。我不认为这是OP想要的,但是你关于如果不更新本地负责人,未来可能发生冲突的说明是一个好的说明——我在我的回答中添加了一个关于这一点的附言。