2015-06-09 7 views
8

यहां सौदा है। मास्टर में एक फ़ाइल है, फ़ाइल 1। मैं शाखा करता हूं, और उस फ़ाइल को शाखा में हटा देता हूं। इस बीच, मैं मास्टर पर file1 संशोधित करता हूं। बूम, संघर्ष।क्या संकल्प विवादित फ़ाइल को हटाना है जब गिट रीयर काम करने का कोई तरीका है?

जब मैं अपनी शाखा को मास्टर में विलय करता हूं, तो संकल्प फ़ाइल को हटाना है। मैं एक ही संकल्प को कई बार करने में सक्षम होने के लिए git rerere का उपयोग करने का प्रयास कर रहा हूं, लेकिन जैसा कि आप नीचे देख सकते हैं, यह उस स्थिति में रिज़ॉल्यूशन रिकॉर्ड नहीं करता है जब आप फ़ाइल को हटा रहे हों।

मुझे इस पर विशेष रूप से कोई दस्तावेज़ नहीं मिल रहा है, क्या यह rerere की एक सीमा है?

|system| brad-macbook-air in ~/tmp 
± bb+ih |master ✓| → touch file1.txt 

|system| brad-macbook-air in ~/tmp 
± bb+ih |master ✗| → git add . && git commit -m 'File1' 
[master (root-commit) 95a807e] File1 
1 file changed, 0 insertions(+), 0 deletions(-) 
create mode 100644 file1.txt 

|system| brad-macbook-air in ~/tmp 
± bb+ih |master ✓| → git checkout -b delete_file_1 
Switched to a new branch 'delete_file_1' 

|system| brad-macbook-air in ~/tmp 
± bb+ih |delete_file_1 ✓| → git rm file1.txt 
rm 'file1.txt' 

|system| brad-macbook-air in ~/tmp 
± bb+ih |delete_file_1 ✗| → git commit -m 'rm file1' 
[delete_file_1 83d1a57] rm file1 
1 file changed, 0 insertions(+), 0 deletions(-) 
delete mode 100644 file1.txt 

|system| brad-macbook-air in ~/tmp 
± bb+ih |delete_file_1 ✓| → git checkout master 
Switched to branch 'master' 

|system| brad-macbook-air in ~/tmp 
± bb+ih |master ✓| → echo 'hello' > file1.txt 

|system| brad-macbook-air in ~/tmp 
± bb+ih |master ✗| → git commit -am 'update file1' 
[master 16f6541] update file1 
1 file changed, 1 insertion(+) 

|system| brad-macbook-air in ~/tmp 
± bb+ih |master ✓| → git merge delete_file_1 
CONFLICT (modify/delete): file1.txt deleted in delete_file_1 and modified in HEAD. Version HEAD of file1.txt left in tree. 
Automatic merge failed; fix conflicts and then commit the result. 

|system| brad-macbook-air in ~/tmp 
± bb+ih |master ✗| → git rm file1.txt 
file1.txt: needs merge 
rm 'file1.txt' 

|system| brad-macbook-air in ~/tmp 
± bb+ih |master ✗| → git commit --no-edit 
[master 4791204] Merge branch 'delete_file_1' 

यहां हमें "file1.txt के लिए रिकॉर्ड किए गए रिज़ॉल्यूशन" जैसे कुछ देखना चाहिए, लेकिन हम नहीं करते हैं। बस सुनिश्चित करें कि यह हमारे संकल्प रिकॉर्डिंग नहीं है, हम जा रखना हो सकता है और ठीक उसी मर्ज फिर से कर रहे हैं:

|system| brad-macbook-air in ~/tmp 
± bb+ih |master ✓| → git reset head^ 
Unstaged changes after reset: 
D file1.txt 

|system| brad-macbook-air in ~/tmp 
± bb+ih |master ✗| → git co . 

|system| brad-macbook-air in ~/tmp 
± bb+ih |master ✓| → git merge delete_file_1 
CONFLICT (modify/delete): file1.txt deleted in delete_file_1 and modified in HEAD. Version HEAD of file1.txt left in tree. 
Automatic merge failed; fix conflicts and then commit the result. 

और यहाँ आप देख सकते हैं कि git rerere संघर्ष समाधान याद नहीं है (और वास्तव में गलत तरीके से फ़ाइल छोड़ देता है पेड़ में)।

उत्तर

4

जिस तरह से यह अभी खड़ा है, नंबर रीर्रे प्रत्येक विवादित फ़ाइल में शिकारी के आधार पर पिछले संकल्प रिकॉर्ड करने का प्रयास करता है। हटाने के मामले में, इसे केवल इसे देखने के लिए कोई शिकारी नहीं दिखता है।

+1

धन्यवाद @ फ़ंडूओपांडा। यह वास्तव में एक बमर है, ऐसा लगता है कि भंडारण प्रारूप की सीमा किसी भी चीज के मुकाबले कहीं अधिक है। मेरा अवलोकन यह है कि पुनर्विक्रय बाइनरी फ़ाइलों के लिए भी काम नहीं करता है। क्या आपको पता है कि यह भी सच है या नहीं? – Brad

+2

यह सब फ़ाइल खोलना है और उन पात्रों को खोजना है जिनमें इन वर्णों को "<", ">", "=", "|" । इसलिए, नहीं। यह कहना सही नहीं होगा कि यह बाइनरी फाइलों पर काम करता है। – fundoopanda

0

मुझे समस्याएं भी थीं जब फीचर शाखा में एक नई फाइल शामिल होती है जो मुख्य शाखा में मौजूद नहीं होती है, लेकिन फीचर शाखा को मास्टर में विलय करने के लिए और इसे सही तरीके से काम करने के लिए, इसे एक छोटे से संशोधन की आवश्यकता होती है यह नई फाइल गिट रीर्रे का एहसास नहीं है कि यह पूरी मर्ज प्रक्रिया का हिस्सा है और इसलिए आवश्यक परिवर्तनों को कभी रिकॉर्ड नहीं करता है।

संबंधित मुद्दे

 संबंधित मुद्दे