2012-05-08 23 views
19

benim sunucuya (dirs/home/Andrew/Web ve /home/andrew/web/.git) de olmayan bir çıplak depo var, receive.denyCurrentBranch görmezden gelip oluşturulan kanca sonrası almaya ayarlayın: Ben sh .git/kanca/çalıştırdığınızda sonrası almaGit ödeme kanca sonrası alırsınız: " '' Değil git depo"

#!/bin/sh 
GIT_WORK_TREE=/home/andrew/web git checkout -f 

, her şey gayet iyi çalışıyor. Ancak, bilgisayarımdan zorladığımda şu hatayı alıyorum:

Bu sorunu nasıl çözebilirim? Ve sonunda çıplak repo geçiş yapmak zorunda kalmadan?

size

EDIT ederiz: İşte benim yeni post-alma kanca bu. Neden böyle kabul edilen cevapta tarif edilmiştir.

+0

Özellikle itmek için hangi komutu kullanıyorsunuz: uzak URL nedir? – Simon

+0

@Simon ben "git push kökeni" kullanmak ve benim uzaktan URL "[email protected]: Web" dir. – A123321

+0

[email protected]:/home/andrew/web'nin tam yolunu deneyebilirsiniz ama asıl sorunun, uzaktaki repo'nuzun çıplak olmadığını düşünüyorum. Sen itmek zorlamak için deneyebilirsiniz: Ben çıplak REPOS başka denediğim için çok – Simon

cevap

25

[Düzenle, Şubat 2017: Bu eski yanıt hala biraz ısınıyor, o yüzden birkaç not ekleyelim. (1) Bu tür canlı güncellemeler genellikle kötü bir fikirdir: neden yaptığınızı bildiğinizden ve kendi çalışmanızı gizlemeyeceğinizden emin olun. (2) Git yılında 2.3 yana, şimdi updateInstead için receive.denyCurrentBranch yapılandırabilir, artı bir kanca çimdik Git 2.4 ve sonrası. Ayrıntılar için bkz. the git config documentation.

Posta alma kancası . olarak ayarlanmış $GIT_DIR ile çalıştırılır. Bu, gitmenin .git/HEAD, .git/refs/heads/master, vb. Yerine ./HEAD, ./refs/heads/master, vb. Için arama yapmasına neden olur. Ancak, kancada $PWD'u değiştirmek için hiçbir şey yapmadığınız için (yine de gösterildiği gibi), kanca .git'da çalışır. alt dizini (/home/andrew/web/.git) ve dolayısıyla bu hata oldukça gizemli: . aslında geçerli bir git deposu olacak.

yol adı sonrası alma kanca olarak cd ..; git checkout -f kullanmaktır sabit kodlama önler biri standart numara. $GIT_DIR ayarının bir sorun haline geldiği yerdir, çünkü cd ..'dan sonra kanca hala çalışıyorsa (hala bu durumda) /home/andrew/web ve bu noktada $GIT_DIR. yerine .git olmalıdır. Bunun için standart düzeltme ayarlanmazsa GIT_DIR basitçe (aynı zamanda çalışacak .git olarak ayarlamayı).

Sizin sonrası elde etmedikleri (uygun kodlanmış yolu değişiklikleri ile), benim için çalışıyor gösterildiği gibi kanca. Sonra tekrar bir PC değil, Unix benzeri bir makineden itiyorum. .git alt dizininde dizinleri değiştiren başka bir şey olabilir mi? Bulunduğunuz yeri görmek için kancaya echo running in $PWD gibi bir şey yapabilirsiniz.

+1

TEŞEKKÜR EDERİZ! Bununla yaşlarımı geçirdim, kimse açıklayamadı. .git' 'için $ GIT_DIR'' Kurma ve 'dizinine cd'ing – A123321

+2

benim için çalıştı. Teşekkürler!Benim postalamamda – bkconrad

+3

'unset GIT_DIR' benim için çalıştı. –