场景:
- 我在本地对单个文件进行了一些更改并运行
git add
,git commit
并且git push
- 该文件被推送到远程源主存储库
- 我有另一个本地存储库,它通过 Capistrano 使用来自该远程存储库的“remote_cache”方法部署
- 现在我不想部署整个应用程序,而只是更新/签出单个文件。
这对git有可能吗?我找不到任何可行的方法,也无法弄清楚。使用 SVN,我刚刚做了svn up file
,瞧。
场景:
git add
,git commit
并且git push
这对git有可能吗?我找不到任何可行的方法,也无法弄清楚。使用 SVN,我刚刚做了svn up file
,瞧。
可以做(在部署的存储库中)
git fetch
git checkout origin/master -- path/to/file
提取将下载所有最近的更改,但不会将其放入您当前签出的代码(工作区)中。
签出将使用下载的更改 ( origin/master
) 中的特定文件更新工作树。
至少这对我来说适用于那些小的错字修复,在那里创建分支等只是为了更改文件中的一个单词感觉很奇怪。
以下代码对我有用:
git fetch
git checkout <branch from which file needs to be fetched> <filepath>
使用 Git 2.23(2019 年 8 月)和新的(仍然是实验性的)命令git restore
,在“如何从工作目录而不是暂存区重置所有文件? ”中看到,这将是:
git fetch
git restore -s origin/master -- path/to/file
这个想法是:git restore
只处理文件,而不是文件和分支git checkout
。
请参阅“ Confused bygit checkout
”:这就是git switch
进来的地方)
就我而言,我想从上游(我从中分叉)获取数据。
所以就改成:git restore -s upstream/master -- path/to/file
git archive --format=zip --remote=ssh://<user>@<host>/repos/<repo name> <tag or HEAD> <filename> > <output file name>.zip
你可以做的是:
更新您的本地 git 存储库:
git fetch
建立一个本地分支并在其上结帐:
git branch pouet && git checkout pouet
在这个分支上应用你想要的提交:
git cherry-pick abcdefabcdef
(abcdefabcdef 是您要应用的提交的 sha1)
简直对我有用
git checkout origin/develop file_name.php
或 git stash(如果您有更改)在您所在的分支上,结帐 master,拉取最新更改,将该文件抓取到您的桌面(或整个应用程序)。检查您所在的分支。Git stash 应用回您所处的状态,然后手动修复更改或将其拖动以替换文件。
这种方式不是很酷,但如果你们想不出其他任何东西,它就可以正常工作。
我想我找到了一个简单的破解方法。
删除本地存储库中的文件(要从远程服务器中的最新提交更新的文件)
然后做一个git pull
因为文件被删除了,所以不会有冲突