Komit riwayat pada repositori jarak jauh


206

Saya mencoba mengakses riwayat komit cabang pada repositori jarak jauh. Saya telah melihat dokumen tetapi tidak dapat menemukan informasi penting tentang cara mengakses riwayat komit repo jarak jauh menggunakan klien git lokal saya.

Jawaban:


252
git log remotename/branchname

Akan menampilkan log cabang jauh yang diberikan dalam repositori itu, tetapi hanya log yang telah Anda "ambil" dari repositori ke "salinan" pribadi dari repositori jarak jauh Anda.

Ingatlah bahwa klon repositori Anda akan memperbarui statusnya dari semua cabang jauh hanya dengan melakukan git fetch. Anda tidak dapat terhubung langsung ke server untuk memeriksa log di sana, yang Anda lakukan adalah mengunduh status server git fetchdan kemudian secara lokal melihat log dari cabang jauh.

Mungkin perintah lain yang bermanfaat adalah:

git log HEAD..remote/branch

yang akan menunjukkan kepada Anda komit yang ada di cabang jarak jauh, tetapi tidak di cabang Anda saat ini ( HEAD).


8
"Anda tidak dapat terhubung langsung ke server untuk memeriksa log di sana" - itulah masalah yang saya alami
Brian J

1
Saya hanya mendapatkan perubahan yang ditarik lokal ... perhatikan yang jauh, bahkan lakukan pengambilan sebelumnya.
Loenix

6
Ketika melakukan, git fetchAnda perlu menggunakan --alluntuk mengambil dari remote.
ocodo

25
Sayang sekali, jadi saya harus mengkloning objek senilai 2GB hanya untuk melihat log komit?
TWiStErRob

2
Hai @TWiStErRob Anda dapat mengurangi rasa sakit dengan mengelola jumlah data yang diambil dengan klon dangkal (lihat --depth di git-scm.com/docs/git-clone ), lalu kelola pengambilan dengan (lihat "dangkal" di git-scm .com / docs / git-fetch ).
qneill

66

NB. "origin" di bawah ini digunakan untuk mewakili hulu dari repositori hasil kloning, ganti "origin" dengan nama deskriptif untuk repo jarak jauh. "referensi jarak jauh" dapat menggunakan format yang sama dengan yang digunakan dalam perintah klon.

git remote add origin <remote reference>
git fetch
git log origin/master

2
@ user1795998 Repositori jarak jauh, URL Git, misalnyagit://git.somedomain.tld/some/repo
gertvdijk

1
Tidakkah Anda perlu menentukan <refspec>kapan mengambil (atau menggunakan fetch --all) jika Anda tidak melacak cabang apa pun di remote?
gertvdijk

1
Apa yang Anda maksud dengan "vendor proyek / diag"? Apakah itu folder di dalam repositori? Cabang lain?
LopSae

1
Repositori dapat memiliki banyak cabang, tetapi "proyek" bukan istilah yang terkait dengan git, dari sana kebingungan akan arti "proyek" dalam kasus ini. Namun, apa hubungannya dengan pertanyaan itu?
LopSae

1
Saya tidak percaya mungkin untuk melakukan ini di GIT. Anda harus mengkloning repositori jarak jauh itu sebelum Anda dapat mengeluarkan git log yang menentangnya.
user959690

12

Anda hanya dapat melihat log di repositori lokal, namun itu bisa menyertakan cabang yang diambil dari semua remote yang telah Anda set-up.

Jadi, jika Anda mengkloning repo ...

git clone git@gitserver:folder/repo.git

Ini akan menjadi default untuk origin/master.

Anda dapat menambahkan remote ke repo ini, selain dari originmari kita tambahkan production. Dari dalam folder klon lokal:

git remote add production git@production-server:folder/repo.git

Jika kita ingin melihat log yang productionperlu kita lakukan:

git fetch --all 

Ini diambil dari SEMUA remote (pengambilan default tanpa --allakan mengambil hanya dari origin)

Setelah mengambil kita bisa melihat log pada productionremote, Anda harus menentukan cabang juga.

git log production/master

Semua opsi akan berfungsi seperti yang mereka lakukan dengan log on cabang lokal.


12

Cara cepat untuk melakukan ini adalah mengkloning menggunakan --barekata kunci dan kemudian memeriksa log:

git clone --bare git@giturl tmpdir
cd tmpdir
git log branch

11

Saya tidak percaya ini mungkin. Saya percaya Anda harus mengkloning repo jarak jauh secara lokal dan melakukan git fetchdi atasnya sebelum Anda dapat mengeluarkan git logmenentangnya


1
bayangkan Anda sudah mengkloning repo ke lokal dan membuat beberapa perubahan. . maka Anda ingin memeriksa apakah ada yang berkomitmen pada repo jarak jauh
Chhorn Elit

2
Jika Anda mengubah jawaban ini menjadi "Tidak mungkin" maka ini adalah jawaban terbaik. Tidak ada cara untuk mengakses riwayat komit repo jarak jauh menggunakan klien git jarak jauh.
qneill


2

Saya tidak yakin kapan pemfilteran ditambahkan tetapi ini merupakan cara untuk mengecualikan gumpalan objek jika Anda hanya ingin mengambil riwayat / ref-log:

git clone --filter=blob:none --no-checkout --single-branch --branch master git://some.repo.git .
git log

Ini sempurna . Mengingat jawaban lain, akan luar biasa jika ini bisa menonjol di samping jawaban yang disediakan.
Eric Cousineau

0

Anda dapat dengan mudah mendapatkan log dari server jauh. Begini caranya:

(1) Jika menggunakan git via ssh - maka cukup login ke server jauh menggunakan git login dan kata sandi Anda - dan chdir folder jauh di mana repositori Anda ada - dan jalankan perintah "git log" di dalam repositori Anda di server jauh.

(2) Jika menggunakan git melalui protokol login standar Unix - maka cukup telnet ke server jauh Anda dan lakukan git log di sana.

Semoga ini membantu.


13
Untuk mengulangi, "Anda tidak bisa mendapatkan log dari server jauh, Anda harus login dan mendapatkan log menggunakan klien git lokal"
qneill

Hapus saja jawaban ini, itu tidak menjawab pertanyaan dan itu bukan bagaimana sebagian besar pengguna git tidak memiliki akses shell server
nhed

0

Inilah fungsi bash yang membuatnya mudah untuk melihat log pada remote. Dibutuhkan dua argumen opsional. Yang pertama adalah cabang , itu default untuk dikuasai . Yang kedua adalah remote , itu standar untuk pementasan .

git_log_remote() {
  branch=${1:-master}
  remote=${2:-staging}

  git checkout $remote/$branch
  git fetch
  git log
  git checkout -
}

contoh:

 $ git_log_remote
 $ git_log_remote development origin
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.