:git yeniden adlandırma/silme karışıklık
ardından adımları ve durum (komutların listesi de sonradan verilmiştir) şunlardır:
- İki şubeleri var: master ve XBranch
- Her ikisinde de bir dosya src/a.txt var. İçeriği "Eski İçerik"
- XBranch'da src/a.txt dosyasını src/b.txt olarak yeniden adlandırıyorum:
mv
, ,git rm
,git add
. Ana sayfada a.txt dosyasını yeniden adlandırın. taahhüt sırasında
git rm src/a.txt
yaptım ama yapmam Master'dagit add src/b.txt
yapmak unuttum:git rm src/a.txt
ve Master'dagit commit
, ben "efendi olarakNew Content
- ben
git add src/b.txt
yapmak ve dosya b.txt içeriğini düzenlemek Master'dagit commit
- yapmam:
git merge XBranch
dosya src/b.txt çatışmaları, mükemmel un hangi derstandable. Ancak içerik "Old Content
" şeklindedir. Niye ya? Komutların
<<<<<<< HEAD
New Content
=======
Old content
>>>>>>> XBranch
listesi::
Neden değil
bir şey gibi[email protected] d:/merge_temp/test/case2
$ mkdir source
[email protected] d:/merge_temp/test/case2
$ git init
Initialized empty Git repository in d:/merge_temp/test/case2/.git/
[email protected] d:/merge_temp/test/case2 (master)
$ mkdir src
[email protected] d:/merge_temp/test/case2 (master)
$ vi src/a.txt
[email protected] d:/merge_temp/test/case2 (master)
$ cat src/a.txt
Old Content
[email protected] d:/merge_temp/test/case2 (master)
$ git add src/
[email protected] d:/merge_temp/test/case2 (master)
$ git commit
[master (root-commit) 148500e] added src/a.txt
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 src/a.txt
[email protected] d:/merge_temp/test/case2 (master)
$ git branch XBranch
[email protected] d:/merge_temp/test/case2 (master)
$ git checkout XBranch
Switched to branch 'XBranch'
[email protected] d:/merge_temp/test/case2 (XBranch)
$ mv src/a.txt src/b.txt
[email protected] d:/merge_temp/test/case2 (XBranch)
$ git rm src/a.txt
rm 'src/a.txt'
[email protected] d:/merge_temp/test/case2 (XBranch)
$ git add src/b.txt
[email protected] d:/merge_temp/test/case2 (XBranch)
$ git commit
[XBranch b3ff8fa] changed a.txt to b.txt in XBranch
1 files changed, 0 insertions(+), 0 deletions(-)
rename src/{a.txt => b.txt} (100%)
[email protected] d:/merge_temp/test/case2 (XBranch)
$ git checkout master
Switched to branch 'master'
[email protected] d:/merge_temp/test/case2 (master)
$ mv src/a.txt src/b.txt
[email protected] d:/merge_temp/test/case2 (master)
$ git rm src/a.txt
rm 'src/a.txt'
[email protected] d:/merge_temp/test/case2 (master)
$ git commit
[master bfeaecb] removed src/a.txt
1 files changed, 0 insertions(+), 1 deletions(-)
delete mode 100644 src/a.txt
[email protected] d:/merge_temp/test/case2 (master)
$ vi src/b.txt
[email protected] d:/merge_temp/test/case2 (master)
$ cat src/b.txt
New Content
[email protected] d:/merge_temp/test/case2 (master)
$ git add src/b.txt
[email protected] d:/merge_temp/test/case2 (master)
$ git commit
[master 2361d5e] changed content of b.txt
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 src/b.txt
[email protected] d:/merge_temp/test/case2 (master)
$ git merge XBranch
CONFLICT (rename/delete): Rename src/a.txt->src/b.txt in XBranch and deleted in HEAD
Automatic merge failed; fix conflicts and then commit the result.
[email protected] d:/merge_temp/test/case2 (master|MERGING)
$ cat src/b.txt
Old Content
Ama sonra nasıl mantıksal olan aşağıdaki durumdan farklı : 1. Master'da "Eski İçerik" ile bir dosya a.txt dosyası ekledim ve taahhüt ediyorum. 2. Ben "Yeni İçerik" ile XBranch bir dosya a.txt ekleyin ve taahhüt. 3. XBranch'ı ana bilgisayara birleştiriyorum. Bu sefer bu dosyada hem içeriğini gösteriyor! – Sabya
@Sabya: bu sefer, her iki ağaç da (şubelerdeki 'ana' ve 'XBranch'daki' case2' dizini) bir * yeni * dosya 'a.txt' başvurusu: içeriği birleştirilmiş, çakışma çözümüyle birleşiyor. Daha önce, bir ** 'a.txt' ** (b.txt' olarak yeniden adlandırıldı) ve yeni bir ** b.txt' ** arasında bir çakışma vardı: her iki dosya aynı dalda mevcut olamaz, bir seçim (dosya içeriğinin değil, dosya) yapılması gerekiyordu. – VonC
Sorumluluğumun 4. adımında, tek bir işlemde "git rm" ve "git add" yaparsam, beklediğim gibi çalışır! Şimdi bunu anlayamıyorum. Dosyanın her iki içeriğinin ne zaman olacağını tahmin edebilir miyim? Sadece XBranch içeriğine sahip olacak ve ne zaman sadece master içeriğine sahip olacak? – Sabya