Uzak (başlangıç) Git deposundaki değişiklikler nasıl kontrol edilir?


249

Soru

Aşağıdaki iş akışını yapmak için Git komutları nelerdir?

senaryo

Bir depodan klonladım ve yerel depoma kendi taahhütlerimi yaptım. Bu arada meslektaşlarım uzak depoya taahhütte bulundular. Şimdi şunu yapmak istiyorum:

  1. Uzak depoda başka kişilerden yeni taahhütlerin olup olmadığını kontrol edin, yani origin?

  2. Benim son çekme beri uzak depo üzerinde 3 yeni onaylatabilirsiniz vardı Say, ben yani fark uzaktan deponun kaydedilmesini istiyoruz HEAD~3ile HEAD~2, HEAD~2birlikte HEAD~1ve HEAD~1birlikte HEAD.

  3. Neyin uzaktan değiştiğini öğrendikten sonra, diğerlerinden en son taahhütleri almak istiyorum.

Bulgularım şimdiye kadar

2. adımda İçin: Ben şapka gösterimini biliyorum HEAD^, HEAD^^vb ve tilde gösterimi HEAD~2, HEAD~3vb

Adım 3 için: Yani, sanırım, sadece bir git pull.



@Daniele bağlandığınız cevap mükemmel ve hatta özelleştirilebilir bir bash betiği ile birlikte geliyor. +1
gorbysbm

Yanıtlar:


255

Yapabilirsin git fetch originson sürüme noktasına deposundaki uzak şube güncellemek için. Uzaktan kumandaya karşı bir fark için:

git diff origin/master

Evet, düzeltme işareti kullanabilirsiniz.

Uzaktan değişiklikleri kabul etmek istiyorsanız:

git merge origin/master

34
Fark ters görünüyor. Kullanımı daha kolay buluyorum, git diff HEAD origin/masterböylece fark uzaktan değişiklikleri kabul edersem ne uygulanacağını gösteriyor.
cbliard

2
"git getirme kaynağı" ve "git show-branch * master" benim için yararlıydı.
Léa Massiot

159
git remote update && git status 

Bu Bulunan cevap için çekme Git ihtiyaç olmadığını kontrol edin

git remote updateuzaktan referanslarınızı güncel hale getirmek için. Ardından, aşağıdakilerden biri gibi birkaç şeyden birini yapabilirsiniz:

  1. git status -unoizlediğiniz dalın önde mi, arkasında mı yoksa ayrışmış mı olduğunu söyleyecektir. Hiçbir şey söylemiyorsa, yerel ve uzak aynıdır.

  2. git show-branch *master adları master ile biten tüm şubelerde (örn. master ve orijin / master) taahhütleri gösterecektir.

Birlikte kullanırsanız -v, git remote updatehangi dalların güncellendiğini görebilirsiniz, böylece başka komutlara ihtiyacınız yoktur.


Yeterli değil. Daha git pull <remote> <branch>sonra itmeye ihtiyaç duyduğum anda bir şey yapmalıyım , çünkü yerel şubemin ucu uzak muadilinin arkasındaydı.
Overdrivr

3
@Overdrivr, soruları yerel şubeye vermeden önce değişiklikleri kontrol etmenin bir yolunu sorar. bu nedenle, evet, değişiklikleri kontrol ettikten sonra yerel şubenizi güncellemeniz gerekir.
Rajani Karuturi

Uzaktan kumandanın menşei mi yoksa akış yukarı mı?
vikramvi

1
Bu -v seçeneği çalışmıyor. For git remote update -vI goterror: unknown switch `v'
Shad

1
@Shad git remote -v updateyapmamalısıngit remote update -v
Rajani Karuturi

34

"Kökeni" olup bitenler hakkında sentetik bir görüşe sahip olmanın iyi bir yolu:

git remote show origin

11
Ama bu komut bana son çekmemden bu yana "orijin" konusunda kaç tane taahhüt olduğunu göstermiyor, değil mi? Anlama şekli "git uzaktan gösteri kökenli" yerel bir işlemdir ve bilgi almak için ağ üzerinden geçmez.
Mart'ta Lernkurve

24

Sadece kullanıyorum

git remote update
git status

İkincisi daha sonra yerelimin arkasında kaç tane taahhüt olduğunu bildirir. (varsa)

sonra

git pull origin master

benim yerel güncel getirmek için :)


13

Benim normal sorum daha ziyade "repo yeni veya değiştirilmiş bir şey" yani ne değişti kullanışlı geliyor. Buldum burada .

git whatchanged origin/master -n 1

1
asla yeni bu komut yoktu. Teşekkürler. aradığım şey bu
Saurabh Jain

11

Bir potansiyel çözüm

Sayesinde Alan Haggai Alavi çözümü aşağıdaki potansiyel iş akışı ile geldi:

Aşama 1:

git fetch origin

Adım 2:

git checkout -b localTempOfOriginMaster origin/master
git difftool HEAD~3 HEAD~2
git difftool HEAD~2 HEAD~1
git difftool HEAD~1 HEAD~0

Aşama 3:

git checkout master
git branch -D localTempOfOriginMaster
git merge origin/master

13
Uzaktan kumandanın revizyonları arasındaki fark için neden geçici bir dal oluşturmalısınız? sadecegit diff origing/master^ origing/master^^
Pablo Marin-Garcia

@ PabloMarin-Garcia: Teşekkürler. O zamanlar bunu bilmiyordum.
Lernkurve

2

git statusher zaman bir getirme işleminden sonra bile master ve orijin / master arasındaki farkı gösterir. Kombinasyonun git fetch origin && git statusçalışmasını istiyorsanız, yerel şube ve orijin arasında izleme bilgilerini belirtmeniz gerekir:

# git branch --set-upstream-to=origin/<branch> <branch>

Master şube için:

git branch --set-upstream-to=origin/master master

0

şimdiye kadar önerilmedi çünkü ... ve ben oldukça yararlı buluyorum ...

sadece kullanıyorum

git fetch origin

uzaktan değişiklikleri almak için, ve sonra --all argümanını içeren güzel gitk aracıyla ( https://git-scm.com/docs/gitk ) hem yerel hem de bekleyen uzak taahhütleri (ve ilişkili değişiklikleri) görüntüleyebilirim

gitk --all
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.