পূর্ববর্তী শাখায় চেকআউট করার কোনও উপায় আছে কি?


702

আমি সাজানোর cd -জন্য গিট জন্য সমতুল্য চাই । যদি আমি শাখা মধ্যে আছি masterএবং আমি চেকআউট foo, আমি ভালো কিছু টাইপ করতে সক্ষম হতে চাই git checkout -ফিরে যেতে master, আর ফিরে যাওয়ার আবার এটি টাইপ পাবে foo

এর মতো কি কিছু আছে? এটি কার্যকর করা কঠিন হবে?


2
আমি আমার পূর্ববর্তী গিট চেকআউট কমান্ডটি সন্ধান করতে ইউপি তীরটি টাইপ করতে চাই: পি
কিট হো

11
এর মধ্যে আপনার হাতকে বাড়ির অবস্থান থেকে সরিয়ে নেওয়া, জিসি টাইপ করা দ্রুত যা তারপরে চাপ দেওয়া পর্যন্ত আপনি যা সন্ধান করছেন তা খুঁজে না পাওয়া পর্যন্ত
ম্যাট ব্রিগস

@ ম্যাটব্রিগস আপনি কী টাইপ করেছেন gc-বা সেই শর্টহ্যান্ডের জন্য ছিলেনgit checkout -
jewbix.cube

2
@ jewbix.cube আপনার শেল এবং গিট উভয়ের জন্যই আপনাকে এলিয়াস সম্পর্কে শিখতে হবে।
গৌথিয়ার

@ কিটহো: আমি নিজেকে ক্রমাগত তা করতে চাইছি, তবে আমি যে আদেশটি চাইছি তা ইতিহাসে নাও থাকতে পারে যদি উদাহরণস্বরূপ, আমি কেবল শাখাটি তৈরি করেছি।
এম_এম

উত্তর:


1224

1.6.2 এর জন্য প্রকাশের নোটগুলি থেকে

@{-1}আপনি যে সর্বশেষ শাখায় ছিলেন তা উল্লেখ করার একটি উপায়। এটি
কেবল যেখানে অজানা নাম প্রত্যাশা করা হয় তা গ্রহণ করা হয় না, তবে যে কোনও জায়গায় একটি শাখার নাম আশা করা হয় এবং আপনি যখন শাখার নাম টাইপ করেছেন তেমন আচরণ করে।
যেমন git branch --track mybranch @{-1}, git merge @{-1}এবং
git rev-parse --symbolic-full-name @{-1}প্রত্যাশার মতো কাজ করবে।

এবং

git checkout -একটি সংক্ষিপ্তকরণ git checkout @{-1}


46
বাহ, আমার একেবারে চেষ্টা করা উচিত ছিল! মূর্ত - এটি একটি শেল-ইজম ছিল এবং এটির যদি কার্যকারিতাটি গিটে থাকে তবে এটি অন্যরকম কিছু হতে পারে
ম্যাট ব্রিগস

9
যখন আপনি দু'বার কোন কমিটমেন্ট এসএইচএ চেক আউট করেন তখন এটি ভাল কাজ করে না, এক্ষেত্রে @ {- 1} আপনি প্রথম চেকআউটের আগে কোথায় ছিলেন তা নির্দেশ করে ..
ব্যবহারকারীর 64646468৮

1
আমি জেডএসএইচ ব্যবহার করছি, এবং আমাকে উদ্ধৃতিতে @ {- 1 rap গুটিয়ে রাখতে হয়েছিল। অন্যথায় গিট চেপে গেছে:error: pathspec '@-' did not match any file(s) known to git. error: pathspec '@1' did not match any file(s) known to git.
মারফি র্যান্ডেল

14
এই প্রথম কোনও এসও উত্তর আমাকে অনিয়ন্ত্রিতভাবে হাসিয়ে তুলেছে। ভেবেছিলাম এতো কষ্ট হবে!
ওয়েন

25
শিক্ষাগত ব্যবহারের জন্য অতিরিক্ত কুডোস: সাধারণ সুবিধাটি দেখান, তারপরে কমপ্যাক্ট তবে কম সাধারণ শর্টহ্যান্ডের কথা উল্লেখ করুন! … আমি প্রায়শই ব্যবহার করি @{u}যা বর্তমান শাখার প্রবাহ শাখা। উদাহরণস্বরূপ এটি খুব কার্যকর git log @{u}..যা কোন প্রবাহের কমিটগুলি তালিকাভুক্ত করে যা এখনও টানেনি। এবং রূপান্তরটি git log ..@{u}যা কেবল স্থানীয় কমিটগুলি এখনও ধাক্কা দেয় না।
বেনজোহান

207

আজকাল এটি করার সহজ উপায় হ'ল:

git checkout -

... এটির একটি নাম

git checkout @{-1}

গিট চেকআউট বিয়োগ

আপনি যদি এই সম্পর্কে আরও জানতে চান তবে আমি এটি সম্পর্কে একটি সম্পূর্ণ নিবন্ধটি এখানে লিখেছি: গিটে পূর্ববর্তী শাখাটি চেকআউট করুন


3
পারফেক্ট। এটি করার গিট উপায়টি আমি সন্ধান করছিলাম যাতে আমি এই সঠিক উপন্যাসটি তৈরি করতে পারি। এটি উপস্থিত রয়েছে দেখে খুশি।
তাবিথা

3
পূর্ববর্তী শাখাগুলি পরীক্ষা না করে তালিকাভুক্ত করার কোনও উপায় আছে কি?
ইরোটেমিক

7
@ ইশোটিক বাশ ব্যবহার করে -for i in{1..10}; do git rev-parse --symbolic-full-name @{-$i}; done
বনসাইগিন

'গিট চেকআউট -' ওরফে দেখে আশ্চর্যজনক জিনিস! এটি হ'ল ঠিক যে ux আমি সন্ধান করছিলাম :)
জেমস টেলার

@ ইওরোটেমিক পাওয়ার পাওয়ারে এটি হবে git reflog | ? { $_ -match ': checkout: moving from (.*) to (.*)'} | % { $Matches[1] } । ব্যাশে আপনাকে সমতুল্য কিছু লিখতে হবে (রিফ্লগ পান এবং এটি ": চেকআউট:" স্ট্রিং যুক্ত লাইনে ফিল্টার করুন এবং তারপরে শাখার নাম বের করুন)। এটি আসলে
গিটটি

28

@ কার্ল নির্দেশ হিসাবে এবং git checkoutম্যানুয়াল থেকে :

একটি বিশেষ কেস হিসাবে, N-th সর্বশেষ শাখার জন্য "@ {- N}" সিনট্যাক্সটি শাখাটি পরীক্ষা করে (বিচ্ছিন্ন করার পরিবর্তে) পরীক্ষা করে। আপনি উল্লেখ করতে পারেন - যা "@ {- 1}" এর সমার্থক।

সুতরাং উভয় git checkout -এবং git checkout @{-1}এই ক্ষেত্রে কাজ করবে

আমি বিশ্বাস করি সবচেয়ে নিকটতম git reflogসর্বশেষতম moving from branch1 to branch2এবং ব্যবহার করে এবং পার্স করছেgit checkout branch1


11

কোনটি দ্বারা git checkout @{-N}কাজ করে তা বোঝার জন্য পূর্ববর্তী উত্তরের সাথে আরও কিছু বিশদ যুক্ত করুন । এটি চেকআউটের ইতিহাস পরিদর্শন করতে রিফ্লগটি অনুসরণ করে, সুতরাং আপনি যদি নিজের মতো কিছু অনুরূপ প্রয়োগ করতে চান তবে আপনার লাইনগুলি git reflogঅনুসন্ধানের আউটপুটকে পার্স করতে সক্ষম হতে হবে checkout:। আপনি গিট উত্সটিতে sha1_name.cবিশেষত ফাংশনটি বাস্তবায়ন পরীক্ষা করতে পারেন interpret_nth_prior_checkout



10

গিট সংস্করণ কমান্ডটি 2.23চালু করেছে git switchযা আপনি এটি করতে ব্যবহার করতে পারেন (এবং আরও অনেক কিছু)। অফিসিয়াল ডকুমেন্টেশন উদ্ধৃত:

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

আপনার নির্দিষ্ট ক্ষেত্রে আপনি git switch -আগের শাখায় ফিরে যেতে ইস্যু করতে পারেন। প্রথম শাখায় ফিরে আসতে আপনি একই আদেশটি আবার কার্যকর করতে পারেন।

পিএস এটি নয় যে আপনি ইতিমধ্যে এটি কীভাবে করবেন তা জানেন না (মানে আপনি যখন এই প্রশ্নটি জিজ্ঞাসা করেছেন 7 বছর হয়ে গেছে) তবে এটি ব্যবহার করার সময় উদ্ভূত একটি সাধারণ বিভ্রান্তিকে সম্বোধন করার কারণে এই আদেশটি কম বিভ্রান্তিকর এবং বন্ধুত্বপূর্ণ git checkout


5

আমার আগের শাখাটি চেকআউট করার জন্য একই চিন্তাভাবনা নিয়ে আমি এই প্রশ্নটিতে অবতরণ করেছি। আমি ব্যবহার করছি ohmyz মধ্যে Mac। নীচে কমান্ড আমাকে সাহায্য করেছে।

$ gco -
$ git checkout -

অন্যান্য zsh প্যাকেজ পরিচালকদের তুলনায় ওহমিজ অতি ধীর Just আমি অ্যান্টিজেন বা zplug এ একবার দেখার পরামর্শ দিই
স্পেকস

2
যদি এটি পরিষ্কার না হয় তবে এটি কাজ করে কারণ ওহ মাই জেড এর গিট প্লাগইনgco লেখার একটি স্বল্প উপায় হিসাবে সংজ্ঞায়িত করেছে git checkout। তাই gco -শুধু কল git checkout -
ররি ও'কেনে

আমার বন্ধু এটির ব্যাখ্যা দেওয়ার দরকার নেই git checkout -। ব্যর্থ সাফ আপডেট হয়েছে।
ভেঙ্কট.আর

1

সর্বাধিক জনপ্রিয় সমাধানটি হ'ল:

git checkout @{-N}

যেখানে চেকআউট ইতিহাসে ফিরে যাওয়ার শাখাগুলির এন - পদক্ষেপ গণনা।


1

এখানে গিটের নথিপত্রের অংশগুলির নির্দেশক রয়েছে যা অন্যান্য উত্তরগুলির দ্বারা প্রদত্ত সমাধান git checkout -এবং git checkout @{-1}সমাধানগুলি বর্ণনা করে :

  • যখন কোনো কমান্ড একটি গীত সংস্করণ উল্লেখ @{-<n>}, যেমন@{-1} মানে হলো " এন ম শাখা / কমিট বর্তমান এক আগে চেক আউট।" git checkout <branch>পুনরুক্তির জন্য ডকুমেন্টেশন : "আপনি @{-N}সিনট্যাক্সটি N-th সর্বশেষ শাখায় উল্লেখ করতে / git checkoutঅপারেশন ব্যবহার করে চেক আউট প্রতিশ্রুতিবদ্ধ করতে পারেন ” "

  • জন্য <branch>আর্গুমেন্টgit checkout , 'তুমিও' উল্লেখ করতে পারেন -'যা সমার্থক' @{-1}। "

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