Kiedy pracujesz w jakimś katalogu Git, jak możesz uzyskać nazwę repozytorium Git w jakimś repozytorium Git? Czy są jakieś polecenia Git?
# I did check out bar repository and working in somewhere
# under bar directory at this moment such as below.
$ git clone git://github.com/foo/bar.git
$ cd bar/baz/qux/quux/corge/grault # and I am working in here!
$ git xxx # <- ???
bar
git
repository
gipcompany
źródło
źródło
Odpowiedzi:
Cóż, jeśli jako nazwę repozytorium masz na myśli nazwę katalogu głównego Git (ten, który zawiera katalog .git), możesz uruchomić to:
git rev-parse --show-toplevel
Część daje ścieżkę do tego katalogu ibasename
paski pierwszą część ścieżki.źródło
.git
podkatalog, więc nie jest prawdą, że „jeśli dla nazwy repozytorium masz na myśli nazwę katalogu głównego git”.sed -n '1 p' test.ip | basename
basename`git rev-parse --show-toplevel
: / var / www "?? Jak zapewne widzisz, ta linia nie zadziała, ponieważ używasz `` wewnątrz ''git --git-dir=<some git repo>/.git rev-parse --show-toplevel
aGeneralnie nie możesz tego zrobić. Git nie dba o to, jak nazywa się twoje repozytorium git. Na przykład, możesz zmienić nazwę katalogu zawierającego repozytorium (takie z
.git
podkatalogiem), a git nawet tego nie zauważy - wszystko będzie dalej działać.Jeśli jednak go sklonowałeś, możesz użyć polecenia:
aby wyświetlić wiele informacji o oryginalnym pilocie, z którego sklonowałeś swoje repozytorium, i będzie zawierał oryginalny sklonowany adres URL.
Jeśli jednak usunąłeś link do oryginalnego zdalnego użycia
git remote rm origin
lub jeśli utworzyłeś to repozytorium za pomocągit init
, takich informacji jest po prostu niemożliwe do uzyskania - nigdzie ich nie ma.źródło
git branch
:) (aktywna gałąź będzie oznaczona gwiazdką*
).Nie ma potrzeby kontaktowania się z repozytorium, aby uzyskać nazwę, a nazwa folderu niekoniecznie musi odzwierciedlać nazwę zdalną.
Uważam, że jest to najdokładniejszy i najskuteczniejszy sposób uzyskania aktualnej nazwy repozytorium:
Powinno to działać od wersji Git 1.8.1.5. Wcześniej przestarzałe
git-repo-config
polecenie działałoby (już w Git 1.7.5).źródło
basename -s .git $(git --git-dir=/<project-path>/.git remote get-url origin)
W git v2.7.0 + , A komenda
get-url
została wprowadzona dogit-remote
komendy.Powłoka POSIX:
PowerShell:
źródło
.git
na końcu mojego ciągu używając tej metody, więc dodałem podział, aby go zdjąć:(git remote get-url origin | Split-Path -leaf).split('.')[0]
trim()
:def repo = powershell(returnStdout: true, script: "(git remote get-url origin | Split-Path -leaf).split('.')[0]" ).trim()
Inne odpowiedzi nadal nie będą działać, jeśli nazwa twojego katalogu nie odpowiada nazwie zdalnego repozytorium (a może). Możesz dostać prawdziwe nazwę repozytorium za pomocą czegoś takiego:
git remote show origin -n | grep "Fetch URL:" | sed -E "s#^.*/(.*)$#\1#" | sed "s#.git$##"
Zasadniczo dzwonisz
git remote show origin
, bierzesz adres URL repozytorium z pola „Pobierz URL:” i regex go, aby uzyskać część o nazwie: https://github.com/dragn/ neat-vimrc .gitźródło
git remote show origin -n
temu zapobiec..git
z innym wywołaniem dosed
, zaktualizowałem kod w odpowiedzi. W ten sposób zadziała, gdy adres URL nie kończy się na.git
.sed
działało lepiej na moim Mac OSX:git remote show origin -n | grep h.URL | sed 's/.*://;s/.git$//'
Jeśli próbujesz uzyskać nazwę użytkownika lub nazwę organizacji ORAZ nazwę projektu lub repozytorium na github, udało mi się napisać to polecenie, które działa dla mnie przynajmniej lokalnie.
Jest to pożądany wynik, podobnie jak
Vydia
nazwa organizacji igourami
nazwa pakietu. Połączone mogą pomóc uformować pełnąUser/Repo
ścieżkęźródło
Myślę, że jest to lepszy sposób na jednoznaczne zidentyfikowanie klonu repozytorium.
git config --get remote.origin.url
i sprawdzanie, czy pochodzenie pasujessh://your/repo
.źródło
Trochę za późno na to pytanie, ale jeśli:
Zobaczysz adres URL repozytorium, które będzie zawierać nazwę repozytorium:
źródło
Pełna nazwa repozytorium:
źródło
To podejście
git-remote
działało dobrze w przypadku pilotów HTTPS:Przykład
źródło
Oto funkcja bash, która wypisze nazwę repozytorium (jeśli zostało poprawnie skonfigurowane):
Wyjaśnienie:
Spowoduje
git rev-parse --git-dir
to wyświetlenie pełnej ścieżki do.git
katalogu bieżącego repozytorium. Przechowuje ścieżkę w$gitdir
.To jest wykonywane
cat ${gitdir}/description
, co powoduje wydrukowanie zawartości.git/description
bieżącego repozytorium. Jeśli poprawnie nazwałeś repozytorium, wypisze ono nazwę. W przeciwnym razie wydrukujeUnnamed repository; edit this file 'description' to name the repository.
Jeśli repozytorium zostało poprawnie nazwane, wydrukuj zawartość.
Inaczej...
Poinformuj użytkownika, że repozytorium nie miało nazwy.
Coś podobnego jest zaimplementowane w tym skrypcie .
źródło
Niestety wygląda na to, że Git nie ma wbudowanego takiego polecenia. Ale możesz łatwo dodać je samodzielnie, używając aliasów Git i trochę magii powłoki.
Jak wskazano w tej odpowiedzi , możesz użyć
git rev-parse --show-toplevel
aby wyświetlić katalog główny bieżącego folderu Git.Jeśli chcesz używać tego regularnie, prawdopodobnie wygodniej będzie zdefiniować go jako alias. Do tego używane
git config alias.root '!echo "$(git rev-parse --show-toplevel)"'
. Następnie możesz użyć,git root
aby zobaczyć folder główny repozytorium, w którym się aktualnie znajdujesz.Jeśli chcesz użyć innej nazwy podkomendy niż
root
, po prostu zamień drugą częśćalias.root
powyższego polecenia na dowolną.Aby uzyskać szczegółowe informacje na temat aliasów w Git, zobacz także
git config
stronę podręcznika .źródło
git config --add alias.root 'rev-parse --show-toplevel'
- nie ma potrzeby wrzucania powłoki do aliasu pojedynczego polecenia.Jeśli chcesz mieć całą nazwę repozytorium GitHub ('pełna nazwa') - użytkownik / repozytorium, i chcesz to zrobić w Rubim ...
źródło
To moje:
nie lepiej niż inne, ale zrobiłem z tego funkcję bash, więc mogę dodać zdalną nazwę, jeśli nie jest to źródło.
źródło
Po prostu stwierdzam, że w
.git
katalogu są informacje o repozytorium . Możesz więc po prostu obejrzećFETCH_HEAD
plik w terminalu, aby zobaczyć nazwę repozytorium:Przykład:
Wynik:
I
https://bitbucket.org/somebituser/some_repo.git
to nazwa twojego repozytoriumźródło
Ten działa całkiem dobrze z git-2.18.2 i można go uruchomić z zewnętrznego repozytorium git target:
basename -s .git $(git --git-dir=/<project-path>/.git remote get-url origin)
źródło
Możesz użyć: git remote -v
Dokumentacja: https://git-scm.com/docs/git-remote
źródło
git remote -v
po prostu zwraca jeden lub więcej adresów URL. Jak to odpowiada na pytanie?