মার্চুরিয়াল মুভ একটি নতুন শাখায় পরিবর্তিত হয়


124

আমার স্থানীয় সংগ্রহস্থলটিতে আমি প্রতিশ্রুতিবদ্ধ বেশ কয়েকটি পরিবর্তন করেছি, তবে এখনও তা ঠেলা যায়নি। যেহেতু কোনও বৈশিষ্ট্যটি প্রত্যাশার চেয়ে বেশি সময় নিচ্ছে, আমি চাপ দেওয়ার আগে এই পরিবর্তনগুলি একটি নামী শাখায় বদল করতে চাই। কিভাবে আমি এটি করতে পারব?


উত্তর:


153

মার্ক দ্বারা প্রস্তাবিত হিসাবে, এমকিউ এক্সটেনশন আপনার সমস্যার এক সমাধান for আইএমএইচও একটি সহজ ওয়ার্কফ্লো হ'ল রিবেস এক্সটেনশনটি ব্যবহার করা । ধরুন আপনার এর মতো একটি ইতিহাস রয়েছে:

@  changeset:   2:81b92083cb1d
|  tag:         tip
|  summary:     my new feature: edit file a
|
o  changeset:   1:8bdc4508ac7b
|  summary:     my new feature: add file b
|
o  changeset:   0:d554afd54164
   summary:     initial

এর অর্থ হল, রিভিশনটি 0সেই বেসটি যার ভিত্তিতে আপনি আপনার বৈশিষ্ট্যটিতে কাজ শুরু করেছিলেন। এখন আপনি 1-2একটি নামী শাখায় পুনর্বিবেচনা করতে চান , যাক বলুন my-feature। সংশোধন 0এবং সেই শাখাটি তৈরি করার আপডেট করুন :

$ hg up 0
$ hg branch my-feature
$ hg ci -m "start new branch my-feature"

ইতিহাস এখন এইরকম দেখাচ্ছে:

@  changeset:   3:b5939750b911
|  branch:      my-feature
|  tag:         tip
|  parent:      0:d554afd54164
|  summary:     start new branch my-feature
|
| o  changeset:   2:81b92083cb1d
| |  summary:     my new feature: edit file a
| |
| o  changeset:   1:8bdc4508ac7b
|/   summary:     my new feature: add file b
|
o  changeset:   0:d554afd54164
   summary:     initial

rebaseসংশোধনগুলিকে পুনর্বিবেচনার 1-2দিকে সরানোর জন্য কমান্ডটি ব্যবহার করুন 3:

$ hg rebase -s 1 -d 3

নিম্নলিখিত গ্রাফের ফলাফল:

@  changeset:   3:88a90f9bbde7
|  branch:      my-feature
|  tag:         tip
|  summary:     my new feature: edit file a
|
o  changeset:   2:38f5adf2cf4b
|  branch:      my-feature
|  summary:     my new feature: add file b
|
o  changeset:   1:b5939750b911
|  branch:      my-feature
|  summary:     start new branch my-feature
|
o  changeset:   0:d554afd54164
   summary:     initial

এটিই .. মার্কের উত্তরের মন্তব্যে যেমন উল্লেখ করা হয়েছে, ইতিমধ্যে পুশ চেঞ্জসেটগুলি ঘুরে আসা সাধারণত একটি খারাপ ধারণা, যদি না আপনি এমন একটি ছোট দলে কাজ না করেন যেখানে আপনি যোগাযোগ করতে এবং আপনার ইতিহাসের কারসাজি প্রয়োগ করতে সক্ষম হন।


4
আইএমএইচও এই সমাধানটির অপূর্ণতা হ'ল এটি "স্টার্ট নিউ ব্রাঞ্চ মাই-ফিচার" ডামি কমিট (অর্থাত্ কোনও যা কোনও ফাইল পরিবর্তন করে না) প্রবর্তন করে।
স্কুবার্থ

9
@ এসচুবার্থ: আমার ধারণা স্পষ্ট হওয়া এখানে একটি ভাল জিনিস। অতিরিক্ত পরিবর্তনটি যদি আপনার জন্য সমস্যা হয় তবে এটি সফল উত্তরটির সাথে একত্রিত করুন (উদাহরণস্বরূপ foldএখন অন্তর্নির্মিত হেরস্টেট এক্সটেনশনের কমান্ডটি ব্যবহার করে )।
ওবেন সোন

6
@ আমিররাচুম: hg log -G( গ্রাফলোগএক্সটেনশন )। আমি কিছু লাইন নিজেই কেটে ফেলেছি, তবে এটি কাস্টম লগ স্টাইলগুলি ব্যবহার করে স্বয়ংক্রিয়ভাবে রেন্ডার করা যেতে পারে
ওবেন সোন

2
রিবেস এক্সটেনশন সক্ষম করুন : mercurial.selenic.com/wiki/RebaseExistance#Configration
56ka

1
@ এসছুবার্থ আমি সম্মত আমার কর্মসূচিটি হ'ল আপনার অ-ডামি কমেটগুলিকে পুনরুদ্ধার করা - ডেমি কমিটের পিতামাতার সাথে - কিবারব্যাঞ্চগুলি পতাকা সহ, এবং তারপরে এইচজি আপনার ডামি কমিটকে স্ট্রিপ করুন। এটি একটি শাখার নাম পরিবর্তন করার জন্য অনেক কাজ, তবে কখনও কখনও মার্চুরিয়াল এর মতো বোবা হয়।
weberc2

30

আপনি এমকিউ এক্সটেনশন ব্যবহার করতে পারেন । আসুন বলি যে স্থানান্তরিত স্থানান্তরগুলি হ'ল সংশোধনগুলি 1-3-

hg qimport -r 1:3    # convert revisions to patches
hg qpop -a           # remove all them from history
hg branch new        # start a new branch
hg qpush -a          # push them all back into history
hg qfin -a           # finalize the patches

আমি :৩:6464 এবং: 66:68। আমদানি করতে চাই। আমি সংশোধনী পাচ্ছি 65
65৪

65 দিয়ে আপনি কি করতে চান? এমকিউ কেবল মাথা থেকে একটানা পরিবর্তনগুলি রূপান্তর করতে পারে। এটি সাধারণত পরিবর্তনযোগ্য পরিবর্তনগুলি পরিবর্তিত প্যাচগুলিতে রূপান্তরিত করে যা সম্পাদনা করা যায়। এটি হ্যাশগুলি পরিবর্তন করে (সমস্ত শিশুকে প্রভাবিত করে), সুতরাং আপনি এড়াতে পারবেন না।
মার্ক টোলোনেন

আমার প্রধান শাখায় আমি
প্রচুর

1
ঠেলাঠেলি করা চেঞ্জসেটগুলি সম্পাদনা করবেন না। এমকিউ হ্যাশগুলি পরিবর্তন করে যাতে তারা কার্যকরভাবে নতুন চেঞ্জসেট হয়। কেবল ইতিহাস সম্পাদনা করুন যা ধাক্কা দেয়নি।
মার্ক টোলোনেন

যদি আপনি ইতিমধ্যে 65 ঠেলাঠেলি করেছেন, তবে আপনি অবশ্যই স্পষ্টভাবে 63 এবং 64 সরাবেন না এবং কেবল: 66:6868 চলার জন্য স্থির করুন (আবার যদি আপনি তাদেরকে না ঠেকেন তবেই)।
ম্যাট

9

আমি এখানে প্যাচ সমাধানটি মার্ক টোলোনেন দ্বারা বর্ণিত পছন্দ করি

আমি কি আছে:

hg log -G

#default branch
@  changeset:   3:cb292fcdbde1
|
o  changeset:   2:e746dceba503
|
o  changeset:   1:2d50c7ab6b8f
|
o  changeset:   0:c22be856358b

আমি যা চাই:

  @  changeset:   3:0e85ae268e35
  |  branch:      feature/my_feature
  |
  o  changeset:   2:1450cb9ec349
  |  branch:      feature/my_feature
  |
  o  changeset:   1:7b9836f25f28
  |  branch:      feature/my_feature
  |
 /
|
o  changeset:   0:c22be856358b

মার্উরিয়াল কমান্ড:

hg export -o feature.diff 1 2 3
hg update 0
hg branch feature/my_feature
hg import feature.diff

এখানে আমার স্থানীয় সংগ্রহস্থলের অবস্থা

@  changeset:   6:0e85ae268e35
|  branch:      feature/my_feature
|
o  changeset:   5:1450cb9ec349
|  branch:      feature/my_feature
|
o  changeset:   4:7b9836f25f28
|  branch:      feature/my_feature
|
| o  changeset:   3:cb292fcdbde1
| |
| o  changeset:   2:e746dceba503
| |
| o  changeset:   1:2d50c7ab6b8f
|/
|
o  changeset:   0:c22be856358b

এখন আমার ডিফল্ট শাখা থেকে 1 2 এবং 3 সংশোধনগুলি মুছতে হবে। আপনি এমকিউ এর এক্সটেনশান থেকে স্ট্রিপ কমান্ড দিয়ে এটি করতে পারেন। hg stripভান্ডার থেকে চেঞ্জসেট এবং এর সমস্ত বংশধরকে সরিয়ে দেয়।

আপনার কনফিগারেশন ফাইল (.hgrc বা Mercurial.ini) এ নিম্নলিখিত লাইনগুলি যুক্ত করে এক্সটেনশন সক্ষম করুন:

vim ~/.hgrc এবং যোগ করুন :

[extensions]
mq =

এবং এখন এই পুনরুদ্ধারটি পুনর্বিবেচনা 1 এ স্ট্রিপ করুন।

hg strip 1

এবং আমরা এখানে

@  changeset:   3:0e85ae268e35
|  branch:      feature/my_feature
|
o  changeset:   2:1450cb9ec349
|  branch:      feature/my_feature
|
o  changeset:   1:7b9836f25f28
|  branch:      feature/my_feature
|
o  changeset:   0:c22be856358b

দ্রষ্টব্য: পরিবর্তনগুলি পৃথক হলেও সংশোধনগুলি একই


5

ঝুঁকির জন্য জিইআইআই ব্যবহার করার জন্য

  1. Tortoise Hg-> File-> এ যান Settingsতারপরে টিক চিহ্ন দিন rebase

এখানে চিত্র বর্ণনা লিখুন

  1. কচ্ছপ ইউআই পুনরায় চালু করুন

  2. নতুন শাখা তৈরি করুন যেখানে আপনি পরিবর্তনগুলি পরিবর্তন করবেন। বর্তমান শাখার নামটিতে ক্লিক করুন -> চয়ন করুন Open a new named branch-> শাখার নাম নির্বাচন করুন।

এখানে চিত্র বর্ণনা লিখুন

  1. আপনি যে পরিবর্তনগুলি পরিবর্তন করতে চান তা যদি না করা হয় তবে public(উদাহরণস্বরূপ draft) 5 এ যান (যদি পরিবর্তনগুলি ইতিমধ্যে প্রকাশিত হয়েছে এবং আপনি যদি প্রবীণ দেব না হন তবে আপনার সিনিয়র কারও সাথে কথা বলা উচিত (একটি বলির ছাগল পাওয়া উচিত) কারণ আপনি বড় জিনিসগুলি আপ করতে পারেন might , আমি কোনও দায় নিব না :))।

View-> Show Console(বা Ctrl+ L) এ যান এবং তারপরে কনসোলে লিখুন hg phase -f -d 2- যেখানে 2 সর্বনিম্ন সংশোধন হ'ল আপনি নতুন শাখায় চলে যাবেন।

  1. শাখা এবং পুনর্বিবেচনাতে যান (যদি আপনি পদক্ষেপ 3-এ তৈরি নতুন শাখায় পরিবর্তনগুলি সরিয়ে নিচ্ছেন তবে শীর্ষস্থানীয় সংশোধন হওয়া উচিত) Right Mouse->Update

  2. শাখা এবং পুনর্বিবেচনাতে যান Right Mouse- আপনি -> Modify History-> থেকে পরিবর্তনগুলি সরিয়ে নিয়ে যাবেনRebase

এখানে চিত্র বর্ণনা লিখুন

  1. ক্লিক করুন Rebaseএবং প্রার্থনা করুন কোনও দ্বন্দ্ব নেই, আপনার যদি প্রয়োজন হয় তবে মেশান।

  2. পরিবর্তনগুলি ধাকান, এই মুহুর্তে সমস্ত সংশোধনী হওয়া উচিত draft

  3. শাখায় শীর্ষস্থানীয় পুনর্বিবেচনায় যান Right Mouse- আপনি পরিবর্তনগুলি > Change Phase to-> - এ সরিয়েছিলেন Public

এখানে চিত্র বর্ণনা লিখুন

আশা করি এটি আপনার কিছুটা সময় সাশ্রয় করবে।


দারূন কাজ! এটি চেষ্টা করতে যাচ্ছি, যদিও কেবল একটি প্রশ্ন - কেন এই পর্বটি শেষের দিকে পাবলিকে পরিবর্তন করা হবে? "রিমোট রিপোজিটরিতে যে কোনও পরিবর্তনগুলি দেখা যায় তা সর্বজনীন" সুতরাং আপনি যখন ধাক্কা দেবেন তখন কি এটি জনসাধারণের কাছে সেট করা হবে না?
জোশুয়া ডক্সবাড়ি

@ জোশলডিডাক্স ঠেলাঠেলি করার সময় তারা publicআর স্বয়ংক্রিয়ভাবে পরিবর্তন হয় না (অন্তত আমার জন্য তারা তা করে না)।
মাতাস ভাইটকেভিচিয়াস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.