Zaten Windows için Git Bash nedir?


61

Git ve Git Bash’i https://git-scm.com/ adresinden kullanıyorum . Burada daha fazla bilgi içeren bir sayfa var: https://git-for-windows.github.io/ .

Dün bir sorunla karşılaştım rsyncve Windows için Git Bash'i daha derine kazmaya başladım. Bash programının isminden bile emin olmadığımı fark ettim, çünkü sadece git-scm indirmeyle birlikte geliyor. Ben buna makul görünen Windows için Git Bash diyorum.

"Git Bash Nedir" konusunu inceleyerek Cygwin ve mysys2 adında farklı bir şey okudum , bununla alakalı görünüyor mysysGitve referanslar gördüm MinGW. Ancak, daha sonra SSS'de mintty'nin Git Bash için varsayılan terminal olduğunu gördüm .

Bash uygulamasının aslında bağımsız olarak sunulan, başka şeylerin (özellikle de yukarıda listelenen) özel olarak küratörlüğünü yapmış olduğu görülüyor.

Temel olarak, ssh scp cat lsWindows için Git Bash'te çalışma gibi * nix komutlarını yapan temelin ne olduğunu bilmek isterim ?

(İyi bir cevabın birinin geniş vuruşlarda bu bileşenlerin nasıl bir araya geldiğini ve bileşenlerin doğru sözcüklerini anlamalarını sağlamasına yardımcı olacağını düşünüyorum, ancak SO soru / cevap biçimini kırmak istemiyorum.)


Burada çok iyi bir cevap buldum: Git Bash'in anlamı nedir?
geneorama

1
Sanırım google resmi adı "git bash". Her iki kelime de bağımsız olarak anlamlı olduğundan, tırnak içinde kalmasına yardımcı olur.
geneorama

Burada ve burada Reddit hakkında bazı iyi tartışmalar (2017'den itibaren). Orijinal rsyncsorumu bile ele aldılar !!
geneorama

Yanıtlar:


72

özet

Haklısın, Windows için Git Bash sadece bashWindows için derlenmedi. İçerdiği paket bash(bir olan komut satırı kabuğu ) ve benzeri diğer, ayrı * nix yardımcı bir koleksiyon ssh, scp, cat, findWindows için derlenmiş (eğer kabuk kullanarak yürüttüğünüz) ve diğerleri, ve yeni bir komut satırı arayüzü terminali pencere denir mintty.

Kısaca

Windows'ta, gibi ipconfig /allveya format G:kullanarak komutları çalıştırabilirsiniz cmd.exe. Bu komutlar, altında C:\Windows\system32depolanan gerçek dosyalardır ipconfig.exeve format.comdosyalar. cmd.exeher ikisinden de ayrıdır ve kullanıcının isteğine göre yükler ve çalıştırır.

ssh, scp, cat, findKullanılarak çalıştırılır bashtamamen aynı şekilde. Windows ve * nix sistem dosyalarının farklı düzenlenmiş olması nedeniyle genellikle * nix sistemlerinde /usr/bindeğil altında depolanırlar C:\Windows\system32.

Windows için Git Bash durumunda, bu programlar altında bulunan C:\Program Files\Git\usr\binöykünmüş Linux ortamında da bulunabilen Git kurulum klasöründe bulunur /usr/bin.

Sadece çalıştırabilmeniz cmd.exegibi * nix, diğer sistem programları olmadan çok şey yapmanıza izin vermez, Bash'i Windows'ta çalıştırabilmek de pek kullanışlı değildir. Bu, kullanılabilir bir yazılım paketi oluşturmak için tüm bu ekstra komutların Bash ile birlikte paketlenmesi gerektiği anlamına gelir.

Ayrıntılar: Windows'ta POSIX uygulamaları

Normalde bu fazladan komutlar * nix sistemlerinde bulunur ve Windows'ta bulunmazlar, çünkü POSIX programlama API'sine (programlanan * nix'in kullandığı) ve Win32 API'lere (Windows'un kullandığı) karşı programlanmışlardır. POSIX API belgeleri açıkça kullanıma sunuldu, bu nedenle bazı insanlar Windows dahil diğer sistemlere taşıdı. POSIX API'leri Windows uygulaması / kütüphaneler tarafından sağlanmaktadır Cygwinve MSYS.

Bu, Wine projesinin yaptığı ile aynıdır, ancak Wine gibi Windows-> POSIX yerine POSIX-> Windows'u dönüştürür.

mintty

minttycmd.exeVarsayılan Windows komut satırı penceresinin normalde çoğu * nix sistemde bulunan bazı önemli özellikleri eksik olması nedeniyle dahil edilmiştir . Çoğu durumda, minttykomutları çalıştırmak için daha iyi bir seçimdir (kesinlikle Windows için Git Bash ile birlikte gelen yardımcı programlar için), ancak bazen bir Windows sistem uygulaması ile daha iyi çalışabilir cmd.exe.


1
Sorularıma çoğu projenin SSS cevaplanmasını çıkıyor: github.com/git-for-windows/git/wiki/FAQ ve google grup içinde daha ayrıntılı bilgiler de bulabilirsiniz groups.google.com/forum/#! forum / git-for-windows için .
geneorama, 22.06

@geneorama Bu, doğru, bilgilendirici ve yararlı olsaydı, bu cevabı kabul etmek bir sorun olmamalıdır.
saat

1
@geneorama Bu boşluğu doldurmak niyetiniz olabilirdi, ama yaptığınız soru bu değildi. Yazınız "Zaten Windows için Git Bash Nedir?" ve onun gövdesinde mevcut tek soru " ssh scp cat lsWindows için Git Bash'te çalışmak gibi * nix komutlarını yapan şeyin ne olduğunu bilmek ister misiniz ?" . Pabru'nun mesajı her iki soruyu da oldukça iyi cevaplıyor ve aynı soruyu olabilecek herkes için doğru bir cevap (belirtildiği gibi), bu nedenle kabul ederek diğer kullanıcılara yardım ediyorsunuz. rsyncSorun için yeni bir soru göndermeyi denediniz mi?
saat

4
@walen SO ve ilgili sitelerdeki soru gönderme o kadar tatsız ki, daha fazla soru göndereceğimden şüpheliyim. Bu aslında bir testti ve duygularımı doğruladı. Soruyu kısa tutmaya ve araştırmamı belgeleme çabamda (ve tam gün araştırma yaparak geçirdim), sanırım asıl soruyu bıraktım. Dikkatle düzenlediğimde insanlar, araştırma eksikliği olarak kısalık alıyor gibi görünüyor. Soruyu çok ayrıntılı yaparsam, göz ardı edilir. Ne olursa olsun, soru eleştirilir (birkaç düpedüz kaba yorum silinmiştir). "Ünlü" sorularım bile ilk başta ağır bir şekilde indirildi.
geneorama

1
@geneorama Eğer sizin için herhangi bir teselli ise, sorunuz cevabı okumadan önce git bash hakkında daha fazla bilgi edinmeme yardımcı oldu. Ama ne demek istediğini anlıyorum.
saat

4

Arka fon

Ben OP'im. Aslında sadece kullandığım şeyin resmini bilmek istedim.

Şimdi adının "Windows için Git Bash" olduğunu düşünüyorum. Ne yazık ki tam cevap karmaşık çünkü bu şey aslında bir çok şey.

2016'nın en iyi cevabı aslen bana yardımcı olmadı, ancak yoğun bir şekilde düzenlendi ve gittikçe daha fazla yardımcı oldu. Yine de, orijinal sorumun bir kısmını özlüyor.

Başlangıç: msysgit

Aslında, başlangıç ​​muhtemelen MSYS, ama gerçekten MSYS2. "Msysgit" terimi, XYZ yanlış gittiğinde ne olduğunu anlamak için bir arama yapmak için iyi bir terimdir; gibi şeyler "nerede @ * #! tüm autocrlf ayarları saklanır?!?!?!?"

Msysgit projesindeki README ( https://github.com/msysgit/msysgit ) bileşenler arasındaki ilişkiyi açıklar:

MsysGit ve Windows için Git arasındaki ilişki

Windows için Git, Windows'ta Git'i çalıştırmak için minimal bir ortam yükleyen bir yazılım paketidir. Bir Perl yorumlayıcısı ve Git çalıştırılabilir ve bağımlılıkları ile birlikte bir Bash (bir Unix tipi kabuk) ile birlikte gelir.

Diğer taraftan, msysGit, Windows için Git'i oluşturabilecek derleme ortamını yükleyen yazılım paketidir . En kolay yol, bunu net yükleyici aracılığıyla yüklemektir .

MSYS ve MinGW arasındaki fark

MinGW'nin projesi 'hedefi GNU C derleyicisi ile hiçbir POSIX katmanla doğal Windows ikilileri derlemek için bir yol sağlamaktır.

Bununla birlikte, en azından Bash'in bir POSIX katmanına ihtiyacı vardır (özellikle fork()Windows'ta yapılan aramaların olmamasından dolayı ). Bu nedenle, Windows'ta Bash (ve Perl) işlevselliği sunmak için gereken minimum sistemi sunarak MSYS ( minimal sistem ) devreye girer .

Sonuç olarak, MSYS, yalnızca Bash ve Perl tarafından kullanılan, ancak o ortamda derlenen herhangi bir şey tarafından kullanılmayan bir POSIX katmanıyla (eski Cygwin sürümüne dayanarak) birlikte gönderilir.

BTW, tam README silindiğinde, onu bir özete kopyaladım .

Terminal penceresi: mintty

Git Bash'in pencereler için diğer kısmı ise asıl Windows komut satırıdır. Tanrıya şükür var ama google'a ihtiyacım olan bir şey değil.

MSYS2 Referansları

Wikileri, MSYS2 ortamındaki detayların gerçek bir hazinesidir: https://github.com/msys2/msys2/wiki

Giriş bölümünde, bu bölüm benim asıl soruma en uygun olanı:

MSYS2 üç alt oluşur ve bunlara karşılık gelen paket veri havuzları, msys2, mingw32ve mingw64.

Bu tartışma aynı zamanda çok yararlıdır: https://sourceforge.net/p/msys2/discussion/general/thread/dcf8f4d3/#8473/588e


1
"Sonuç olarak, MSys bir POSIX katmanıyla (Cygwin'in eski bir sürümüne dayanarak ) birlikte gelir ..." - bu , Cygwin'e git'i yüklemenin 'Windows için Git Bash'i gereksiz kılmasının sonucunu doğurdu, böylece kaldırabilirim.
Daniel Sokolowski
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.