Git rebase untuk cabang yang dibuat beberapa hari yang lalu

Saya butuh bantuan dalam memahami git rebase untuk situasi ini. Saya memeriksa cabang yang dibuat oleh seseorang 10 hari yang lalu. Saya memeriksa menggunakan

git checkout -b <some name> origin/branchname

(Saya hanya menggunakan nama yang berbeda untuk mengidentifikasinya)

Setelah checkout, jika saya melakukan rebase dengan berada di cabang check out ini,

git rebase origin/master

Ini menunjukkan beberapa kesalahan seperti 1) Spasi tambahan - Saya membaca tentang ini tetapi bahkan setelah mencoba perintah yang saya temukan online, saya masih melihat peringatannya.

 git config core.whitespace nowarn

2) KONFLIK penggabungan otomatis (tambah/tambah): Gabungkan konflik di... file-file ini ada di cabang master tetapi isinya diubah sedikit di cabang checkout. Jadi bagaimana saya harus memperbaikinya? Saya tidak memiliki wewenang untuk mengubah apa pun di master secara langsung jika itu cara memperbaikinya. File-file ini harus memiliki konten dari cabang checkout ini sehingga pengujian akan berfungsi dengan baik karena terkait dengan itu..mohon klarifikasi saya..

salam


person geej    schedule 12.07.2011    source sumber
comment
untuk masalah pertama saya, saya menemukan stackoverflow .com/questions/2327917/, tetapi bisakah seseorang menjelaskan perintah yang harus saya jalankan karena saya tidak mengerti dari jawaban yang diberikan..terima kasih.   -  person geej    schedule 12.07.2011


Jawaban (3)


Teman-teman sudah cukup banyak menjawab pertanyaan tentang spasi tetapi tidak menyentuh bagian rebase dari pertanyaan tersebut. Inilah yang terjadi ketika Anda melakukan rebase:

pertama Anda check out ke beberapa cabang, lalu Anda berkata:

git rebase master

Ini berarti Anda ingin me-rebase HEAD saat ini (cabang topik Anda) ke master. Git akan kembali ke sejarah cabang topik Anda dan sejarah cabang master dan menemukan komit yang merupakan nenek moyang pertama untuk keduanya. Komit ini akan menjadi basis lama untuk cabang topik Anda. Kemudian dibutuhkan semua komitmen yang terjadi sejak saat itu di cabang Anda dan "menerapkan kembali" komitmen tersebut dalam urutan kemunculan di atas master saat ini. Terkadang konflik bisa saja terjadi, kemudian proses rebase terhenti dan menunggu penyelesaian Anda. Jadi, Anda harus menyelesaikannya secara manual dengan mengedit file dan kemudian menandainya sebagai terselesaikan oleh git add conflicted_file Setelah ini selesai, Anda harus mengatakan git rebase --continue

Sekarang Anda TIDAK mengubah file di cabang master dengan melakukan itu - perubahan terjadi di cabang topik Anda dan resolusi konflik dicatat di cabang topik Anda.

semoga itu membantu.

person Eugene Sajine    schedule 12.07.2011
comment
ya ini membantu. jadi perubahan yang saya lakukan pada cabang topik sama dengan yang ada di master kan? sepertinya ini dapat dilakukan hanya jika seseorang yakin bahwa perubahan pada cabang Topik tidak diperlukan...jika tidak, mengapa seseorang menyelesaikannya dengan mencocokkan konten yang sama dengan master? - person geej; 12.07.2011
comment
tidak, tidak juga. Sekali lagi perubahan yang dicatat di cabang topik tidak mempengaruhi cabang master sama sekali. Selama operasi rebase, master menjadi basis baru untuk komitmen cabang topik Anda, tetapi penunjuk master tidak bergerak. Jika Anda ingin mempromosikan hasil rebase ke cabang master Anda maka Anda perlu checkout ke cabang master dan melakukan topik git merge. Ini akan menghasilkan penggabungan maju cepat dan penunjuk utama akan dipindahkan untuk menunjuk ke penerapan yang sama seperti yang dilakukan cabang topik Anda. - person Eugene Sajine; 14.07.2011
comment
Anda dapat membuat repo pengujian dan bermain dengan dua cabang dengan melakukan beberapa hal berbeda dan kemudian mencoba melakukan rebase satu sama lain. Sebelum Anda melakukannya, jalankan gitk --all &. yang akan menjalankan GUI untuk browser riwayat. Kemudian setelah setiap operasi yang Anda lakukan, tekan F5 untuk memperbarui GUI. Itu akan menunjukkan kepada Anda bagaimana prosesnya bekerja dan apa hasilnya - person Eugene Sajine; 14.07.2011

Jika ini seperti pertanyaan "masalah spasi putih git svn windows linux" yang Anda sebutkan, maka perintahnya adalah:

git config core.whitespace nowarn
git config core.autocrlf true

(untuk menjaga pengaturan tersebut tetap lokal pada repo saat ini).
Itu akan memaksa semua file untuk mengadopsi satu gaya eol, mencegah file di Origin/master memiliki baris yang identik dengan eol berbeda yang salinan Anda rebasing (yang akan menjelaskan pesan kesalahan CONFLICTS (add/add)).

Namun saya tetap ragu tentang autocrlf true, dan lebih memilih mengelola gaya eol melalui .gitattributes file< /a>.

person VonC    schedule 12.07.2011

cd ke dalam folder .git di repo Anda. Anda mungkin tidak melihat folder ini jika Anda menggunakan penjelajah file yang tidak diaktifkan untuk menampilkan file tersembunyi atau file dengan . atau _ di depannya. Di dalam folder .git Anda akan memiliki file bernama config. Buka di editor teks dan Anda akan melihat bagian bernama [core]. Tambahkan whitespace = nowarn di sana. Lokasi lain di mana Anda dapat menemukan .gitconfig berada di bawah direktori home jika Anda menggunakan mesin linux. Jika di windows itu tergantung bagaimana Anda menginstal git (melalui cygwin atau msysgit).

Jika msysgit melihat pertanyaan ini (Di mana git config --global ditulis ?) untuk lokasi file .gitconfig. Jika itu cygwin, maka Anda dapat melihat isinya di cat ~/.gitconfig.

person yasouser    schedule 12.07.2011