Saya seorang pengembang .NET dan saya telah menggunakan TFS (team foundation server) sebagai perangkat lunak kendali sumber saya berkali-kali. Fitur TFS yang baik adalah:
- Integrasi yang baik dengan Visual Studio (jadi saya melakukan hampir semuanya secara visual; tidak ada perintah konsol)
- Mudah check-out, proses check-in
- Mudah menggabungkan dan menyelesaikan konflik
- Pembuatan otomatis yang mudah
- Percabangan
Sekarang, saya ingin menggunakan Git sebagai tulang punggung, repositori, dan kontrol sumber proyek open source saya. Proyek saya dalam bahasa C #, JavaScript, atau PHP dengan database MySQL, atau SQL Server sebagai mekanisme penyimpanan.
Saya baru saja menggunakan bantuan github.com untuk tujuan ini dan saya membuat profil di sana, dan mengunduh GUI untuk Git. Hingga bagian ini sangat mudah.
Tapi aku hampir terjebak untuk melanjutkan lebih jauh. Saya hanya ingin melakukan beberapa operasi sederhana (sangat sederhana), termasuk:
- Membuat proyek di Git dan memetakannya ke folder di laptop saya
- Memeriksa / memeriksa file dan folder
- Menyelesaikan konflik
Itu saja yang perlu saya lakukan sekarang. Tetapi tampaknya GUI tidak ramah pengguna. Saya mengharapkan GUI untuk memiliki Connect To...
atau sesuatu seperti itu, dan kemudian saya mengharapkan daftar proyek yang akan ditampilkan, dan ketika saya memilih satu, saya berharap untuk melihat daftar file dan folder dari proyek itu, seperti menjelajahi proyek TFS Anda dalam Visual Studio. Lalu saya ingin dapat mengklik kanan file dan memilih check-in...
atau check-out
dan hal-hal seperti itu.
Apakah saya berharap banyak? Apa yang harus saya lakukan untuk menggunakan Git dengan mudah seperti TFS? Apa yang kulewatkan di sini?
sumber
Jawaban:
Keuntungan git datang dari membuang banyak asumsi lama tentang apa yang harus dilakukan VCS. Kerugian git berasal dari tidak bisa memanfaatkan pengalaman sebelumnya dan tidak mampu melakukan hal-hal seperti yang biasa Anda lakukan.
Jika Anda akan beralih dari sesuatu yang lain ke git, cobalah untuk memulai tabula-rasa (meskipun tidak mungkin untuk benar-benar dilakukan dalam praktik). Evaluasilah berdasarkan apa yang dilakukannya dan seberapa baik ia melakukannya, bukan pada bagaimana ia melakukannya dibandingkan dengan bagaimana Anda terbiasa melakukannya. Bukan karena Anda berharap terlalu banyak, itu karena harapan Anda ortogonal dengan apa yang disediakan git. Jika Anda menikah dengan operasi GUI, Anda akan kecewa. Git memang memiliki alat gui yang tersedia, tetapi mereka tidak menambahkan banyak. Itu bukan kegagalan untuk menyediakan mereka karena tidak ada yang bisa ditambahkan oleh gui. GitK memang membantu, bukan dalam operasi sehari-hari, melainkan dalam memvisualisasikan struktur cabang dan memeriksa atau mencari sejarah.
Inilah analogi konyol untuk apa yang saya maksud dengan "orthogonal". Salah satu hal yang dapat Anda lakukan dengan koran adalah membungkus ikan di dalamnya, atau menggunakannya untuk melapisi kandang burung. Tapi itu tidak penting untuk fungsi surat kabar, itu adalah fitur kebetulan dari bentuknya . Mengharapkan git untuk "memeriksa file", atau "memungkinkan Anda memilih proyek", atau menyediakan "koneksi ke ... "Ini seperti berharap dapat membungkus ikan atau melapisi kandang burung Anda dengan situs web surat kabar .
sumber
Sudahkah Anda dianggap lincah? Seperti git, ini adalah DCVS dan memungkinkan Anda melakukan semua hal rapi yang bisa dilakukan dengan DCVS. Seperti git, ada penyedia layanan berbasis cloud (bitbucket) yang cukup bagus. Tapi, tidak seperti git, cerita windows cukup baik, Anda bukan warga negara kelas 2. Anda punya opsi tooling yang baik (TortiseHG) dan integrasi Visual Studio yang cukup baik (VisualHG).
Tidak ada yang akan menjadi seperti TFS di studio visual - dunia tidak terhubung seperti itu.
sumber
svn
dan melewatkan banyak hal yang sangat mudahhg
. Sekarang saya pindah kegit
dan memiliki perasaan campur aduk. Saya suka mendapatkan kembali banyak fasilitas yang saya lewatkansvn
, tetapi saya masih merindukan kesederhanaanhg
dibandingkan dengan kompleksitas yang tidak perlugit
. Bahkan hanya dengan memasang TortoiseGit di windows mengharuskan Anda untuk melewati rintangan yang tidak diperlukan dengan TortoiseHg .Saya beralih dari SVN ke git satu tahun yang lalu, dan saya sangat senang karenanya. Namun, saya tidak mengandalkan GUI apa pun dan jika Anda dengan tegas menolak baris perintah, itu mungkin masalah.
Anda tampaknya berharap
git
untuk bekerja dengan cara yang biasa Anda lakukan, tetapi ternyata tidak. Ini tidak sulit, tetapi Anda harus melihat prinsip-prinsipnya sebelum melanjutkan.Git didistribusikan, yang berarti Anda selalu bekerja dengan repositori lokal Anda, yang dapat dipetakan ke sejumlah remote, termasuk nol. Ketika bermain dengan proyek lain, saya menggunakan dua remote: git atau repositori SVN dan server saya sendiri.
Saya selalu memulai dengan membuat direktori kosong dan kemudian salah satu
git init
ataugit clone SOME-REMOTE-REPOSITORY
. Tautan ini dapat membantu Anda.Anda ketinggalan menulis GUI apa yang Anda gunakan. Keduanya
TortoiseGit
dangit-gui
pasti bisa melakukannya.Untuk ini saya menggunakan
git-gui
atau editor teks favorit saya.Hubungkan ke apa, ketika mungkin ada 0 hingga N remote? Git tidak tetap terhubung ke server jarak jauh, itu membuat koneksi hanya sementara dan hanya untuk beberapa perintah yang bekerja dengan repositori jarak jauh. Sebagian besar pekerjaan dilakukan secara lokal.
projects
Maksud saya, Anda berasumsirepositories
.Saya khawatir tidak ada hal seperti itu. Git pada server jarak jauh hanya berfungsi dengan satu repositori. Mendaftarkan semua repositori sama dengan mendaftarkan semua direktori yang berisi subdirektori
.git
. Saya yakin ada sesuatu seperti iniGitHub
.Sekali lagi, saya khawatir tidak ada hal seperti itu, karena
git
bekerja secara lokal. Dan lagi, itu tidak akan banyak berguna. Cukup klon repositori dan jelajahi di komputer Anda. Meskipun kloning dari repo besar membutuhkan waktu, semua operasi selanjutnya jauh lebih cepat, dan Anda dapat melihat komit atau cabang.Sekali lagi,
git
bekerja secara lokal. Jadi tidak masuk akal untuk check-in atau check-out ke repo jarak jauh. Bekerja dengan cara ini adalah buang-buang waktu bahkan pada LAN yang cepat. Dapatkan repositori ke komputer Anda, bekerja dengannya dangit push
perubahan ke remote. Pikirkan tentang hal ini seperti menerbitkan perubahan Anda dan juga membuat cadangan. Anda harus sering berkomitmen secara lokal .Sebelum Anda memulai pekerjaan Anda,
git fetch
ataugit pull
perubahan dari jarak jauh jika-kalau ada orang lain yang bekerja dengannya.Iya dan tidak. Anda mengharapkan sesuatu yang berbeda dari apa yang ditawarkannya. Anda bisa mendapatkan sesuatu yang jauh lebih baik,
git
kuat, fleksibel, aman, cepat sekali, dan dapat melakukan semua yang Anda butuhkan, tetapi tidak bisa meniru persis apa yang dilakukan VCS terpusat.sumber
Saya telah membuat perjalanan dari sumber visual aman ke tfs ke svn ke git.
Beralih dari vss ke tfs adalah pengalaman yang menyenangkan. Beralih dari tfs ke svn adalah pengalaman yang menyenangkan. Pergi dari svn ke git telah menjadi semacam pertempuran internal.
Seringkali saya mendapati diri saya cukup konservatif dan saya mencoba untuk berpegang pada apa yang berhasil. Gui yang baik bagi saya lebih disukai daripada baris perintah dan saya menemukan diri saya mencari beberapa gui yang akan membiarkan saya bermain dengan anak-anak keren yang bekerja dengan saya. Mereka semua menggunakan git dengan baris perintah secara eksklusif.
Momen eureka bagi saya datang begitu saya menyerah mencari gui peluru perak dan mulai mencoba git bash (saya masih belajar).
Saya sudah menginstal beberapa guit dan mereka melengkapi git dari baris perintah. Ekstensi Git, penyedia kontrol sumber Git untuk studio visual dan kura-kura git. Tapi saya katakan membiasakan diri dengan git bash. Perintah bisa sedikit samar tetapi setelah Anda mempelajarinya mereka jauh lebih cepat daripada gui.
Bercabang dengan git hanya AWESOME dibandingkan dengan yang lain. Buat cabang dan beralih antar cabang hampir instan. Anda dapat melakukan hal-hal yang tidak akan Anda lakukan dengan svn karena svn pada dasarnya menyalin copy pekerjaan Anda (setidaknya seperti yang saya lakukan).
Saya menemukan Git memiliki kurva belajar lebih curam daripada svn. Tapi begitu Anda "mendapatkannya" dengan git, Anda tidak ingin kembali.
Git sepanjang jalan.
sumber
Anda terbiasa memiliki server yang menyimpan file Anda dan merupakan pemiliknya yang mahakuasa. Untuk mengedit file, Anda harus meminta izin dari server.
Git tidak seperti itu. Pikirkan git dengan cara ini: Anda memiliki repositori lokal Anda. Git memungkinkan Anda melakukan perubahan, membalikkan komit, percabangan mudah dan cepat, dll. Saat Anda ingin mencadangkan riwayat kontrol sumber, Anda mendorong perubahan ke repositori lain , yang "kebetulan merupakan" server, seperti GitHub.com.
Alur kerja:
Itu semuanya.
sumber
Apa maksudmu "si" git gui? Ada banyak trilyun dari mereka, termasuk plugin untuk integrasi studio visual, jika saya ingat dengan benar. Jika satu GUI tidak bekerja untuk Anda, coba lagi sampai Anda menemukan yang tidak. Saya pribadi menggunakan GUI yang berbeda untuk tugas yang berbeda (dan CLI untuk yang lain).
Namun, git lebih merupakan kerangka kerja kontrol versi daripada sistem tetap. Anda masih harus mempelajari beberapa dasar untuk mendapatkan yang terbaik dari itu.
sumber
Iya
Tidak ada. Git CLI-centric dan tidak memiliki frontend yang baik (saya tahu tentang TortoiseGit, yang tidak menjawab, dibandingkan dengan Tortoise * lainnya). Anda dapat mencoba menggunakan SmartGit (Waspadalah terhadap Java)
sumber