Git: How to update/checkout a single file from remote origin master?

后端 未结 7 927
长发绾君心
长发绾君心 2020-12-12 08:41

The scenario:

  1. I make some changes in a single file locally and run git add, git commit and git push
  2. The file is
相关标签:
7条回答
  • 2020-12-12 09:17

    I think I have found an easy hack out.

    Delete the file that you have on the local repository (the file that you want updated from the latest commit in the remote server)

    And then do a git pull

    Because the file is deleted, there will be no conflict

    0 讨论(0)
  • 2020-12-12 09:18
    git archive --format=zip --remote=ssh://<user>@<host>/repos/<repo name> <tag or HEAD> <filename> > <output file name>.zip
    
    0 讨论(0)
  • 2020-12-12 09:19

    Or git stash (if you have changes) on the branch you're on, checkout master, pull for the latest changes, grab that file to your desktop (or the entire app). Checkout the branch you were on. Git stash apply back to the state you were at, then fix the changes manually or drag it replacing the file.

    This way is not sooooo cool but it def works if you guys can't figure anything else out.

    0 讨论(0)
  • 2020-12-12 09:23

    It is possible to do (in the deployed repository)

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

    The fetch will download all the recent changes, but it will not put it in your current checked out code (working area).

    The checkout will update the working tree with the particular file from the downloaded changes (origin/master).

    At least this works for me for those little small typo fixes, where it feels weird to create a branch etc just to change one word in a file.

    0 讨论(0)
  • 2020-12-12 09:36

    Following code worked for me:

         git fetch
         git checkout <branch from which file needs to be fetched> <filepath> 
    
    0 讨论(0)
  • 2020-12-12 09:40

    With Git 2.23 (August 2019) and the new (still experimental) command git restore, seen in "How to reset all files from working directory but not from staging area?", that would be:

    git fetch
    git restore -s origin/master -- path/to/file
    

    The idea is: git restore only deals with files, not files and branches as git checkout does.
    See "Confused by git checkout": that is where git switch comes in)


    codersam adds in the comments:

    in my case I wanted to get the data from my upstream (from which I forked).
    So just changed to:

    git restore -s upstream/master -- path/to/file
    
    0 讨论(0)
提交回复
热议问题