Git - git pull ile alma sonrası kanca “Geçerli bir git dizini bulunamadı”


17

Çok garip ama bir git deposu oluştururken ve bir alma sonrası kancası oluştururken:

echo "--initializing hook--"
cd ~/websites/testing
echo "--prepare update--"
git pull
echo "--update completed--"

kanca gerçekten çalışır, ama asla git çekin düzgün çalışmayı başaramaz:

6bfa32c..71c3d2a  master -> master
--initializing hook--
--prepare update--
fatal: Not a git repository: '.'
Failed to find a valid git directory.
--update completed--

şimdi kendime soruyorum, kanca sonrası-sonrası ile klon güncelleme yapmak nasıl mümkün?

Bu durumda süreçleri çalıştıran kullanıcı aynıdır ve kullanıcı klasöründeki her şey bu yüzden gerçekten anlamıyorum ... çünkü eğer manuel olarak girersem

cd ~/websites/testing
git pull

sorunsuz çalışıyor ...

bu konuda herhangi bir yardım çok takdir edilecektir

Çok teşekkürler

Yanıtlar:


25

Kanca çalışırken GIT_DIRve ( çalışma ağacı açıkça tanımlanmışsa) GIT_WORK_TREEayarlanır. Bu, çektiğinizin, değiştirdiğiniz dizindeki ikinci havuzla çalışmadığı anlamına gelir.

Deneyin git --git-dir ~/websites/testing/.git --work-tree ~/websites/testing pull; veya git ile repo-local ortamını şu şekilde kaldır:

unset $(git rev-parse --local-env-vars)

İnsan 1'de bu çevre değişkenleri hakkında daha fazla bilgi .


1
Bu Tobu için çok teşekkürler, gerçekten işe yarıyor, ben de onun hakkında daha fazla bilgi kontrol edeceğim. Şerefe
Zanona

6

Deneyimlediğim bir şey, post-update'--git-dir' kancasını kullanmanın harika çalıştı ama git hala eksik bir çalışma ağacı hakkında şikayet ediyordu ('--work-tree' kullanılmasına rağmen)

Kısacası, bu işe yaramadı:

git --git-dir /path/to/websites/testing/.git --work-tree /path/to/websites/testing pull

oysa bu işe yaradı:

cd /path/to/websites/testing
git --git-dir /path/to/websites/testing/.git pull


1

Bu çalışmıyor mu?

cd /home/smb/websites/testing
env -i git pull

Düzenlenen

Halen daha iyi

cd /home/smb/websites/testing
unset GIT_DIR
git pull

0

~ Yerine tam yolu denediniz mi?

cd /home/smb/websites/testing
git pull

0

Senaryo büyük olasılıkla çağrılır /bin/sh, ki bu anlaşılmaz ~. ~Bunun yerine tam yolunu deneyin .


0

İlk önerilen cevap doğrudur - bir kanca çalışırken GIT_DIR vb. Ancak, komut dosyasını başka bir depoda kullanabilmek istiyorsanız, GIT_DIR'i sıfırlayan sabit kodlar nedeniyle bu yöntem kusurludur. Onların ima ettiği gibi, diğer yol env'yi aşağıdaki gibi kullanarak değişkeni kaldırmaktır: env -i git reset --hard Açıkçası orada hangi komutu çalıştırdığınız size kalmış - önemli olan sadece 'env -i' biti .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.