我对Git很陌生,如果我听起来像个总菜鸟那么道歉。
我最初运行以下命令:
git clone https://github.com/userx/projecty.git
我一直在我的工作站上进行更改,其中没有一个已上传。有一个文件已在github上更新,我想同步到我的工作站:
https://github.com/userx/projecty/blob/master/whatever/whatever.py
我已在本地对其进行了一些修改,但它们可能/应该被覆盖。我只希望在我的工作站上刷新一个文件而不触及我所做的任何其他事情。如何做任何想法将不胜感激。
谢谢!
答案 0 :(得分:2)
假设您只想在工作副本中覆盖该文件的内容(以便它在git status
的输出中显示为“已修改”),那么您可以这样做:
使用git fetch
更新本地存储库的远程跟踪分支。这不会修改任何本地分支,也不会修改您的工作副本:
git fetch --all
使用git show
从远程分支获取文件的副本,并通过重定向标准输出将其写入磁盘:
git show origin/master:whatever/whatever.py > whatever/whatever.py
通过指定origin/master
您正在从远程跟踪分支复制文件,该分支将是git fetch
中该文件的最新版本。您当然可以重定向标准输出以覆盖现有文件,如上所示,或者将输出写入其他位置。
git show
命令也接受其他格式:请参阅man gitrevisions
中的“指定修订”。
请注意,正如@bluefeet评论了他们的答案,如果您将此文件提交到本地分支,并且您的本地分支稍后要与远程主服务器合并,那么您本地复制的whatever/whatever.py
将是与远程跟踪分支的变化冲突。因此,通常情况下,您只能将此作为测试内容的临时措施,或者您以后无意将本地分支与远程主服务器合并。
答案 1 :(得分:0)
我建议采用这种方法:
# 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
应该这样做,让你处于良好的工作状态。