Git:如何更新/签出远程原始主文件中的单个文件?
场景:
- 我在本地对单个文件进行了一些更改,并运行
git add
,git commit
和git push
- 该文件被推送到远程原始主存储库
- 我有另一个本地存储库,通过Capistrano与远程存储库的“remote_cache”方法部署
- 现在我不想部署整个应用程序,只是更新/检出单个文件。
请问,这是不是有可能与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
你可以做的是:
-
更新您的本地git回购:
git fetch
-
build立一个本地分支并签出:
git branch pouet && git checkout pouet
-
在这个分支上应用你想要的提交:
git cherry-pick abcdefabcdef
(abcdefabcdef是你想要应用的提交的sha1)
或者在你所在的分支上git stash(如果你有变化的话),checkout master,pull最新的修改,把这个文件抓到你的桌面(或整个应用程序)。 检查你所在的分支。 Git隐藏应用回到您所在的状态,然后手动修改这些更改或将其拖到replace文件。
这种方式并不是很酷,但如果你们不能弄明白什么,它就会起作用。
我想我已经find一个容易的黑客了。
删除本地存储库上的文件(要从远程服务器中的最新提交更新的文件)
然后做一个git pull
由于该文件被删除,不会有冲突