Git:如何更新/签出远程原始主文件中的单个文件?

场景:

  1. 我在本地对单个文件进行了一些更改,并运行git addgit commitgit push
  2. 该文件被推送到远程原始主存储库
  3. 我有另一个本地存储库,通过Capistrano与远程存储库的“remote_cache”方法部署
  4. 现在我不想部署整个应用程序,只是更新/检出单个文件。

请问,这是不是有可能与Git? 我无法find任何可行的工作,也无法找出答案。 用SVN我只是做了svn up file ,瞧。

我会很高兴的任何帮助,谢谢!

Git不适用于单个文件。 我不知道remote_cache设置,所以我不能对此发表评论。 然而,在git中,你必须clone整个存储库,对文件进行更改,提交(这是一个本地操作),然后将更改推回。

在你的设置中,你应该能够简单地从主存储库(称之为M)将你所做的更改提交给你的capistrano部署的repo(称之为B)。 我不明白为什么你有这个问题。 如果B是完全不同的,你不想把它搞乱,你可以把M作为一个remote B添加,然后cherry-pick你感兴趣的特定提交(即更新你正在讨论的文件)变成B.会为你工作吗?

有可能(在部署的存储库中)

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

抓取将下载所有最近的更改,但不会将其放在当前已检出的代码(工作区)中。

结帐将更新与下载的变化( origin/master )的特定文件的工作树。

至less这对我这些小小的错字修复,我觉得奇怪的是创build一个分支等只是改变一个文件中的一个字。

 git archive --format=zip --remote=ssh://<user>@<host>/repos/<repo name> <tag or HEAD> <filename> > <output file name>.zip 

你可以做的是:

  1. 更新您的本地git回购:

    git fetch

  2. build立一个本地分支并签出:

    git branch pouet && git checkout pouet

  3. 在这个分支上应用你想要的提交:

    git cherry-pick abcdefabcdef

    (abcdefabcdef是你想要应用的提交的sha1)

或者在你所在的分支上git stash(如果你有变化的话),checkout master,pull最新的修改,把这个文件抓到你的桌面(或整个应用程序)。 检查你所在的分支。 Git隐藏应用回到您所在的状态,然后手动修改这些更改或将其拖到replace文件。

这种方式并不是很酷,但如果你们不能弄明白什么,它就会起作用。

我想我已经find一个容易的黑客了。

删除本地存储库上的文件(要从远程服务器中的最新提交更新的文件)

然后做一个git pull

由于该文件被删除,不会有冲突