场景:
我在本地单个文件中做了一些更改,并运行git add, git commit和git push 该文件被推送到远程源主存储库 我有另一个本地存储库,通过Capistrano使用“remote_cache”方法从该远程存储库部署 现在我不想部署整个应用程序,而只是更新/签出单个文件。
这在某种程度上是可能的git?我没能找到任何可行的方法,也没能搞清楚。对于SVN,我只做了SVN up文件,瞧。
场景:
我在本地单个文件中做了一些更改,并运行git add, git commit和git push 该文件被推送到远程源主存储库 我有另一个本地存储库,通过Capistrano使用“remote_cache”方法从该远程存储库部署 现在我不想部署整个应用程序,而只是更新/签出单个文件。
这在某种程度上是可能的git?我没能找到任何可行的方法,也没能搞清楚。对于SVN,我只做了SVN up文件,瞧。
当前回答
或者git stash(如果你有变化)在你所在的分支,checkout master,拉取最新的变化,抓取该文件到你的桌面(或整个应用程序)。检查您所在的分支。Git stash应用回您所在的状态,然后手动修复更改或拖动它替换文件。
这种方法不是很酷,但如果你们想不出其他方法的话,它绝对管用。
其他回答
我想我找到了一个简单的破解方法。
删除本地存储库上的文件(希望从远程服务器中的最新提交更新的文件)
然后再来个"少不再来
因为删除了文件,所以不会有冲突
git archive --format=zip --remote=ssh://<user>@<host>/repos/<repo name> <tag or HEAD> <filename> > <output file name>.zip
以下代码为我工作:
git fetch
git checkout <branch from which file needs to be fetched> <filepath>
git checkout master
git pull --rebase
git checkout dev
git checkout master ./app/file.py
如果您在dev分支中开发,则在替换文件后合并主分支并推送它。 例如,替换app/file.py。
使用Git 2.23(2019年8月)和新的(仍处于实验阶段)命令Git restore,参见“如何从工作目录重置所有文件,而不是从暂存区重置?”,这将是:
git fetch
git restore -s origin/master -- path/to/file
其思想是:git恢复只处理文件,而不像git签出那样处理文件和分支。 参见“git checkout的困惑”:这就是git开关的作用)
Codersam在评论中补充道:
在我的情况下,我想从我的上游(从我分叉)获得数据。 所以改成: Git恢复-s upstream/master——path/to/file