diff
Yerel bir şube ile uzak bir şube arasındaki bağlantıyı nasıl görebilirim ?
git diff HEAD origin/HEAD
farklı bir uzak şubeye işaret ediyor gibi görünüyordu. Tam şube adını kullanmak beklendiği gibi çalışır.
diff
Yerel bir şube ile uzak bir şube arasındaki bağlantıyı nasıl görebilirim ?
git diff HEAD origin/HEAD
farklı bir uzak şubeye işaret ediyor gibi görünüyordu. Tam şube adını kullanmak beklendiği gibi çalışır.
Yanıtlar:
Uzaktan izleme dallarını güncellemek için git fetch
önce yazmanız ve ardından şunları yazmanız gerekir :
git diff <masterbranch_path> <remotebranch_path>
Şunları yapabilirsiniz git branch -a
sonra listeden şube adı seçmek (uzaktaki) tüm dallarını listelemek için (sadece kaldırmak remotes/
uzaktan şube adından.
Örnek: git diff master origin/master
(burada "ana" yerel ana dal ve "başlangıç / ana" uzak, yani başlangıç ve ana daldır.)
git fetch
)
[diff] tool = vscode [difftool] prompt = false [difftool "vscode"] cmd = \"C:\\Program Files (x86)\\Microsoft VS Code\\Code.exe\" \"$LOCAL\" \"$REMOTE\" --diff --wait trustExitCode = false
ekleyin code.exe dosyasının yolunun doğru olduğundan emin olun.
git diff <local branch> <remote>/<remote branch>
Örneğin git diff master origin/master
, veyagit diff featureA origin/next
Tabii için gelmiş söyledi dalı uzaktan izleme yapmanız gerekiyorsa git fetch
ilk; ve uzak depodaki şubeler hakkında güncel bilgilere sahip olmanız gerekir.
git diff <remote>/<remote branch> <local branch>
uzak repo için itme gücümün ne yapacağını görmek için yapıyorum.
git diff origin
Yukarı akış şubenizle karşılaştırırsanız daha da kısa olanı yeterlidir.
git fetch
başlangıçta ekleyin , bu benim gibi yeni başlayanlar için sorun yaratıyor
git diff <remote>/<remote branch> <local branch>
? Aksi takdirde, bilgisayarımda eklenen ve silinenleri alıyorum (git sürüm 2.7.0.windows.2)
İlk tip
git branch -a
kullanılabilir şubelerin listesini almak için. Çıktıda şöyle bir şey görebilirsiniz:
* master
remotes/main/master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/mt
remotes/upstream/master
remotes/upstream/mt
Sonra farkı göster
git diff --stat --color remotes/main/master..origin/master
git diff remotes/main/master..origin/master
...
yerine ..
?
git log origin/my_branch..
alacak HEAD
, çoğunlukla ne demek istediğimi yapıyorum .
fatal: bad revision
ya da daha fazla sonuç veren tek cevap için teşekkürler fatal: ambiguous argument
. Tek istediğim, aynı dosyadaki farkı başka bir şubeden görmekti, sormak için çok mu fazla? Evet, evet öyleydi. :-) git diff remotes/origin/<base branch> <current branch> -- <filename>
git 1.8.3.1 üzerinde harika çalışıyor
Belirli bir daldaysanız ve onu izlediğiniz bir yukarı akış dalıyla karşılaştırmak istiyorsanız,
git diff @{upstream}
yukarı akışınız ayarlanmadıysa (genellikle durum, yorumlarda Arijoon'a teşekkürler )
git diff @{push}
Bu cevabın izniyle, revizyonları belirtmek için git dokümanında şunlar bulunur :
<branchname>@{upstream}
, örneğinmaster@{upstream}
, Bir dal adının@{u}
soneki@{upstream}
(kısa form<branchname>@{u}
), tarafından belirtilen dalınbranchname
, (branch.<name>.remote
ve ile yapılandırılmışbranch.<name>.merge
) üzerine oluşturulacak şekilde ayarlanmış dalı ifade eder . Eksikbranchname
olan, geçerli olanı varsayılan olarak kullanır.
git diff @ @{upstream}
. Ekstra @
, HEAD
şu anda bulunduğunuz yer, bu nedenle HEAD
şubenizin izlediği yukarı akışla karşılaştırıyorsunuz . @{push}
fatal: ambiguous argument '@upstream': unknown revision or path not in the working tree
. git diff @\{upstream\}
Bunun yerine kullanmak zorunda kaldı . 😥
git fetch
, aksi takdirde bu hiçbir şey yapmaz, çıktı göstermez; repo kaynağındaki bir dosyayı silerek test edildi ve bu komutu yerel olarak çalıştırdı. .. sadece getirdikten sonra çalışır.
Ben çıktı daha iyi anlıyorum:
git diff <remote-tracking branch> <local branch>
bu bana ne bırakılacağını ve yerel şubeyi itersem ne ekleneceğini gösterir. Tabii ki aynı, sadece ters, ama benim için daha okunabilir ve ne olacağına bakmak daha rahat.
Kolay yol:
git fetch
git log -p HEAD..FETCH_HEAD
Bu, önce varsayılan uzaktan kumandanızdaki (başlangıç noktanız) değişiklikleri getirecektir. Bir repoyu klonladığınızda bu otomatik olarak oluşturulur. Ayrıca açık olabilir: git fetch origin master
.
Ardından git günlüğü, geçerli dalınızı yeni getirilen dalla karşılaştırmak için kullanılır. ( -p
(Yama oluştur) seçeneği farkları gösterir .)
Ben böyle yaparım.
#To update your local.
git fetch --all
bu uzaktan kumandadan her şeyi alır, bu yüzden farkı kontrol ettiğinizde, farkı uzak dal ile karşılaştırır.
#to list all branches
git branch -a
Yukarıdaki komut tüm dalları gösterecektir.
#to go to the branch you want to check difference
git checkout <branch_name>
#to check on which branch you are in, use
git branch
(or)
git status
Şimdi, farkı aşağıdaki gibi kontrol edebilirsiniz.
git diff origin/<branch_name>
bu yerel şubenizi uzak şubeyle karşılaştırır
Çalışma dalınızın gelişim olmasına ve yerel geliştirme dalı ile uzaktan geliştirme dalı arasında ayrım yapmak istemesine izin verin, bu durumda sözdizimi aşağıdaki gibi olmalıdır git diff remotes/origin/development..development
veya
git fetch origin
git diff origin/development
tl; dr :git diff <local branch> <remote branch>
Kabuk üzerinde git kullanırken, önce etrafa bakarak kendimi yönlendirmek istiyorum. İşte tüm dalları gösterme komutu
$ git branch -a # (or git branch --all)
* my-branch
master
remotes/origin/some-branch
remotes/origin/HEAD -> origin/master
remotes/origin/my-branch
remotes/origin/some-other-branch
remotes/origin/master
Burada iki yerel şubesi (varsa my-branch
ve master
(uzaktan) ve 4 some-branch
, some-other-branch
,master
, vemy-branch
).
Ayrıca, yanındaki yıldız işareti my-branch
şu anda o dalda olduğumu gösterir (ayrıca şunu bildirirsiniz git status
:On branch my-branch.
.
Not: git bash kabuğundaki uzak dallar kırmızı, yerel olanlar yeşil olarak gösterilir.
Yalnızca uzak dalları göstermek istiyorsanız :
$ git branch -r # (or git branch --remotes)
origin/some-branch
origin/HEAD -> origin/master
origin/my-branch
origin/some-other-branch
origin/master
Yalnızca yerel şubeleri göstermek için kullanabilirsiniz, git branch -l
ancak bu tamamen farklı bir komuttur. To yerel şubeleri göstermek kullanımını git branch
hiçbir seçenekleri ile
$ git branch
* my-branch
master
Temel şube seçeneklerinin gözden geçirilmesini tamamlamak --list
için, filtrelemeye izin vermeyi beklediğinizden farklıdır . Bunun gibi bir desenle kullanın:
$ git branch --list 'my*'
* my-branch
Ayrıca --list
seçeneklerle birleştirebilir -a
ve -r
deseninizi buna göre uyarladığınızdan emin olun ( unutmayın: uzak dallar "uzaktan kumandalar" ile başlar ). Misal:
# this will show all branches (local & remote) that start with my
$ git branch --list 'my*' -a
* my-branch
# better: the pattern includes the remote
$ git branch --list '*my*' -a
* my-branch
remotes/origin/my-branch
Dokümanlar: https://git-scm.com/docs/git-branch
Şimdi tüm mevcut olanlardan herhangi iki dalı karşılaştırabilirsiniz (iki yerel veya iki uzaktan kumanda da karşılaştırabilirsiniz).
Burada yerel uzaktan kumanda ile karşılaştırıyorum my-branch
, onlar senkronize böylece herhangi bir çıkış almazsınız:
$ git diff my-branch remotes/origin/my-branch
Not: dalların tam isimlerini tırnak işareti olmadan vermelisiniz.
Ayrıca yerel my-branch
ile uzaktan kumandayı karşılaştırabilirim master
. Uzaktan kumandayı my-branch
ana dalda birleştirilmediğinden burada bazı çıktılar alıyorum .
$ git diff my-branch remotes/origin/master
diff --git a/src/controllers/call.controller.js b/src/controllers/call.controller.js
index fd79b98..df3d798 100644
--- a/src/controllers/call.controller.js
+++ b/src/controllers/call.controller.js
@@ -261,7 +261,7 @@ function callController() {
/*
* Function: doCall
[ . . . ]
Farkı sadece dosyaların adları değişti olarak görmek istiyorsanız şunu kullanın::
git diff --name-status <remote-branch> <local-branch>
,
aksi takdirde bu iki dal arasındaki tüm farkları gösterir:
git diff <remote-branch> <local-branch>
Şimdiki dalınızı ve istediğiniz bir şeyi karşılaştırıyorsanız, kısa bir cevap git pull
.
git fetch
git diff FETCH_HEAD
İlk komut, hangi uzak dalın geçerli dalınıza karşılık geldiğini bulur. FETCH_HEAD
Referansta bu hesaplamanın bir yapaylığı . Sonra ikinci komut bu başvuruyu geçerli dalınızla karşılaştırmak için kullanır.
Zaten bu sorunun birkaç cevabı olduğunu biliyorum ama çoğunu denerken garip bir hata alıyordum.
Benim durumumda ben ikinci uzaktan denilen heroku
olduğunu değilorigin
ve ben çalıştırmaya çalışırken bu hata var senkronize olmadığı için git diff master heroku/master
:
fatal: ambiguous argument 'heroku/master': unknown revision or path not in the working tree.
veya diğer yaklaşımı denerken git diff master..heroku/master
:
fatal: bad revision 'master..heroku/master'
Çözüm, benim durumumda, git fetch
çalıştırmadan önce uzak addan açıkça bahsediyordu git diff
:
$ git fetch heroku
$ git diff master heroku/master
Bu aynı konuda başkalarına yardımcı umuyoruz.
git difftool <commit> .
Bu, istediğiniz taahhüdü yerel dosyalarınızla karşılaştırır. Sonundaki noktayı unutmayın (yerel için).
Örneğin, yerel dosyalarınızı bazı taahhütlerle karşılaştırmak için:
git difftool 1db1ef2490733c1877ad0fb5e8536d2935566341.
(ve yeni taahhütlerle karşılaştırılması gerekmedikçe git getirmeye ihtiyacınız yoktur)
Misal
git diff 'master' 'testlocalBranch'
Eğer webstorm gibi bir editör kullanıyorsanız, dosya seçimi ile dalın karşılaştırmasını sağ tıklayabilir ve dalınızı yazabilir / seçebilirsiniz.
VS 2019'da sadece FETCH kodunu çekmeyin.
Ben de öyle yaptım. Karşılaştırmanın Ötesinde kullanabilmem için .gitconfig dosyasına aşağıda eklendi
File location: C:\Users\[username]\.gitconfig
Aşağıdan eklendi
[diff]
tool = bc
[difftool "bc"]
path = c:/Program Files/Beyond Compare 4/bcomp.exe
Komut istemini açın ve çalışma dizinine gidin. Yerel DEV dalını uzak DEV dalıyla karşılaştırmak için aşağıda verdim
git difftool dev origin/dev --dir-diff
Bu, Karşılaştırmanın Ötesinde açılır ve farklı dosyaları olan dizinleri açar. Hiçbir değişiklik olmazsa Karşılaştırmanın Ötesinde başlamaz.
Ana dalımda herhangi bir değişiklik olduğunu merak ediyorum ...
git ödeme yöneticisi
git durumu
git şubesi -a
- ana
uzaktan kumandalar / kökeni / ana
git diff orijin / master
git config alias.udiff 'diff @{u}'
git fetch # Do this if you want to compare with the network state of upstream; if the current local state is enough, you can skip this
git udiff
Bu, başlığınızdaki soruya cevap verir ("uzaktan kumandası"); "bir uzak" a (şube için yukarı akış olarak yapılandırılmamış) karşı çıkmak istiyorsanız, doğrudan hedeflemeniz gerekir. Tüm uzak dalları aşağıdakilerle görebilirsiniz:
git branch -r
Yapılandırılmış tüm uzaktan kumandaları aşağıdakilerle görebilirsiniz:
git remote show
Tek bir uzaktan kumandanın (örn. Başlangıç noktası) şube / izleme yapılandırmasını aşağıdaki gibi görebilirsiniz:
git remote show origin
Uygun başlangıç dalını belirledikten sonra, normal bir fark yapın :)
git diff [MY_LOCAL] MY_REMOTE_BRANCH
Bu oldukça basit. Kullanabilirsiniz:git diff remote/my_topic_branch my_topic_branch
my_topic_branch
Konu şubeniz nerede .
Deneyin:
git diff origin HEAD
Mevcut Yerel şubelerinizi HEAD
başlangıç noktasına göre ayırmak istediğinizi varsayarsak . Ve yerel şubede olduğunuzu varsayarsak. :)
Eğer kullanırsanız TortoiseGit (o Git için GUI sağlar), doğruca Git repo klasörü ardından tıklayabilirsiniz Git Sync
.
Seçili değilse karşılaştırılacak dallarınızı seçebilirsiniz. Farklılıkları görebileceğiniz taahhüt. Ayrıca Compare with previous revision
farklılıkları yan yana görüntülemek için herhangi bir taahhüdü sağ tıklatabilirsiniz .