I am working on a site with a server running Git. I am using Git for deployment (not GitHub). This was set up prior to my involvement using a hook method, and I referred to this question and entered the commands below, but it didn't work.
How do I pull a single file from the server? For instance, if I wanted to update my local file index.php? git pull index.php
?
It is possible to do (in the deployed repository):
Followed by:
I was looking for slightly different task, but this looks like what you want:
I mean, if you want to fetch
path/to/file.xz
, you will setDIR_NAME
topath/to
andFILE_NAME
tofile.xz
. So, you'll end up with something likeAnd nobody keeps you from any other form of unpacking instead of
tar xO
of course (It was me who need a pipe here, yeah).This can be the solution:
Thanks.
This is assuming you are pulling the file from origin/master.
This scenario comes up when you -- or forces greater than you -- have mangled a file in your local repo and you just want to restore a fresh copy of the latest version of it from the repo. Simply deleting the file with /bin/rm (not git rm) or renaming/hiding it and then issuing a
git pull
will not work: git notices the file's absence and assumes you probably want it gone from the repo (git diff
will show all lines deleted from the missing file).git pull
not restoring locally missing files has always frustrated me about git, perhaps since I have been influenced by other version control systems (e.g. svn update which I believe will restore files that have been locally hidden).git reset --hard HEAD
is an alternative way to restore the file of interest as it throws away any uncommitted changes you have. However, as noted here, git reset is is a potentially dangerous command if you have any other uncommitted changes that you care about.The
git fetch ... git checkout
strategy noted above by @chrismillah is a nice surgical way to restore the file in question.This windows batch works regardless of whether or not it's on GitHub. I'm using it because it shows some stark caveats. You'll notice that the operation is slow and traversing hundreds of megabytes of data, so don't use this method if your requirements are based on available bandwidth/R-W memory.
sparse_checkout.bat
=>