2011-07-19 28 views
16

Olası Çoğalt: Bazen
Is there a way to get to the git root directory in one command?Git'in en üst düzey çalışma dizininin ne olduğunu nasıl anlarım?

, ben Git çalışma dir içeride olduğumu git düşünme ile karıştı, ama bana ne üst düzey belli değil çalışma dizini (.git/ içeren) 'dir. (Muhtemelen, bu repo bir hatayla oluşturuldu.)

Alt dizinlerin içinde bir yerdeysem üst düzey Git repo dizinini nasıl bulabilirim? Güncel üst düzey çalışma dizininin ne olduğunu yazdırabilmek için git'u nasıl sorabilirim? Kullanışlı kalk böyle sorguları yapmak

git rev-parse --show-toplevel 

cevap

38

bu deneyin ; şimdi böyle benim basit sorgu yapabilirsiniz:

$ git find-git-dirs 
GIT_DIR=/home/imz/.git 
GIT_WORK_TREE= 
$ 

Ben ilk sorudan eksikliği tek şey artık sadece iç git repo yolunu basar, dir çalışan üst düzey baskı olduğunu dir ...

+0

Bunu işaretlediğiniz için teşekkürler; Yardımınız olmadan, revizyon belirtimlerini işleme koyduğunu öne sürdüğü için 'git-rev-parse' içine bakmayı tahmin etmem zor olurdu. BTW, 'git --work-tree' çalışmasına benzer bir şekilde çalışmamıza sevinirim. --exec-yolu [= ] ':" Hiçbir yol belirtilmezse, git geçerli ayarı basar "; En azından IMO, böyle bir özelliği aramak için mantıklı bir yer olurdu. –

+0

** Not ** '.git' dizininin içinde bu başarısız olur. Çözüm için işaretli çoğaltmaya bakın. –

+0

Bu komut ayrıca, bir alt modülden –

1

(Benim "git-shortcuts" koleksiyonunda git-find-git-dirs) basit bir senaryo yazdık:

#!/bin/bash 

# find-git-dirs -- A simple script to "find" (i.e., "print") the GIT_DIR, as assumed by Git. (Useful if you are in a subdir, and you are not sure about the top-level repo dir.) 

SUBDIRECTORY_OK=yes 
. "$(git --exec-path)/git-sh-setup" 

echo "GIT_DIR=$GIT_DIR" 

ve ~/bin/ koydu