Apa yang terjadi saat ini adalah, bahwa Anda memiliki set file tertentu, yang telah Anda coba gabungkan sebelumnya, tetapi mereka memunculkan konflik gabungan. Idealnya, jika seseorang mendapat konflik gabungan, ia harus menyelesaikannya secara manual, dan melakukan perubahan menggunakan git add file.name && git commit -m "removed merge conflicts"
. Sekarang, pengguna lain telah memperbarui file yang dipermasalahkan di repositori-nya, dan telah mendorong perubahannya ke repo hulu umum.
Kebetulan, konflik gabungan Anda dari (mungkin) komit terakhir tidak terselesaikan, jadi file Anda tidak digabung, dan karenanya flag U
( unmerged
) untuk file. Jadi sekarang, ketika Anda melakukan git pull
, git memunculkan kesalahan, karena Anda memiliki beberapa versi file, yang tidak diselesaikan dengan benar.
Untuk menyelesaikan ini, Anda harus menyelesaikan konflik gabungan yang dipertanyakan, dan menambahkan dan melakukan perubahan, sebelum Anda dapat melakukan a git pull
.
Reproduksi sampel dan resolusi masalah:
# Note: commands below in format `CUURENT_WORKING_DIRECTORY $ command params`
Desktop $ cd test
Pertama, mari kita buat struktur repositori
test $ mkdir repo && cd repo && git init && touch file && git add file && git commit -m "msg"
repo $ cd .. && git clone repo repo_clone && cd repo_clone
repo_clone $ echo "text2" >> file && git add file && git commit -m "msg" && cd ../repo
repo $ echo "text1" >> file && git add file && git commit -m "msg" && cd ../repo_clone
Sekarang kita berada di repo_clone, dan jika Anda melakukan git pull
, itu akan memunculkan konflik
repo_clone $ git pull origin master
remote: Counting objects: 5, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /home/anshulgoyal/Desktop/test/test/repo
* branch master -> FETCH_HEAD
24d5b2e..1a1aa70 master -> origin/master
Auto-merging file
CONFLICT (content): Merge conflict in file
Automatic merge failed; fix conflicts and then commit the result.
Jika kita mengabaikan konflik di klon, dan membuat lebih banyak komitmen dalam repo asli sekarang,
repo_clone $ cd ../repo
repo $ echo "text1" >> file && git add file && git commit -m "msg" && cd ../repo_clone
Dan kemudian kita lakukan git pull
, kita dapatkan
repo_clone $ git pull
U file
Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>'
as appropriate to mark resolution, or use 'git commit -a'.
Perhatikan bahwa file
saat ini berada dalam keadaan tidak terendam dan jika kita melakukan git status
, kita dapat dengan jelas melihat hal yang sama:
repo_clone $ git status
On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 1 different commit each, respectively.
(use "git pull" to merge the remote branch into yours)
You have unmerged paths.
(fix conflicts and run "git commit")
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: file
Jadi, untuk menyelesaikan ini, pertama-tama kita harus menyelesaikan konflik gabungan yang kita abaikan sebelumnya
repo_clone $ vi file
dan atur isinya ke
text2
text1
text1
lalu tambahkan dan komit perubahan
repo_clone $ git add file && git commit -m "resolved merge conflicts"
[master 39c3ba1] resolved merge conflicts