গিট এবং কমান্ড লাইন ব্যবহার করে মার্জ করার সময় স্থানীয় ফাইল বা দূরবর্তী ফাইলটি কীভাবে রাখবেন?


194

আমি কীভাবে ভিমিডিফ ব্যবহার করে পরিবর্তনটি মার্জ করতে হয় তা জানি তবে, ধরেই নিলাম আমি কেবল জানি যে পুরো ফাইলটি রাখা বা ফেলে দেওয়া ভাল, আমি কীভাবে এটি করব?

আমি তাদের প্রত্যেকের জন্য ভিমডিফ খুলতে চাই না, আমি এমন একটি আদেশ চাই যা 'স্থানীয় রাখুন' বা 'রিমোট রাখুন' বলুক says

ইজি: পরিবর্তিত হিসাবে চিহ্নিত ফাইলগুলির সাথে আমি একত্রীভূত হয়েছি কারণ কেউ এটিকে উইন্ডোজের নীচে খোলে, ইওল পরিবর্তন করে এবং কমিট করে। মার্জ করার সময়, আমি কেবল আমার নিজস্ব সংস্করণটি রাখতে চাই এবং তার বাতিল করতে চাই।

আমি এর বিপরীতেও আগ্রহী: আমি বড় সময় পেলাম এবং আমার পরিবর্তনগুলি ত্যাগ করে দূরবর্তী ফাইলটি গ্রহণ করতে চাই।

উত্তর:


309

আপনি পাশাপাশি করতে পারেন:

git checkout --theirs /path/to/file

রিমোট ফাইল রাখতে এবং:

git checkout --ours /path/to/file

স্থানীয় ফাইল রাখা।

তারপরে git addতাদের এবং সমস্ত কিছুই সম্পন্ন হয়।

সংস্করণ: মনে রাখবেন যে এটি একটি mergeদৃশ্যের জন্য। rebase --theirsআপনি যে শাখায় কাজ করছেন সেখানে একটি রেফারেন্স দেওয়ার সময় ।


4
আমি এটি করেছি .. তবে কিছুই হয় না .. আমি কীভাবে জানি যে এটি সঠিক ফাইলটি নিচ্ছে? আমি git version 1.8.4যদি বিষয়টি বিবেচনা করি তবে ব্যবহার করছি ।
রোসদী কাশিম

3
বিপরীত শব্দ ব্যবহার কেন? আমি ধরে নিলাম "তাদের" দূরবর্তী ফাইল হবে এবং "আমাদের" আমার ফাইল হবে
ফুচলভি

1
সুতরাং এটি হ'ল, @ লুভানফ্যাক
দেবের জন্য অপেক্ষা করছেন ...

7
না, তাদের অর্থ বিপরীত হয় stackoverflow.com/q/2959443/995714 stackoverflow.com/q/29324812/995714 তাহাদেরই আমার ফাইল এবং আমাদিগের হবে হয় দূরবর্তী শাখা ফাইল
phuclv

6
"সহজ", হ্যাঁ স্বজ্ঞাত? নং
উইলবার ওহেটলে

107

এই পদ্ধতিটি আরও সহজবোধ্য বলে মনে হচ্ছে, প্রতিটি ফাইল পৃথকভাবে নির্বাচন করার প্রয়োজন এড়ানো:

# keep remote files
git merge --strategy-option theirs
# keep local files
git merge --strategy-option ours

অথবা

# keep remote files
git pull -Xtheirs
# keep local files
git pull -Xours

এখান থেকে সরাসরি অনুলিপি করা: টানাকালীন সময়ে গিট সংযুক্তির বিরোধগুলি তাদের পরিবর্তনের পক্ষে সমাধান করুন


3
এটা ভালোবাস. বিশেষত যদি একাধিক ফাইল থাকে।
টেক

প্রশ্নটি দুটি পৃথক কমান্ডের জন্য ছিল, তবে এই দুটি কী করবে সে সম্পর্কে কোনও বিবরণ নেই। প্রতিটি লাইন কি করে?
অ্যালেক্স

আমি এটি সন্ধানের আগে কমপক্ষে পাঁচটি স্ট্যাকওভারফ্লো উত্তর দিয়েছিলাম, যা আমি চেয়েছিলাম। ধন্যবাদ।
বোল্টন বেইলি

14

git checkout {branch-name} -- {file-name}

এটি পছন্দের শাখা থেকে ফাইলটি ব্যবহার করবে।

আমি এটি পছন্দ করি কারণ posh-gitস্বতঃপূরণ এটির সাথে দুর্দান্ত কাজ করে। কোন শাখাটি দূরবর্তী এবং কোনটি স্থানীয় তা কোনও অস্পষ্টতাও সরিয়ে দেয়। এবং --theirsযাইহোক আমার জন্য কাজ করে না।


কোনও অস্পষ্টতা নয়, আমার} এবং {তাদের} উভয়ের জন্যই কাজ করে, সম্পূর্ণ ডিরেক্টরি যুক্ত করার পক্ষে সমর্থন করে। এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
dotancohen

9

লাইন-এন্ড জিনিসপত্রের জন্য, দেখুন man git-merge:

--ignore-space-change 
--ignore-all-space 
--ignore-space-at-eol

উইন্ডোজ ক্লোন (.git / config) এ যুক্ত করতে autocrlf = falseএবং / অথবাsafecrlf = false

গিট মার্জেটুল ব্যবহার করা

আপনি যদি এই জাতীয় কোনও মার্জিটুল কনফিগার করেন:

git config mergetool.cp.cmd '/bin/cp -v "$REMOTE" "$MERGED"'
git config mergetool.cp.trustExitCode true

তারপর একটি সরল

git mergetool --tool=cp
git mergetool --tool=cp -- paths/to/files.txt
git mergetool --tool=cp -y -- paths/to/files.txt # without prompting

কাজ করবে

সাধারণ গিট কমান্ড ব্যবহার করা হচ্ছে

অন্যান্য ক্ষেত্রে, আমি ধরে নিই

git checkout HEAD -- path/to/myfile.txt

কৌতুক করা উচিত

বিপরীত করতে সম্পাদনা করুন (কারণ আপনি বিভ্রান্ত হয়ে পড়েছেন):

git checkout remote/branch_to_merge -- path/to/myfile.txt

টিপসের জন্য +1, তবে গ্রহণ করা হয়নি তবে এটি যা আমি চেয়েছিলাম তা নয়। আমি এমন কিছু চাই যা কেবলমাত্র উদাহরণের ক্ষেত্রে নয়, সমস্ত ক্ষেত্রে কার্যকর হয়। প্লাস "গিট চেকআউট রিমোট / ব্রাঞ্চ_ টু ড্যামার - পাথ / টু / মাইফিল.টেক্সট" কাজ করবে না যদি আপনি ইতিমধ্যে আপনার মার্জ শুরু করে থাকেন: এটি বলবে যে আপনি একীভূত হওয়ার মাঝখানে আছেন এবং আপনাকে এটি করতে বাধা দেবে।
ই-সন্তুষ্ট

1
@ ই-সন্তুষ্ট: এটি আশ্চর্যজনক। আমি বিবেচনা করব যে কোনও বাগ, যেহেতু কোনও পাথ দিয়ে চেকআউট করা নিয়মিত চেকআউট নয় (এবং এটি হেডকে প্রভাবিত করে না)। আমি এখন এটা চেষ্টা করত কারণ আমি এটা বিশ্বাস করতে পারছি না আছি
sehe

1
@ ই-সন্তুষ্ট: সুও ... আমি ঠিক বলেছি; git checkout remote/branch_to_merge -- path/to/myfile.txtমার্জ সংঘাতের সমাধান করার সময় মনোযোগের মতো কাজ করে। (Git 1.7.1)
sehe

1
এখন গিট
মার্জেটুলের
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.