Apa yang dilakukan "sinkronisasi" GitHub untuk Windows?

87

Dengan GitHub untuk Windows, Anda dapat "menerbitkan" cabang, dan kemudian "menyinkronkan" cabang tersebut ke GitHub.

masukkan deskripsi gambar di sini

Apakah sinkronisasi pada dasarnya adalah git pulldan git push? Atau ada yang lebih dari itu? Jika saya ingin melakukan langkah yang sama persis seperti "sinkronisasi" dari baris perintah, apa yang harus saya lakukan?

(Ini bukan Open Source, atau saya baru saja membacanya.)

Jay Bazuzi
sumber

Jawaban:

52

Sinkronisasi git pull --rebasedan kemudian jika ada perubahan lokal, lakukan git push.

Dari sini: http://haacked.com/archive/2012/05/21/introducing-github-for-windows.aspx#87318

Matt Rix
sumber
2
Apa yang terjadi jika ada konflik selama langkah rebase?
Svante
26
@Svante itu hanya gagal, dan menawarkan untuk membuka shell bagi Anda untuk menyelesaikan kekacauan. Begitulah cara saya sampai ke halaman ini :-)
Andiih
8
Apakah ini masih benar? Saya baru saja melakukan sinkronisasi dan berakhir dengan komit penggabungan, yang seharusnya tidak pernah terjadi jika alirannya adalah: git pull --rebase; git push
Mikha Zoltu
Ada penjelasan untuk komentar @Michas Caldwell, saya yakin dia benar?
benchuk
Dapat mengonfirmasi bahwa menekan Sync barusan melakukan git pullalih - alih a git pull --rebase, sehingga membuat 'master' cabang Gabung tambahan dari ... commit.
Leo
42

Karena jawaban di atas lebih dari dua tahun yang lalu, jawaban terbaru untuk pertanyaan ini adalah: karena beberapa bug dengan rebase , tombol "sinkronkan" tidak berfungsi git pull --rebaselagi. Sebaliknya, ia melakukan git pullyang akan melakukan penggabungan jika ada konflik, menurut catatan rilis ini (lihat rilis 1.3.0).

Tautan di atas tidak tersedia untuk saat ini. Ini catatan rilis baru .

Ethan Yang
sumber
2
Sebenarnya, itu tidak sepenuhnya benar. HANYA jika rebase tidak berfungsi, ia mencoba melakukan penggabungan.
Joris Meys
Tautan catatan rilis rusak.
skolima
2
@JorisMeys Saya tidak yakin pernyataan Anda benar. Dalam pengalaman saya, jika ada salah komit depan saya pada remote, itu akan membuat gabungan komit, bahkan ketika itu bisa melakukan rebase.
Jerad Rose
@JeradRose Ketika saya menulis komentar saya, kami berada di Github Desktop v. 2.x, dan sekarang kami berada di 3.3 :-) Tapi Anda benar, saya memperhatikan hal yang sama.
Joris Meys
17

"Sinkronisasi" adalah tindakan apa pun yang diperlukan agar cabang lokal Anda cocok dengan cabang jarak jauh Anda. Jika cabang lokal Anda memiliki komitmen yang tidak dilakukan oleh cabang jarak jauh Anda, maka "sinkronisasi" akan mendorong cabang Anda. Jika cabang jarak jauh berada di depan cabang lokal Anda, maka "sinkronisasi" akan menarik terlebih dahulu (khususnya git pull --rebase, seperti yang dijelaskan oleh Phil Haack). "Sinkronisasi" hanyalah jalan pintas untuk mendapatkan lokal dan remote untuk mencerminkan satu sama lain.

Dari situs GitHub :

The sync button turns the complex workflow of pulling and pushing into a single operation. It notifies you when there are new changes to pull down and lets you quickly share local changes.

redhotvengeance
sumber
Itu tidak hanya menarik - tetapi juga "git pull --rebase", yang merupakan perbedaan penting. Juga, urutan yang Anda miliki salah, tarik sebelum mendorong.
Andiih
2
@Andiih Bahasa saya digeneralisasi dan bukan daftar operasi yang dipesan. Perintah itu tersirat - pemberitahuan saya mengatakan "jika cabang terpencil itu di depan cabang lokal Anda"? Deskripsi saya juga merupakan kutipan langsung dari situs GitHub. Terlepas dari itu, jawaban Matt Rix lebih detail, dan pantas untuk ditandai sebagai jawabannya. Saya telah membuat beberapa pengeditan kecil untuk mengklarifikasi kebingungan dalam jawaban saya.
redhotvengeance
Apakah sinkronisasi github juga mengambil perubahan upstream, selain asal. Yaitu saya telah f9rked repo, dan memiliki klon lokal dari garpu, apa yang saya inginkan adalah perubahan dari hulu, bukan hanya asal
AaronLS
1
@AaronLS GitHub untuk Windows saat ini hanya dibuat untuk bekerja dengan satu remote, yaitu origin. Untuk bekerja dengan banyak remote, Anda harus menggunakan baris perintah. Info yang relevan dapat ditemukan di sini , di bawah "Beberapa remote Git & remote non-GitHub".
redhotvengeance
4

Untuk menambah jawaban @ ethanyang ,

Menurut alias yang dikonfigurasi di gitconfig,

[alias]
...
sync = !git pull && git push
Ashwin Sinha
sumber
4
Hanya karena penasaran, apa yang dilakukan! berarti di baris di atas?
Scott Romack
@ScottRomack itu berarti itu diperlakukan sebagai perintah shell: stackoverflow.com/questions/21083933/…
Nicolas Holthaus
Apakah GitHub Desktop memiliki alias ini sudah disiapkan? Jika ya, di mana letak konfigurasi ini? Saya tidak melihat alias ini di global saya .gitconfig. Atau apakah ini hanya timpaan Anda sendiri?
James