Aku menarik sebuah proyek dari GitHub beberapa hari yang lalu. I'telah sejak menemukan bahwa ada beberapa garpu di GitHub, dan saya lupa perhatikan yang satu saya mengambil semula. Bagaimana saya bisa menentukan mana dari mereka garpu aku menarik?
Jika anda ingin hanya remote URL, atau jika anda tidak terhubung ke jaringan yang dapat menjangkau remote repo:
git config --get remote.origin.url
Jika anda memerlukan output penuh dan anda berada ** pada jaringan yang dapat menjangkau remote repo mana asal berada :
git remote show origin
Ketika menggunakan git clone(dari GitHub, atau sumber repositori untuk hal ini) nama default untuk sumber clone adalah "asal". Menggunakan git remote show
akan menampilkan informasi tentang nama remote. Beberapa baris pertama harus menunjukkan:
C:\Users\jaredpar\VsVim> git remote show origin
* remote origin
Fetch URL: [email protected]:jaredpar/VsVim.git
Push URL: [email protected]:jaredpar/VsVim.git
HEAD branch: master
Remote branches:
Jika anda ingin menggunakan nilai dalam script, anda akan menggunakan perintah pertama yang tercantum dalam jawaban ini.
Untuk mendapatkan jawabannya:
git ls-remote --get-url [REMOTE]
Ini lebih baik daripada membaca konfigurasi; merujuk ke halaman man git-ls-remote
:
--get-url
Memperluas URL yang diberikan remote repository dengan mempertimbangkan setiap
"url.<dasar>.bukan"
config setting (Lihatgit-config(1)
) dan keluar tanpa berbicara dengan remote.
Seperti yang ditunjukkan oleh @Jefromi, opsi ini telah ditambahkan di v1.7.5 dan tidak didokumentasikan sampai v1.7.12.2 (2012-09).
Dengan Git 2.7 (rilis januari 5th, 2015), anda memiliki lebih koheren solusi menggunakan git remote`:
git remote get-url origin
(bagus liontin dari git remote set-url asal <newurl>
)
Lihat melakukan 96f78d3 (16 Apr 2015) oleh Ben Boeckel (mathstuf
).
(Digabung dengan Junio C Hamano -- gitster
-- di melakukan e437cbd, 05 april 2015):
remote: tambahkan get-url subcommand
Memperluas
, bukan
adalah bagian darils-remote --url
dan tidak ada cara untuk memperluaspushInsteadOf
juga. Tambahkanget-url
subcommand untuk dapat query kedua serta cara untuk mendapatkan semua dikonfigurasi Url.
get-url:
Mengambil Url untuk remote. Konfigurasi untuk
bukan
danpushInsteadOf
diperluas di sini. Secara default, hanya URL pertama yang terdaftar.
- Dengan '
--push
', mendorong Url yang tanya daripada mengambil Url.- Dengan '
--semua
', semua Url untuk remote akan terdaftar.
Sebelum git 2.7, anda harus:
git config --get remote.[REMOTE].url
git ls-remote --get-url [REMOTE]
git remote show [REMOTE]
Untuk meringkas, setidaknya ada empat cara:
(Berikut adalah mencoba untuk resmi Linux repositori)
Setidaknya informasi:
$ git config --get remote.origin.url
https://github.com/torvalds/linux.git
dan
$ git ls-remote --get-url
https://github.com/torvalds/linux.git
Informasi lebih lanjut:
$ git remote -v
origin https://github.com/torvalds/linux.git (fetch)
origin https://github.com/torvalds/linux.git (push)
Informasi lebih lanjut:
$ git remote show origin
* remote origin
Fetch URL: https://github.com/torvalds/linux.git
Push URL: https://github.com/torvalds/linux.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
Jawaban singkat:
$ git remote show -n origin
atau, alternatif untuk pure cepat script:
$ git config --get remote.origin.url
Beberapa info:
$ git remote -v
akan mencetak semua remote (bukan apa yang anda inginkan). Anda ingin asal kan?$ git remote menunjukkan asal
jauh lebih baik, hanya menunjukkan asal
tapi waktu terlalu lama (diuji pada git versi 1.8.1.msysgit.1).Akhirnya saya: $ git remote show-n asal
, yang tampaknya menjadi yang tercepat. Dengan -n
itu tidak akan mengambil remote kepala (ALIAS cabang). Anda don't perlu jenis info, kan?
http://www.kernel.org/pub//software/scm/git/docs/git-remote.html
Anda dapat menerapkan | grep-i mengambil
untuk semua tiga versi untuk hanya menampilkan fetch URL.
Jika anda memerlukan kecepatan murni, kemudian gunakan:
$ git config --get remote.origin.url
Terima kasih untuk @Jefromi untuk menunjukkan bahwa.
Bagi saya, ini adalah cara yang lebih mudah (kurang mengetik):
$ git remote -v asal https://github.com/torvalds/linux.git (fetch) asal https://github.com/torvalds/linux.git (push)
sebenarnya, aku've yang menjadi alias
yang disebut dengan s
yang tidak:
git remote -v git status
Yang dapat anda tambahkan ke profil anda dengan:
alias s='git remote -v && git status'
Git URL akan berada di dalam Git file konfigurasi. Nilai sesuai dengan kunci url
.
Untuk Mac dan Linux menggunakan perintah di bawah ini:
cd project_dir
cat .git/config | grep url | awk '{print $3}'
Untuk Jendela yang terbuka di bawah ini file dalam editor teks apapun dan menemukan nilai kunci url
.
project_dir/.git/config
Catatan: Ini akan bekerja bahkan jika anda sedang offline atau git remote server telah diturunkan.
Aku tak pernah bisa mengingat semua parameter untuk perintah Git, jadi saya hanya menempatkan alias di `~/.gitconfig file yang lebih masuk akal untuk saya, sehingga saya dapat mengingatnya, dan itu mengakibatkan kurang mengetik:
[alias]
url = ls-remote --get-url
Setelah reload terminal, maka anda dapat cukup ketik:
> git url
Berikut adalah beberapa lebih banyak dari saya yang sering digunakan:
[alias]
cd = checkout
ls = branch
lsr = branch --remote
lst = describe --tags
Saya juga sangat merekomendasikan git-extras yang memiliki git info
perintah yang menyediakan informasi lebih rinci pada remote dan cabang-cabang lokal.
Pada dasarnya saya menggunakan:
git remote get-url origin
Ia bekerja untuk Git Bash command console atau CMD perintah console di Windows. Yang mengatakan, itu bekerja dengan versi 2.x Git.
Hulu's remote mungkin tidak bisa disebut "asal", jadi di sini's variasi:
remote=$(git config --get branch.master.remote)
url=$(git config --get remote.$remote.url)
basename=$(basename "$url" .git)
echo $basename
Atau:
basename $(git config --get remote.$(git config --get branch.master.remote).url) .git
Untuk lebih berguna variabel-variabel yang ada's:
$ git config -l
Untuk melengkapi jawaban yang lain: Jika remote untuk beberapa alasan telah berubah dan jadi doesn't mencerminkan original asal, pertama masuk di reflog (yaitu entri terakhir yang ditampilkan oleh perintah git reflog
) harus menunjukkan di mana repo awalnya kloning dari.
misalnya
$ git reflog | tail -n 1
f34be46 HEAD@{0}: clone: from https://github.com/git/git
$
(Ingatlah bahwa reflog dapat dibersihkan, sehingga ini isn't dijamin untuk bekerja.)
Dengan git remote menunjukkan asal
anda harus berada di proyek direktori. Tapi jika anda ingin menentukan Url dari mana pun
anda bisa menggunakan:
cat <path2project>/.git/config | grep url
Jika anda'll perlu perintah ini sering, anda bisa menentukan alias di anda .bashrc
atau .bash_profile
dengan MacOS.
alias giturl='cat ./.git/config | grep url'
Jadi anda hanya perlu memanggil giturl
di Git root folder dalam rangka untuk hanya mendapatkan URL-nya.
Jika anda memperpanjang alias ini seperti ini
alias giturl='cat .git/config | grep -i url | cut -d'=' -f 2'
anda hanya mendapatkan yang polos URL tanpa sebelumnya
"url="
di
anda mendapatkan lebih banyak kemungkinan untuk penggunaan:
Contoh
Pada Mac, anda bisa menelepon terbuka $(giturl)
untuk membuka URL di browser standar.
Atau chrome $(giturl)
untuk membukanya dengan browser Chrome di Linux.
Cara yang sederhana adalah untuk membuka `.git/config file:
cat .git/config
Untuk mengedit:
vim .git/config
atau
nano .git/config
Jika anda tidak tahu nama dari hulu remote untuk cabang, anda bisa mencarinya terlebih dahulu dengan memeriksa hulu cabang nama yang saat ini cabang yang dibangun di atas. Menggunakan git rev-parse` seperti ini:
git rev-parse --symbolic-full-name --abbrev-ref @{upstream}
Hal ini menunjukkan bahwa hulu cabang yang merupakan sumber untuk saat ini cabang. Hal ini dapat diurai untuk mendapatkan nama remote seperti ini:
git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1
Sekarang mengambil dan pipa itu untuk git ls-remote
dan'akan mendapatkan URL dari hulu jarak jauh yang merupakan sumber dari cabang saat ini:
git ls-remote --get-url \
$(git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1)
Sekarang perlu dicatat, bahwa ini belum tentu sama sebagai sumber repositori jauh yang dikloning dari. Dalam banyak kasus, namun itu akan cukup.