একটি গিট বিচ্ছিন্ন মাথা ঠিক করুন?


1453

আমি আমার সংগ্রহশালায় কিছু কাজ করছি এবং লক্ষ্য করেছি যে একটি ফাইলে স্থানীয় পরিবর্তন হয়েছে। আমি তাদের আর চাইনি তাই আমি ফাইলটি মুছলাম, এই ভেবে যে আমি কেবল একটি তাজা অনুলিপি চেকআউট করতে পারি। আমি গিট সমতুল্য করতে চেয়েছিলাম

svn up .

ব্যবহার করে git pullকাজ হবে বলে মনে হয় নি। কিছু এলোমেলো অনুসন্ধান আমাকে এমন একটি সাইটে নিয়ে যায় যেখানে কেউ করার সুপারিশ করে

git checkout HEAD^ src/

( srcডিরেক্টরিটি মুছে ফেলা ফাইল রয়েছে)।

এখন আমি জানতে পারি যে আমার মাথা আলাদা হয়ে গেছে। এটা কি আমার কোন ধারণা নেই। আমি কীভাবে পূর্বাবস্থায় ফেরাতে পারি?


69
git checkout masterআপনাকে মাস্টার শাখায় ফিরিয়ে আনবে। আপনি যদি কোনও কাজের অনুলিপি পরিবর্তনগুলি সাফ করতে চান, আপনি সম্ভবত এটি করতে চেয়েছিলেন git reset --hard
আবে ভোলেকার


আপনি যদি প্রতিশ্রুতি না git checkout -- src/
রাখেন

এটি চেষ্টা করুন: লিঙ্ক । সংক্ষেপেcreate temp branch - checkout temp branch - checkout master - delete temp branch
ফিদেব

@ অ্যাবেভোলেকার মন্তব্যগুলিতে আপনার অর্থ কী working copy changes? আপনি কি অন্য প্রতিশ্রুতি পরীক্ষা করার পরে ফাইলগুলিতে করা পরিবর্তনগুলি উল্লেখ করছেন (যেমন, বিচ্ছিন্ন মাথা অবস্থায় থাকাকালীন আপনি যে পরিবর্তনগুলি করেছেন)?
মিন ট্রান

উত্তর:


2147

বিচ্ছিন্ন মাথা মানে আপনি আর কোনও শাখায় নেই, আপনি ইতিহাসের একক প্রতিশ্রুতি পরীক্ষা করে দেখেছেন (এক্ষেত্রে হেডের পূর্ববর্তী প্রতিশ্রুতি, অর্থাৎ শিরোনাম ^)।

আপনি যদি আলাদা হওয়া হেডের সাথে যুক্ত আপনার পরিবর্তনগুলি মুছতে চান

আপনার কেবলমাত্র যে শাখায় ছিলেন সেগুলি পরীক্ষা করা দরকার, যেমন

git checkout master

পরের বার আপনি কোনও ফাইল পরিবর্তন করেছেন এবং এটি সূচীতে থাকা অবস্থায় ফিরিয়ে আনতে চান, আগে ফাইলটি মুছবেন না, কেবলমাত্র

git checkout -- path/to/foo

এটি সূচীতে অবস্থিত ফাইলটিকে এই ফাইলটিতে পুনরুদ্ধার করবে।

আপনি যদি নিজের পরিবর্তনগুলি বিচ্ছিন্ন হেডের সাথে যুক্ত রাখতে চান

  1. চালান git branch tmp- এটি আপনার নতুন পরিবর্তন নামে পরিচিত একটি শাখায় পরিবর্তনগুলি সংরক্ষণ করবে tmp
  2. চালান git checkout master
  3. আপনি যে পরিবর্তনগুলি করেছেন তা সংযুক্ত করতে চান তবে শাখা থেকে masterচালান । দৌড়ানোর পরে আপনার শাখায় থাকা উচিত ।git merge tmpmastermastergit checkout master

6
"এটি আপনার কোনও পরিবর্তন করার আগে ফাইলটিকে সে অবস্থায় ফিরিয়ে আনবে" " -> এটি সূচকে থাকা অবস্থায় ফিরিয়ে
আনবে

87
এই ত্রুটিটি প্রথম স্থানে কেন ঘটে? এটি আমি গিটকে ঘৃণা করি সেগুলির মধ্যে একটি - কখনও কখনও সম্পূর্ণ এলোমেলো আচরণ। মার্কুরিয়াল নিয়ে কখনও এ জাতীয় সমস্যা হয়নি।
ভায়োলেট জিরাফ

97
@ ভায়োলেটজিরাফ এটি ত্রুটি বা এলোমেলো কিছু নয় - আপনি পূর্বের প্রতিশ্রুতিটি পরীক্ষা করার সময় আপনার ভান্ডারটি কেবল সেই রাজ্যে চলে আসে। "বিচ্ছিন্ন হেড" একটি সতর্কতা হিসাবে কাজ করে যে আপনি যদি সেই জায়গা থেকে কোনও কাজ করার ইচ্ছা করেন তবে আপনি একটি শাখাও তৈরি করতে বা নির্দেশ করতে চাইতে পারেন। তবে আপনি যদি কেবল সেই ট্যাগটি দেখতে বা প্রতিশ্রুতিবদ্ধ করতে চান তবে আলাদা মাথাব্যবস্থায় থাকায় কোনও ভুল নেই।
নীল নেইমান

22
যদি আপনি বিচ্ছিন্ন মাথাতে প্রতিশ্রুতিবদ্ধ থাকেন তবে এটি করবেন না, অন্যান্য উত্তর দেখুন। যদি তা করেন তবে আপনি আগের হেড Previous HEAD position was 7426948...
গিটের

9
@ ভায়োলেটজিরাফ: মার্কুরিয়ালের উপর ভিত্তি করে যা হচ্ছে তার একটি মানসিক মডেল আপনার রয়েছে তবে আপনি গিট ব্যবহার করছেন। আপনি যদি গিটের মডেলের সাথে মানানসই মানসিক মডেলটি সামঞ্জস্য করতে চান না, তবে জিনিসগুলি এলোমেলোভাবে প্রদর্শিত হতে থাকবে appear দেখে মনে হচ্ছে আপনি ভিআর গগলস নিয়ে বাইরে ঘুরে বেড়াচ্ছেন, এবং আপনার মনে হয় আপনি বিমানটি উড়াচ্ছেন তবে আপনি সত্যই রাস্তাটি অতিক্রম করছেন। আপনি গাড়িতে ধাক্কা খেয়ে যাবেন
আইকনোক্লাস্ট

477

আপনি যদি ফাইলগুলি পরিবর্তন করতে চান তবে আপনি হারাতে চান না, আপনি সেগুলি ধাক্কা দিতে পারেন। আমি তাদের বিচ্ছিন্ন মোডে প্রতিশ্রুতিবদ্ধ করেছি এবং তারপরে আপনি পরে মাস্টারটিতে সংহত করতে একটি অস্থায়ী শাখায় যেতে পারেন।

git commit -m "....."
git branch my-temporary-work
git checkout master
git merge my-temporary-work

থেকে নিষ্কাশিত:

বিচ্ছিন্ন মাথায় তৈরি প্রতিশ্রুতি দিয়ে কী করবেন


27
আমি এটি পছন্দসই সমাধান হিসাবে পেয়েছি - বিশেষ করে যদি আপনি স্বতন্ত্র সংস্করণটি পরীক্ষা করে দেখে আপনি যে পরিবর্তনগুলি করতে চান তা রাখতে চান।
15

10
@ অ্যাডস ওয়েব ওয়ার্ক: আমি সম্মত। অন্য সমস্ত উত্তরগুলি পূর্ববর্তী অবস্থায় ফিরে যাওয়া এবং স্থানীয়ভাবে বিচ্ছিন্ন প্রধানের স্থলে পরিবর্তনগুলি হারাতে পরামর্শ দেয়।
Sk8erPeter

6
কেন না git stash? যে হিসাবে আমার মনে আসে প্রথম জিনিস। একটি নতুন শাখা তৈরি করা একটি ওভারকিল হবে।
থিমস্মারাইন

2
আপনার কাছে পারে git rebase my-temporary-workএবং তারপর শাখা মুছতে git branch -d my-temporary-workতাই এটি হচ্ছে যে আপনি প্রথম স্থানে সঠিক শাখা করতে প্রতিশ্রুতিবদ্ধ।
জোল্টন

@ জিেকএ git stashএই ক্ষেত্রে উপযুক্ত সরঞ্জামের মতো শোনায় । আপনি কি তা অর্জনের জন্য প্রস্তাবিত পদক্ষেপগুলি সহ একটি উত্তর লিখতে পারেন?
জোল্টন

156

একটি অস্থায়ী শাখা তৈরি না করে একটি সমাধান।

যখন আপনি ইতিমধ্যে এই মোডে কিছু পরিবর্তন করেছেন এবং allyচ্ছিকভাবে আপনার পরিবর্তনগুলি সংরক্ষণ করতে চান তখন কীভাবে প্রস্থান করবেন ("ফিক্স") তার থেকে আলাদা করুন state

  1. আপনি রাখতে চান পরিবর্তন প্রতিশ্রুতিবদ্ধ। আপনি যদি বিচ্ছিন্ন প্রধান রাষ্ট্রের যে কোনও পরিবর্তন নিতে চান, সেগুলি প্রতিশ্রুতিবদ্ধ। ভালো লেগেছে:

    git commit -a -m "your commit message"
    
  2. আপনি রাখতে চান না এমন পরিবর্তনগুলি বাতিল করুন। হার্ড রিসেটটি আপনাকে বিচ্ছিন্ন হেড অবস্থায় যে কোনও অনির্দিষ্ট পরিবর্তন এনে দেবে:

    git reset --hard
    

    (এটি ব্যতীত, পদক্ষেপ 3 ব্যর্থ হবে, পৃথক হেডে পরিবর্তিত uncommitted ফাইল সম্পর্কে অভিযোগ।)

  3. আপনার শাখা দেখুন। আপনি পূর্বে যে শাখায় কাজ করেছিলেন সেটিকে পরীক্ষা করে আলাদা হেড স্টেট থেকে প্রস্থান করুন, উদাহরণস্বরূপ:

    git checkout master
    
  4. আপনার প্রতিশ্রুতি গ্রহণ করুন। আমার এখন অন্য প্রশ্নের উত্তর হিসাবে দেখানো হয়েছে, চেরি-বাছাইয়ের মাধ্যমে আপনি বিচ্ছিন্ন হেড স্টেটে আপনার করা কমিটগুলি এখন নিতে পারবেন ।

    git reflog
    git cherry-pick <hash1> <hash2> <hash3> …
    

git reset --hardঠিক হয়েছিল আমার প্রয়োজন হয়েছে, কারণ আমি উৎস হতে এবং স্থানীয় পরিবর্তনগুলি সরানো উচিত মূল প্রজেক্টের চাই।
মার্কাস জেলার

দুর্দান্ত উত্তর, এটি আমার পক্ষে কাজ করেছে
এমজিলন্ডন

130

বিচ্ছিন্ন মাথা মানে:

  1. আপনি আর কোন শাখায় নেই,
  2. আপনি ইতিহাসের একক প্রতিশ্রুতি পরীক্ষা করে দেখেছেন

আপনার যদি কোনও পরিবর্তন না হয়: আপনি নিম্নলিখিত কমান্ডটি প্রয়োগ করে মাস্টার পরিবর্তন করতে পারেন

  git checkout master

আপনার যদি এমন পরিবর্তন থাকে যা আপনি রাখতে চান:

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

git branch  temp
git checkout master
git merge temp

2
নিখুঁত, তারপরে শাখা টেম্প অপসারণের পরে
ডেভি মেনেজেস

64

আমি বুঝতে পেরেছিলাম যে আমি বিচ্ছিন্ন মাথায় রয়েছি এবং ইতিমধ্যে কিছু পরিবর্তন করেছি Here

আমি পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ।

$ git commit -m "..."
[detached HEAD 1fe56ad] ...

আমি কমিটের হ্যাশ (1fe56ad) মনে পড়ে। তারপরে আমি যে শাখাটি চালু করেছিলাম তা চেক আউট করেছিলাম।

$ git checkout master
Switched to branch 'master'

অবশেষে আমি শাখায় কমিটের পরিবর্তনগুলি প্রয়োগ করেছি।

$ git cherry-pick 1fe56ad
[master 0b05f1e] ...

আমি মনে করি এটি একটি অস্থায়ী শাখা তৈরির চেয়ে কিছুটা সহজ।


2
এই উত্তর হওয়া উচিত। এটি আপনার নগ্ন ফাইলগুলি ফিরে পেয়েছে।
ব্লাইন্ড ওয়ান্ডারার

2
হ্যাঁ, এটি করা সবচেয়ে সহজ কাজটি - পরের বার যখন এটি ঘটে তখন ওয়েব অনুসন্ধান না করেই যথেষ্ট সহজ simple প্রতিশ্রুতিবদ্ধ, নোট হ্যাশ, আপনি যে প্রতিশ্রুতিবদ্ধ বোঝাতে চেয়েছিলেন সেই শাখায় ফিরে যান এবং git cherry-pick <hash>
ম্যাসন

সমাধানের জন্য ধন্যবাদ। এই সাহায্য করেছে। আমি আরও যোগ করতে পারি যে আমাকে "গিট পুশ অরিজিন মাস্টার" করতে হয়েছিল যাতে আমার মাস্টার এবং উত্স / মাস্টার একই প্রতিশ্রুতিবদ্ধ হওয়ার দিকে ইঙ্গিত করে।
Turnip424

1
এটি মূলত ট্যানিয়াসের উত্তর (এক বছরেরও বেশি আগে পোস্ট করা)।
পিটার মর্টেনসেন 15 ই

ধন্যবাদ এই প্রফুল্ল চয়নটি সর্বশেষ বিচ্ছিন্ন মাথা পরিবর্তনগুলি ফিরিয়ে আনুন
ওমেগা কিউব

54

যদি আপনি কিছু পরিবর্তন করেন এবং বুঝতে পারেন যে আপনি বিচ্ছিন্ন মাথায় রয়েছেন তবে এর জন্য একটি সহজ সমাধান রয়েছে: স্ট্যাশ -> চেকআউট মাস্টার -> স্ট্যাশ পপ:

git stash
git checkout master   # Fix the detached head state
git stash pop         # Or for extra safety use 'stash apply' then later 
                      #   after fixing everything do 'stash drop'

আপনার অকাট্য পরিবর্তন এবং সাধারণ "সংযুক্ত" হেড থাকবে, যেমন কিছুই হয়নি।


2
এই খারাপ ছেলেটিকে বুকমার্ক করেছেন - একটি টেম্প শাখা তৈরি করে সংরক্ষণ করে। একটি ট্রিট কাজ করেছেন।
টিম টাইলার

1
আমি প্রায়শই একটি গিট সাবমডিউল চেক করে তারপরে পরিবর্তন করে আলাদা করে ফেলা হয় state আমি দেখতে পেয়েছি যে জিনিসগুলি স্থির করার জন্য এটি সেরা এবং সহজ সমাধান যাতে আমি আমার পরিবর্তনগুলি সংরক্ষণ করতে পারি।
ব্যবহারকারীর 35359531

1
যদি আপনি ইতিমধ্যে কোনও বিচ্ছিন্ন অবস্থায় পরিবর্তন নিয়ে এসে থাকেন তবে এটি কাজ করে না?
দানিজেল

40

আপনি যখন কোনও নির্দিষ্ট প্রতিশ্রুতিটি পরীক্ষা করে দেখেন git, আপনি আলাদা মাথাব্যবস্থায় শেষ হন ... অর্থাৎ আপনার কার্যকরী অনুলিপিটি আর কোনও নামকৃত রেফারেন্সের ("মাস্টার" এর মতো) প্রতিফলিত করে না। এটি সংগ্রহস্থলের অতীতের অবস্থা যাচাই করার জন্য দরকারী, তবে আপনি যদি পরিবর্তনগুলি পুনরায় ফিরিয়ে আনার চেষ্টা করছেন তবে যা চান তা নয়।

আপনি যদি কোনও নির্দিষ্ট ফাইলে পরিবর্তন করেছেন এবং আপনি কেবল সেগুলি বাতিল করতে চান তবে আপনি checkoutএই আদেশটি ব্যবহার করতে পারেন :

git checkout myfile

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

git reset --hard HEAD^

তবে, যদি আপনি অন্য লোকদের সাথে সংগ্রহস্থলটি ভাগ করে নিচ্ছেন git resetতবে একটিটি বিঘ্নিত হতে পারে (কারণ এটি সংগ্রহস্থলের ইতিহাসের একটি অংশ মুছে ফেলে)। আপনি যদি ইতিমধ্যে অন্য ব্যক্তির সাথে পরিবর্তনগুলি ভাগ করে নিয়ে থাকেন তবে আপনি সাধারণত git revertপরিবর্তে এটি দেখতে চান , যা একটি "অ্যান্টিকোমিট" উত্পন্ন করে - অর্থাৎ এটি একটি নতুন প্রতিশ্রুতি তৈরি করে যা প্রশ্নের পরিবর্তনগুলিকে "অদলিত করে"।

গিট বুকের আরও বিশদ রয়েছে।


1
আমি @ র‌্যালফিথিনেঞ্জার উত্তরে git checkout path/to/fooযেমন বলেছি, এর সাথে দ্বন্দ্ব হতে পারে git checkout some-branch, সুতরাং git checkout -- path/to/fooএই দ্বন্দ্বগুলি এড়াতে ব্যবহার করা ভাল ।
দিয়েগো লেগো

29

হেড একটি পয়েন্টারে থাকে এবং ফলস্বরূপ এটি প্রত্যক্ষ বা পরোক্ষভাবে - একটি নির্দিষ্ট প্রতিশ্রুতিতে নির্দেশ করে:

সংযুক্ত   অর্থ যে কিছু সংযুক্ত শাখা (অর্থাত এটা পয়েন্ট একটি শাখা পর্যন্ত)।
বিচ্ছিন্ন হেডের অর্থ হ'ল এটি কোনও শাখার সাথে সংযুক্ত নয় , অর্থাত্ এটি কিছু প্রতিশ্রুতিবদ্ধতার দিকে সরাসরি নির্দেশ করে

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

অন্য কথায়:

  • যদি এটি সরাসরি কোনও প্রতিশ্রুতিতে নির্দেশ করে তবে হেড আলাদা হয়
  • যদি এটি অপ্রত্যক্ষভাবে কোন প্রতিশ্রুতিতে নির্দেশ করে , (যেমন এটি একটি শাখার দিকে নির্দেশ করে, যার ফলে প্রতিশ্রুতিতে নির্দেশ হয়), হেড সংযুক্ত থাকে

সংযুক্ত / বিচ্ছিন্ন হেডের সাথে পরিস্থিতিগুলি আরও ভালভাবে বুঝতে, উপরের চিত্রের চতুর্ভুজটির দিকে পরিচালিত পদক্ষেপগুলি দেখান।

আমরা সংগ্রহস্থলের একই অবস্থা দিয়ে শুরু করি (সমস্ত চতুষ্কোণের চিত্র একই):

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


এখন আমরা সঞ্চালন করতে চাই git checkout- পৃথক ছবিতে বিভিন্ন লক্ষ্যবস্তু সহ (তাদের উপরের কমান্ডগুলি জোর দেওয়ার জন্য ম্লান হয়ে যায় যে আমরা কেবল সেই আদেশগুলি প্রয়োগ করতে যাচ্ছি ):

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


এই আদেশগুলি সম্পাদন করার পরে এই পরিস্থিতি :

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

আপনাকে, মাথা পয়েন্ট দেখতে পারেন লক্ষ্য এর git checkoutএকটি করুন - কমান্ড শাখা (যমজের একজন প্রথম 3 চিত্র), অথবা (সরাসরি) একটি থেকে কমিট (যমজের একজন শেষ চিত্র)।

কার্যনির্বাহী ডিরেক্টরিটির বিষয়বস্তুও যথাযথ কমিট (স্ন্যাপশট) অনুসারে পরিবর্তিত হয়, অর্থাৎ হেডের দ্বারা প্রতিশ্রুতিবদ্ধ পয়েন্ট (প্রত্যক্ষ বা পরোক্ষভাবে) অনুসারে।


সুতরাং আমরা এখন এই উত্তরের শুরু হিসাবে একই পরিস্থিতিতে:

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


6
এটি পড়েনি, তবে আপ আপনার দ্বারা তৈরি সুন্দর ছবিগুলির পক্ষে ভোট দিয়েছে;)।
কার্লো উড

@ কার্লো, ধন্যবাদ!
মেরিয়ানড

22

যেহেতু "বিচ্ছিন্ন হেড স্টেট" আপনার একটি অস্থায়ী শাখায় রয়েছে তাই কেবল ব্যবহার করুন git checkout -যা আপনাকে সর্বশেষ শাখায় ফেলেছিল।


1
সতর্কতা অবলম্বন করুন, আপনি যখন বিচ্ছিন্ন মাথাব্যবস্থায় ছিলেন তখন আপনি যে কোনও প্রতিশ্রুতি করেছেন তা শিথিল করবেন।
আজাক 6

@ আজাক আপনি সত্যিই এই কমিটগুলি হারাবেন না। এগুলি এখনও মাধ্যমে উপলব্ধ git reflogএবং এগুলি একটি নতুন শাখায় বা git cherry-pickকোনও বিদ্যমান শাখার মাধ্যমে নিয়ে যাওয়া যেতে পারে । এই প্রশ্নটি দেখুন ।
ট্যানিয়াস

7

ফিলিপ গারবারের উত্তরটি আরও স্পষ্ট করতে এখানে এই:

গিট চেরি-পিক

আগে cherry-pick, git checkout masterএই ক্ষেত্রে একটি প্রয়োজনীয়। তদ্ব্যতীত, এটি শুধুমাত্র একটি commitইন দিয়ে প্রয়োজন detached head


6

অভিযোজ্য বস্তু

আপনি যে শাখায় ফিরে যেতে চান তা যদি আপনার করা শেষ চেকআউট হয় তবে আপনি কেবল ব্যবহার করতে পারেন checkout @{-1}। এটি আপনাকে আপনার আগের চেকআউটে ফিরিয়ে নিয়ে যাবে।

আরও, উদাহরণস্বরূপ, আপনি এই কমান্ডটি দিয়ে উলামা করতে পারেন, git global --config alias.prevযাতে আপনাকে git prevপূর্ববর্তী চেকআউটে আবার টগল করতে টাইপ করতে হবে।


4

"বিচ্ছিন্ন মাথাতে" থাকার অর্থ হ'ল হেড নির্দিষ্ট নির্দিষ্ট নামবিহীন প্রতিশ্রুতি (নামযুক্ত শাখার বিপরীতে) বোঝায় (সিএফ: https://git-scm.com/docs/git-checkout বিভাগ বিচ্ছিন্ন মাথা )

সমস্যা সমাধানের জন্য আপনাকে কেবল সেই শাখাটি নির্বাচন করতে হবে যা আগে দ্বারা নির্বাচিত হয়েছিল

git checkout @{-1}


2

আপনি যখন মাথা বিচ্ছিন্ন অবস্থায় থাকবেন এবং নতুন ফাইল তৈরি করবেন, প্রথমে নিশ্চিত হয়ে নিন যে এই নতুন ফাইলগুলি সূচীতে যুক্ত হয়েছে, উদাহরণস্বরূপ:

git add .

তবে আপনি যদি কেবল বিদ্যমান ফাইলগুলি পরিবর্তন বা মুছে ফেলে থাকেন তবে আপনি একই সময়ে (-a) যুক্ত করতে এবং বার্তার (-m) দিয়ে প্রতিশ্রুতিবদ্ধ করতে পারেন:

git commit -a -m "my adjustment message"

তারপরে আপনি নিজের বর্তমান অবস্থার সাথে সহজেই একটি নতুন শাখা তৈরি করতে পারেন:

git checkout -b new_branch_name

আপনার একটি নতুন শাখা থাকবে এবং আপনার সমস্ত সমন্বয়গুলি সেই নতুন শাখায় থাকবে। তারপরে আপনি যেমন খুশি তেমন দূরবর্তী এবং / অথবা চেকআউট / টান / একত্রিত করা চালিয়ে যেতে পারেন।


1

গিট আমাকে কীভাবে এটি করতে হবে তা বলেছে।

যদি আপনি টাইপ করেন:

git checkout <some-commit_number>

স্থিতি সংরক্ষণ করুন

git add .
git commit -m "some message"

তারপর:

 git push origin HEAD:<name-of-remote-branch>

1

আমি আমার পরিবর্তনগুলি তাই রাখতে চেয়েছিলাম, আমি কেবল এটি করা ঠিক করেছি ...

git add .
git commit -m "Title" -m "Description"
(so i have a commit now example: 123abc)
git checkout YOURCURRENTBRANCH
git merge 123abc
git push TOYOURCURRENTBRANCH

যে আমার জন্য কাজ


1

সাধারণত HEADএকটি শাখার দিকে নির্দেশ করে। পরিবর্তে যখন এটি কোনও শাখার দিকে ইশারা না করে যখন এটি 69e51কোনও কমিটের হ্যাশকে নির্দেশ করে যখন এটির অর্থ আপনার পৃথক পৃথক মাথা রয়েছে। সমস্যাটি সমাধানের জন্য আপনাকে এটি দুটি শাখা নির্দেশ করতে হবে। এটি ঠিক করার জন্য আপনি দুটি জিনিস করতে পারেন।

  1. গিট চেকআউট অন্যান্য_ব্রাঞ্চ // যখন আপনাকে সেই কমিটের কোড দরকার হয় তখন সম্ভব হয় না hash
  2. একটি নতুন শাখা তৈরি করুন এবং সদ্য তৈরি হওয়া শাখায় কমিট হ্যাশটি নির্দেশ করুন।

হেডকে অবশ্যই একটি শাখার দিকে নির্দেশ করতে হবে, কমিট হ্যাশ নয় স্বর্ণের নিয়ম।


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

1

বিচ্ছিন্ন মাথা মানে আপনি নিজের শাখাটি যথাযথভাবে পরীক্ষা করে দেখেন নি বা আপনি একটিমাত্র প্রতিশ্রুতি সন্ধান করেছেন।

আপনি এই ধরনের একটি প্রসঙ্গের সম্মুখীন তাহলে প্রথম লুকিয়ে আপনার স্থানীয় পরিবর্তনগুলি যাতে আপনি আপনার পরিবর্তনগুলি হারাবেন না।

তারপরে ... কমান্ডটি ব্যবহার করে আপনার পছন্দসই শাখাটি চেকআউট করুন:

ধরা যাক আপনি শাখা মাইআরগিনাল ব্রাঞ্চ চান:

গিট চেকআউট -b কিছু নাম উত্স / মাইআরিগাইনাল ব্র্যাঞ্চ


1

আপনি সম্ভবত করেছেন git reset --hard origin/your-branch

ন্যায়বিচার করার চেষ্টা করুন git checkout your-branch


0
git pull origin master

আমার জন্য কাজ। এটি কেবল স্পষ্টভাবে দূরবর্তী এবং শাখার নাম দেওয়ার বিষয়ে।


0

আমার ক্ষেত্রে, আমি দৌড়ে এসেছি git statusএবং আমি দেখেছি যে আমার ওয়ার্কিং ডিরেক্টরিতে আমার কিছু চিহ্নবিহীন ফাইল রয়েছে।

আমি যে রিবেসটি সম্পাদন করতে চাইছিলাম তা চালানোর জন্য আমাকে কেবল তাদের পরিষ্কার করতে হয়েছিল (যেহেতু তাদের দরকার নেই)।


0

এটি আমার পক্ষে কাজ করে, এটি বিচ্ছিন্ন মাথার জন্য একটি নতুন শাখা বরাদ্দ করবে:

গিট চেকআউট নতুন_ ব্রাঞ্চ_নাম বিচ্ছিন্ন_হেড_গারবাজে_ নাম


0

বিচ্ছিন্ন হেডের অর্থ হ'ল আপনি বর্তমানে কোনও শাখায় নেই। আপনি যদি আপনার বর্তমান পরিবর্তনগুলি রাখতে চান এবং কেবল একটি নতুন শাখা তৈরি করতে চান তবে আপনি যা করেন তা এই:

git commit -m "your commit message"
git checkout -b new_branch

এরপরে, আপনি সম্ভাব্যভাবে এই নতুন শাখাটিকে অন্যান্য শাখার সাথে একীভূত করতে চান want গিট "একটি কুকুর" আদেশটি সর্বদা সহায়ক

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