গিট ব্যবহার করে আগের কমিট থেকে শাখা


1797

আমার যদি কমিট থাকে তবে আমি এন -3 কমিট থেকে কীভাবে শাখা করব?

আমি প্রতিটি কমিটের হ্যাশ দেখতে পাচ্ছি।

উত্তর:


2543

আপনি একটি হ্যাশের মাধ্যমে শাখা তৈরি করতে পারেন:

git branch branchname <sha1-of-commit>

বা প্রতীকী রেফারেন্স ব্যবহার করে:

git branch branchname HEAD~3

শাখাটি তৈরি করার সময় চেকআউট করতে, ব্যবহার করুন

git checkout -b branchname <sha1-of-commit or HEAD~3>

42
1.8.2 গিট আমাকে প্রথম ফর্মটির জন্য সংক্ষিপ্ত sha1 ব্যবহার করতে দিন।
ড্যান বেনামি

53
@ ম্যাটফেনউইক গিট আপনাকে হ্যাশের অনুমতি দেওয়া সর্বত্র সংক্ষিপ্ত হ্যাশগুলি ব্যবহার করার অনুমতি দেবে, যতক্ষণ না সংক্ষিপ্ত হ্যাশ সংগ্রহস্থলটিতে '' অনন্য '' থাকে। সুতরাং এটি যদি কাজ না করে তবে হ্যাশ থেকে অন্য একটি চরিত্র যুক্ত করার চেষ্টা করুন।
পোকে

29
নতুন শাখাকে সার্ভারে সঠিকভাবে ঠেলাতে .. এই শেষ পদক্ষেপটি দরকার:git push origin BRANCH_NAME
জিন বো বো

3
<sha1-of-commit>রান থেকে একটি শাখা শুরু করতে git checkout -b <name-of-branch> <sha1-of-commit>তবে শাখাটি ইতিমধ্যে উপস্থিত থাকলেgit checkout -B <name-of-branch> <sha1-of-commit>
মোস্তাফাজ

258

Github.com এ এটি করতে:

  1. আপনার প্রকল্পে যান।
  2. "কমিটস" এ ক্লিক করুন।
  3. আপনি যে শাখাটি থেকে শাখা করতে চান সে বিষয়ে <> ("ইতিহাসের এই মুহুর্তে সংগ্রহস্থল ব্রাউজ করুন") এ ক্লিক করুন।
  4. উপরের বাম দিকে "ট্রি: এক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্স" ক্লিক করুন। ভাষা পরিসংখ্যান বারের ঠিক নীচে, আপনি "শাখা সন্ধান করুন বা তৈরি করুন" (কেবল সেখানে একটি নতুন শাখার নাম লিখুন) বিকল্প পাবেনপূর্ববর্তী প্রতিশ্রুতি থেকে শাখা

4
প্রশ্ন গিথুব নিয়ে নয়, গিট সম্পর্কে। বেশিরভাগ গিট সার্ভারগুলি গিথুব নয়।
অ্যান্ডার্স টর্নব্ল্যাড

46
যদিও এটি গিথুব গিট নয়, তবুও এটি প্রচুর সহায়ক ছিল!
লিজ

দুর্ভাগ্যক্রমে এটি এখনও অন্যান্য প্রতিশ্রুতিগুলির পরিবর্তনগুলি দেখায়, যা আমি এড়াতে চেয়েছিলাম, এই কারণেই আমি এই প্রশ্নের জন্য অনুসন্ধান করেছি
ম্যাক্সিম

83

গিট রিসেটের মাধ্যমে ম্যাজিকটি করা যেতে পারে ।

  1. একটি নতুন শাখা তৈরি করুন এবং এতে স্যুইচ করুন (সুতরাং আপনার সর্বশেষ কমিটগুলি এখানে সঞ্চিত আছে)

    git checkout -b your_new_branch

  2. আপনার পূর্ববর্তী কার্যকারী শাখায় ফিরে যান (ধরুন এটির মাস্টার)

    git checkout master

  3. সর্বশেষ এক্স কমিটস সরান, মাস্টার পরিষ্কার রাখুন

    git reset --hard HEAD~x # in your case, x = 3

এই মুহুর্ত থেকে, সমস্ত সর্বশেষ এক্স কমিটগুলি কেবলমাত্র নতুন শাখায় রয়েছে, আপনার আগের কার্যক্ষম শাখায় (মাস্টার) আর নেই।


7
এটিই আমি খুঁজছিলাম যেহেতু এটি মাস্টারের কাছ থেকে করা কমিটগুলি সরিয়ে দেয় এবং এটি করে তোলে যেন আপনি এই কমিটগুলি করার আগে শাখাটি তৈরির কথা মনে রেখেছিলেন। ধন্যবাদ।
সুপারবেক

7
শুধু ভুলে যাবেন না যে git reset --hardআপনি ইতিমধ্যে প্রতিশ্রুতিটি উত্সের দিকে ঠেলে দিলে এটি একটি ভাল ধারণা নয় ...
লুইসএফ

1
আপনি git push --force যদি ইতিমধ্যে শাখাটি ধাক্কা দিয়ে থাকেন তবে
মিলন


74

আপনি যদি নিশ্চিত হন না যে আপনি কোন অঙ্গীকারটি আগে থেকেই শাখা করতে চান আপনি কমিটগুলি পরীক্ষা করে দেখতে পারেন এবং তাদের কোডগুলি পরীক্ষা করতে পারেন (উত্স, সংকলন, পরীক্ষা দেখুন) দ্বারা

git checkout <sha1-of-commit>

আপনি যখন শাখা করতে চান সেই প্রতিশ্রুতিটি খুঁজে পাওয়ার পরে আপনি কমিটের মধ্যে থেকে (যেমন প্রথমে মাস্টারের কাছে ফিরে না গিয়ে) কেবল সাধারণ উপায়ে একটি শাখা তৈরি করে তা করতে পারেন:

git checkout -b <branch_name>

22
git checkout -b <branch-name> <sha1-of-commit>

1
এটি " git branch branchname <sha1-of-commit>" (স্বীকৃত উত্তর থেকে) থেকে কীভাবে আলাদা ?
পিটার মর্টেনসেন

আমি জানি না। আমি তাদের সমতুল্য মনে করি। আমি সবসময় git checkout -bএকটি নতুন শাখা তৈরি করতে ব্যবহার করি ।
টাইলার লং

10
stackoverflow.com/a/7987711/3590629 গিট শাখা ... শাখা তৈরি করে তবে আপনাকে বর্তমান শাখায় ছেড়ে দেয়। গিট চেকআউট-বি ... শাখা তৈরি করে এবং আপনাকে এতে স্যুইচ করে।
esme_louise

9

আপনার গিথুব রেপোতে এটি করার একটি দ্রুত উপায় নিম্নলিখিত হিসাবে থাকবে:

  • আপনার শাখা থেকে নির্দিষ্ট প্রতিশ্রুতি সন্ধান করুন
  • SHA আইডির পাশে, 'ইতিহাসের এই সময়ে রেপো ব্রাউজ করুন' এ ক্লিক করুন
  • এখানে আপনি এই প্রতিশ্রুতি থেকে একটি নতুন শাখা তৈরি করতে পারেন এখানে চিত্র বর্ণনা লিখুন

1
এটি আসলে পুরানো
রিজেটসকোব

2
প্রশ্ন গিথুব নিয়ে নয়।
অ্যান্ডার্স টর্নব্ল্যাড

8

সহজভাবে চালান:

git checkout -b branch-name <commit>

উদাহরণ স্বরূপ :

git checkout -b import/january-2019 1d0fa4fa9ea961182114b63976482e634a8067b8

checkoutপরামিতি সঙ্গে কমান্ড -bএকটি নতুন শাখা তৈরি করবে এবং তা থেকে তোমাদের উপর পাল্টাবে


1
আমি এটা অনেক পছন্দ করি. ধন্যবাদ
দ্য ফুল

টান অনুরোধের মাধ্যমে মুছে ফেলা এমন কোনও বৈশিষ্ট্য শাখার SHA কমিটের ভিত্তিতে কোনও শাখা তৈরি করা কি সম্ভব? বা মাস্টারের কাছে টান দেওয়ার অনুরোধটি থেকে আমাকে কি শাখা করতে হবে?
ব্যবহারকারী 2966445

টার্মিনালটি ব্যবহার করে আপনার প্রকল্পের ফোল্ডারে চালনা git fetchgit branchকমান্ড দিন, তবে যদি বৈশিষ্ট্য শাখাটি বিদ্যমান রয়েছে কিনা তা পরীক্ষা করে দেখুন, যদি হ্যাঁ, অবশ্যই আপনি মুছে ফেলা শাখাগুলি থেকে একটি শাখা তৈরি করতে সক্ষম হবেন না, আপনি ক্ষেত্রে শাখা মুছে ফেলার ক্ষেত্রেও পরিবর্তন করতে পারবেন শাখাটি গেছে
d1jhoni1b

4

একটি দুর্দান্ত সম্পর্কিত প্রশ্ন হ'ল --helpগিটের বিকল্পটি ব্যবহার করে কীভাবে আপনি এটিকে আবিষ্কার করতে পারেন ? এর চেষ্টা করুন:

git branch --help

আমরা এই আউটপুট দেখতে:

NAME
       git-branch - List, create, or delete branches    

SYNOPSIS
       git branch [--color[=<when>] | --no-color] [-r | -a]
               [--list] [-v [--abbrev=<length> | --no-abbrev]]
               [--column[=<options>] | --no-column]
               [(--merged | --no-merged | --contains) [<commit>]] [--sort=<key>]
               [--points-at <object>] [<pattern>...]
       git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
       git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
       git branch --unset-upstream [<branchname>]
       git branch (-m | -M) [<oldbranch>] <newbranch>
       git branch (-d | -D) [-r] <branchname>...
       git branch --edit-description [<branchname>]

দুর্বোধ্য গুরুগম্ভীর পরিভাষা-কণ্টকিত ভাষা।

"কমিট" শব্দটির পরবর্তী পাঠ্যগুলি অনুসন্ধান করুন। আমরা এটি পাই:

   <start-point>
       The new branch head will point to this commit. It may be given as a branch name, a
       commit-id, or a tag. If this option is omitted, the current HEAD will be used instead.

আমরা কোথাও পাচ্ছি!

এখন, গাবলডেগুকের এই লাইনে ফোকাস করুন:

git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]

এটিকে শর্ত করুন:

git branch <branchname> [<start-point>]

এবং সম্পন্ন।


1
আমি গিট ঘৃণা করি। ধন্যবাদ।
বায়রন

4

Eclipse এ এটি করতে:

  • "গিট সংগ্রহস্থল অন্বেষণ" দৃষ্টিভঙ্গিতে যান।
  • "ট্যাগস" প্রসারিত করুন এবং আপনি যে শাখাটি তৈরি করতে চান সেই প্রতিশ্রুতি চয়ন করুন।
  • প্রতিশ্রুতিতে রাইট ক্লিক করুন এবং "শাখা তৈরি করুন" নির্বাচন করুন।
  • একটি শাখার নাম সরবরাহ করুন।

এটি আপনার জন্য একটি স্থানীয় শাখা তৈরি করবে। তারপরে আপনি যখনই আপনার পরিবর্তনগুলি ধাক্কা দেবেন, তখন আপনার শাখাটি দূরবর্তী সার্ভারে চাপ দেওয়া হবে।


3

আপনি স্ট্যাশ এ এটি করতে পারেন।

  1. কমিট ক্লিক করুন
  2. স্ক্রিনের ডানদিকে "এই প্রতিশ্রুতি ট্যাগ করুন" ক্লিক করুন
  3. তারপরে আপনি সবেমাত্র তৈরি ট্যাগ থেকে নতুন শাখা তৈরি করতে পারেন।

এটি কি জিইউআই? GitHub?
উটপাখিপ্রাণ 21

আটলশিয়ান স্ট্যাশ
ডেভিড রুয়ান

3

আমি এটি এর মতো করতে সক্ষম হয়েছি:

git branch new_branch_name `git log -n 1 --skip 3 --format=%H`

যেখানে আপনাকে অবশ্যই এড়িয়ে যাওয়ার মান লিখতে হবে। 0 সর্বশেষ, 1 এর আগের, 2 এর আগে প্রতিশ্রুতিবদ্ধকরণ ইত্যাদি etc.


4
কেন কেবল ব্যবহার করবেন না HEAD~1(যেখানে 1 টি 1 টি প্রতিশ্রুতি ফিরিয়ে দেয়)?
jduncanator

1
আপনার উপায় নির্বাচিত উত্তরের দ্বারা আচ্ছাদিত, এবং দুর্দান্ত কাজ করে। খনি নির্বাচিত উত্তরের চেয়ে আলাদা উপায়।
মাইক গ্রাফ

3

এটি একটি কমান্ড দিয়ে শাখা তৈরি করে:

git push origin <sha1-of-commit>:refs/heads/<branch-name>

আমি উপরের প্রকাশিতগুলির চেয়ে এই উপায়ে আরও ভাল পছন্দ করি কারণ এটি শাখাটি তত্ক্ষণাত্ তৈরি করে (পরে কোনও অতিরিক্ত পুশ কমান্ডের প্রয়োজন হয় না)।


3

সোর্সট্রি ব্যবহার | সহজতম পথ.

  • প্রথমে, যে শাখাটি আপনি একটি নতুন শাখা করার জন্য সুনির্দিষ্ট প্রতিশ্রুতি নিতে চান সেই শাখায় চেকআউট করুন।
  • তারপরে টুলবারটি দেখুন, সংগ্রহস্থল> শাখা নির্বাচন করুন ... শর্টকাট হ'ল কমান্ড + শিফট + বি B.
  • এবং আপনি যে নির্দিষ্ট প্রতিশ্রুতি নিতে চান তা নির্বাচন করুন। এবং একটি নতুন শাখার নাম দিন তারপর একটি শাখা তৈরি করুন!

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


অবশেষে এই দরকারী উত্তর খুঁজে পেয়েছি। ধন্যবাদ
ফিরদা সহিদি

1

এটি আমিই করেছি:

C:\Users\[path]\build>git checkout -b responsivenavigation 8a75b001096536b3216022484af3026aa9c7bb5b
Switched to a new branch 'responsivenavigation'

C:\Users\jaimemontoya\Dropbox\CuponClub\androidapp\build>git branch
  master
* responsivenavigation

এই ক্ষেত্রে, শাখার অন্তর্ভুক্ত 8a75b001096536b3216022484af3026aa9c7bb5bছিল এবং পুরানো প্রতিশ্রুতি master


1

গিট সংগ্রহস্থলের একটি বিশেষ প্রতিশ্রুতিতে যান

কখনও কখনও গিট সংগ্রহস্থল নিয়ে কাজ করার সময় আপনি নির্দিষ্ট সময়ে আপনার প্রকল্পের স্ন্যাপশট পেতে কোনও নির্দিষ্ট প্রতিশ্রুতি (পুনর্বিবেচনা) -এ ফিরে যেতে চান। এটি করার জন্য আপনাকে যে কমিটের সাহায্যে লগ চেক করতে সহজেই পাওয়া যাবে তার কমিটের SHA-1 হ্যাশটি দরকার:

git log --abbrev-commit --pretty=oneline

যা আপনাকে সমস্ত কমিটের একটি কমপ্যাক্ট তালিকা এবং SHA-1 হ্যাশের সংক্ষিপ্ত সংস্করণ দেবে।

এখন আপনি যে কমিটের কাছে যেতে চান তা জানতে পেরে আপনি নীচের 2 টি কমান্ড ব্যবহার করতে পারেন:

git checkout HASH

অথবা

git reset --hard HASH

চেকআউট

git checkout <commit> <paths>

গিটকে প্রদত্ত প্রতিশ্রুতিতে বর্তমানের রাস্তাগুলি তাদের রাষ্ট্রের সাথে প্রতিস্থাপন করতে বলে। পাথ ফাইল বা ডিরেক্টরি হতে পারে।

যদি কোনও শাখা দেওয়া না হয়, গিটটি হেড কমিট অনুমান করে।

git checkout <path> // restores path from your last commit. It is a 'filesystem-undo'.

যদি কোনও পথ না দেওয়া হয়, HEADপ্রদত্ত প্রতিশ্রুতিতে গিটটি সরান (এরপরে আপনি যে প্রতিশ্রুতিতে বসেছেন এবং এতে কাজ করছেন তা পরিবর্তন করে)।

git checkout branch //means switching branches.

রিসেট

git reset <commit> //re-sets the current pointer to the given commit.

আপনি যদি একটি শাখায় থাকেন (আপনার সাধারণত হওয়া উচিত) HEADএবং এই শাখাটি প্রতিশ্রুতিবদ্ধ হতে প্ররোচিত হয়।

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

গিট রিসেট এবং গিট চেকআউটের মধ্যে পার্থক্য সম্পর্কে আপনি যদি আরও জানতে চান তবে আমি অফিসিয়াল গিট ব্লগটি পড়ার পরামর্শ দেব ।


2
আপনার জবাবের জন্য আপনাকে ধন্যবাদ, এফওয়াইআই: এটি: git log --abbrev-commit --pretty=oneline সংক্ষেপে বলা যেতে পারেgit log --oneline
সুহাইব

0

কমিট নির্বাচন করুন

গিট জিইউআই ব্যবহারকারীদের জন্য আপনি সমস্ত ইতিহাস (যদি প্রয়োজন হয়) কল্পনা করতে পারেন এবং তারপরে শাখাটির যে শাখাটি আপনি শাখা করতে চান তা ক্লিক করে ডান ক্লিক করুন branch

শাখার নাম লিখুন

সমস্ত ইতিহাস ভিজ্যুয়ালাইজ করুন


এটি কেবল তখনই কাজ করবে যদি ব্যবহারকারীরা উইন্ডোজ এবং ম্যাকের মতো কোনও ইউআই ভিত্তিক ওএস ব্যবহার করে
সৌরভসিডিটি

সেটা ঠিক. আমার জবাবটি বিশেষত "গিট জিইউআই ব্যবহারকারীদের জন্য ..." শব্দ দিয়ে শুরু হয়। আমি কোনও উত্তর দেইনি যা সবার পক্ষে কাজ করবে - এটি ইতিমধ্যে হয়ে গেছে। আমি একটি বিকল্প পদ্ধতি দিয়েছি যা অনেক লোকের পক্ষে সহজ হতে পারে। আমি মনে করি আমার উত্তর অপছন্দ করার কারণ হ'ল এটি সবার জন্য সমাধান নয়, তবে কয়েক হাজার উপায়ে ইতিমধ্যে এটি বিদ্যমান। তবে এটি আমার উত্তরকে ভুল করে না "গিট জিইআইআই ব্যবহারকারীদের জন্য!"! জিইআইআইতে নতুন নতুন ব্রাঞ্চ তৈরি করুন। আমি সন্দেহ করছি আমি বিশ্বের একমাত্র ব্যক্তি এটি ব্যবহার করছি!
ইভান

0

ভিজ্যুয়াল স্টুডিও 2015 এবং 2017 এ গৃহীত উত্তরটি করতে:

পরিবর্তন ক্লিক করুন

পরিবর্তনগুলিতে ক্লিক করুন (উপরে লাল তীর)

ইতিহাস দেখার জন্য ক্রিয়াগুলি ক্লিক করুন

ক্রিয়াগুলিতে ক্লিক করুন (উপরে লাল তীর) এবং ড্রপডাউন মেনুতে ইতিহাস দেখুন ক্লিক করুন

এবং নতুন ট্যাব খুলবে:

ইতিহাস ট্যাব

এবং আপনার পূর্ববর্তী প্রতিশ্রুতিতে ডানদিকে ক্লিক করা উচিত যা আপনি নিজের কোডটিতে ফিরে যেতে চান: পূর্ববর্তী প্রতিশ্রুতি রাইট ক্লিক করুন

একটি নতুন শাখা এবং voil to চেকআউট চয়ন করুন!

নীচে, যদিও ওপি প্রশ্নের অংশ নয়, তবে আমি উভয়ই করি এবং এটি একটি কৌশল পদক্ষেপ, কমপক্ষে আমার কাছে: আপনি যদি কোনও নতুন শাখায় চেকআউট ছাড়াই পূর্ববর্তী প্রতিশ্রুতিতে ফিরে যেতে চান, তবে প্রত্যাবর্তনটি চয়ন করবেন না (! ?); আপনার পুনরায় সংজ্ঞা বা মেশিন পছন্দ করা উচিত:

পূর্ববর্তী প্রতিশ্রুতি রাইট ক্লিক করুন এবং নতুন সংজ্ঞা


আমাদের উত্তরটি ইংরেজিতে ভাগ করুন কারণ এখানে আমাদের বেশিরভাগই ইংরেজি ব্যতীত অন্য কোনও বিদেশী ভাষায় কথা বলতে বা জানেন না।
শমিউল হাসান রুম্মান

@ শামিউলহসান রুম্মান, চিত্রগুলিকে ব্যাখ্যা করে এমন পাঠ্যটিতে - সাধারণত নীচে - আমি রেড অ্যারো নির্দেশিত শব্দটি ইংরেজিতে অনুবাদ করেছি, যেমন ক্লিক ইন অ্যাকশনগুলির (উপরে লাল তীর) এটি যথেষ্ট ছিল না?
মার্সেলো স্কোফানো

@ মার্সেলোস্কোফানো, স্ক্রিনশট নেওয়ার আগে ইংরেজিতে সম্পাদকটি স্যুইচ করা কি কঠিন ছিল?
অ্যান্ড্রু সুরডু

1
@ আন্ড্রেইসুর্দু: যেহেতু আমার কখনই এটি করার দরকার ছিল না, তাই আমি প্রত্যাশা করেছিলাম যে ইংরেজিতে পরিবর্তন করতে হলে আমাকে কিছু অতিরিক্ত প্যাকেজ ইনস্টল করতে হবে। তবে আপনি ঠিক বলেছেন, এটির জন্য কেবল একটি ভিএস পুনঃসূচনা দরকার, কোনও ইনস্টলেশন নেই। আমি অতিরিক্ত সময় পাওয়ার সাথে সাথে উপরের চিত্রগুলি পরিবর্তন করার চেষ্টা করব।
মার্সেলো স্কোফানো

0

আপনি যদি সোজা সামনের দিকে সোর্স ট্রি ব্যবহার করেন।

  • আপনাকে যেখানে নতুন শাখা তৈরি করতে হবে সেখান থেকে কমিটিকে ডান ক্লিক করুন
  • 'শাখা' এ ক্লিক করুন
  • কথোপকথনে নতুন শাখার নাম লিখুন এবং 'শাখা তৈরি করুন' ক্লিক করুন

0

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

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