গিট: কীভাবে 'বিচ্ছিন্ন হেড' অবস্থা থেকে ফিরে আসবেন


217

যদি কেউ একটি শাখা চেক আউট করে:

git checkout 760ac7e

উদাহরণস্বরূপ b9ac70b, কেউ কীভাবে b9ac70bতার SHA1 না জেনে শেষ পরিচিত মাথাতে ফিরে যেতে পারে ?

উত্তর:


331

আপনি যদি মনে করেন যে কোন শাখাটি আগে পরীক্ষা করা হয়েছিল (উদাহরণস্বরূপ master) আপনি সহজভাবে করতে পারেন

git checkout master

বিচ্ছিন্ন হেড অবস্থা থেকে বেরিয়ে আসার জন্য ।

সাধারণভাবে বলা: git checkout <branchname>আপনাকে এর থেকে সরিয়ে দেবে।

আপনি যদি শাখার শেষ নামটি মনে না রাখেন তবে চেষ্টা করুন

git checkout -

এটি আপনার সর্বশেষ চেক আউট শাখাটিও পরীক্ষা করে দেখার চেষ্টা করে।


17
git checkout -- ঘাতক বৈশিষ্ট্য!
ডিম্পিয়াक्स

1
যদি আপনি কিছু না করেন তবে আপনি কি git checkout -b new_branch_nameপৃথকভাবে হেড অবস্থায় থাকাকালীন কমেটগুলি হারাবেন?
জোকাসিড

2
@ জোকাসিড হ্যাঁ আপনি করেন। এগুলি কিছু সময়ের জন্য উপস্থিত থাকে তবে যখন git gcচালানো হয়, সেগুলি চিরতরে সরানো হয়। git reflogযতক্ষণ না তারা সেখানে থাকে ততক্ষণ আপনি এগুলি দেখতে পারবেন ।
eckes

আপনি যদি এটি করেন তবে আপনি বিচ্ছিন্ন হেডে করা কোনও কমিট / পরিবর্তনগুলি হারাবেন না? এটি কি আরও ভাল উপায় নয়? stackoverflow.com/a/61489179/13087176
প্রমত্ত boopenstein

পুনঃটুইট : jocassid ইতিমধ্যে এই উল্লেখ stackoverflow.com/questions/11801071/...
eckes

16

git reflogপূর্বে চেক আউট করা কমিটগুলির হ্যাশগুলি খুঁজে পেতে ব্যবহার করুন ।

আপনার সর্বশেষ চেক আউট শাখায় পৌঁছানোর জন্য একটি শর্টকাট কমান্ড (যদিও এটি বিচ্ছিন্ন হেড এবং মধ্যবর্তী কমিটির সাথে সঠিকভাবে কাজ করে কিনা তা নিশ্চিত নয়) git checkout -


4

আমার এই প্রান্তের কেসটি ছিল, যেখানে আমি কোডটির আগের সংস্করণটি পরীক্ষা করেছিলাম যেখানে আমার ফাইল ডিরেক্টরি কাঠামোটি আলাদা ছিল:

git checkout 1.87.1                                    
warning: unable to unlink web/sites/default/default.settings.php: Permission denied
... other warnings ...
Note: checking out '1.87.1'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. 
Example:

  git checkout -b <new-branch-name>

HEAD is now at 50a7153d7... Merge branch 'hotfix/1.87.1'

এর মতো ক্ষেত্রে আপনাকে বল প্রয়োগ করতে হবে (আপনি যখন জানবেন যে মূল শাখায় ফিরে যাওয়া এবং পরিবর্তনগুলি বাতিল করা একটি নিরাপদ কাজ))

git checkout master এটা কাজ করছে না:

$ git checkout master
error: The following untracked working tree files would be overwritten by checkout:
web/sites/default/default.settings.php
... other files ...

git checkout master --force(বা git checkout master -f) কাজ করেছে:

git checkout master -f
Previous HEAD position was 50a7153d7... Merge branch 'hotfix/1.87.1'
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.

1

আপনি detached HEADরাজ্যে কিছু নতুন কমিট করেছেন । আমি বিশ্বাস করি যদি আপনি অন্যান্য উত্তরগুলির পরামর্শ হিসাবে এটি করেন:

git checkout master
# or
git checkout -

তাহলে আপনি আপনার প্রতিশ্রুতি হারাতে পারেন !! পরিবর্তে, আপনি এটি করতে চাইতে পারেন:

# you are currently in detached HEAD state
git checkout -b commits-from-detached-head

এবং তারপরে commits-from-detached-headআপনি যা চান শাখায় মার্জ করুন , যাতে আপনি কমিটগুলি হারাবেন না।

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