2012-03-28 15 views
9

Sorun var çalışmıyor sonrası alırsınız.git doğru

#!/bin/bash 
cd /var/www/site 
git pull origin master 

benim yerel makinede 'git push kökenli asıl' yaptığınızda Ancak alıyorum: Belirli bir dizine cd 'sonrası alma' ve sonra şöyle dağıtmak için repo çekin güncelledik aşağıdaki:

Counting objects: 5, done. 
Delta compression using up to 2 threads. 
(etc..) 
remote: fatal: Not a git repository: '.' 

Oysa git pull origin master yaptığınızda /var/www/site için el cd ve zekice çalışır.

cevap

14

Kullanım unset GIT_DIR Yaklaşık GIT_DIR burada daha fazla bilgi görebilirsiniz

#!/bin/bash 
cd /var/www/site || exit 
unset GIT_DIR 
git pull origin master 
exec git-update-server-info 

şöyle. Git Loves the Environment

+0

Parlak. Bunun neden yapılması gerektiğini açıklıyor musunuz? – andy

+2

'GIT_DIR' çeşitli git komutları için ayarlayabileceğiniz ortam değişkenleri bir avuç biridir. Alım sonrası bir kancada, "$ GIT_DIR" her zaman (?) "." Olarak ayarlanır. Eğer 'Başka yerde cd' ise' git pull' hala $ GIT_DIR' .' 'ayarlı' görür ve .' 'de repo bulmayı bekler, oysa hareket ettik ve orada değil. Onu git geri "normal" davranış gidin yapar dışarı temizlenmesi (yerinde size 'cd'-ed için, ./. git'' bakarak). – torek

2

Başka bir seçenek de, komut dizindeki çalışma dizini ve git dizininden bahsedebilirsiniz.

git --work-tree=/home/user/repos/my_app --git-dir=/home/user/repos/my_app/.git <command> 

örn: ben gerekli, sadece ne

git --work-tree=/home/user/repos/my_app --git-dir=/home/user/repos/my_app/.git status