2012-03-12 148 views
9

pwd是“当前工作目录”。这是情况。git pull在指定位置的本地仓库(而不是pwd)

pwd:   /path/to/pwd/ 
git repository: /repo/path/.git/ 

我想从原点做一个git pull,但不改变我的当前目录。

为了澄清只是更多的情况下,我不太清楚,这是我想要的结果,但我想用一个命令来做到这一点,而不必更改目录:

$ cd /repo/path 
$ git pull origin master 
$ cd - 
+0

这是什么情况? (我只是好奇。) – KajMagnus 2017-04-08 05:46:31

+0

@KajMagnus这是5年前,我真的不记得了。可能是想用单线更新repo,所以我可以根据需要使用'^ r'重复运行它,并且不会搞乱目录堆栈,因为我经常使用'pushd','popd'和'cd -'。 – Matthew 2017-04-13 22:43:48

+1

可能重复[git --git-dir不按预期工作](http://stackoverflow.com/questions/1386291/git-git-dir-not-working-as-expected) – pjgranahan 2017-04-27 07:11:42

回答

18
git --work-tree=/repo/path --git-dir=/repo/path/.git pull origin master 
+0

这很难适用。你能举一个公共回购的例子吗? – Cognitiaclaeves 2016-09-06 19:55:49

+0

@Cognitiaclaeves,不确定你的意思是“难以申请”?刚刚尝试过,它“只是工作”。它应该与你有权访问的任何回购公开或不公开。 – 2017-03-05 20:43:29

4

庆典-c“cd/repo/path; git pull origin master”

+0

是否真的没有git选项为了这? Git的功能正在爆炸式增长,似乎很难相信你必须将你的工作目录放在版本库位置或其子目录中。 – Matthew 2012-03-12 19:06:30

+0

哦,我不知道。如果有一种方式,我全部耳朵! :)我只是想给你一个班轮。 – sethcall 2012-03-12 19:08:47

+0

不需要'bash -c',你可以用'(list)'在子shell中执行列表:'(cd/repo/path; git pull origin master)' – 2017-04-27 09:37:03