গিটে আমি অন্য শাখায় কীভাবে যেতে পারি?


221

এই লাইনের কোনটি সঠিক?

git checkout 'another_branch'

অথবা

git checkout origin 'another_branch'

অথবা

git checkout origin/'another_branch'

এবং এই লাইনের মধ্যে পার্থক্য কি?



32
git checkout [branch]বেশিরভাগ ব্যবহারকারীর জন্য এই প্রশ্নে আসছেন
জেগালার্ডো

উত্তর:


225

যদি another_branchইতিমধ্যে স্থানীয়ভাবে উপস্থিত থাকে এবং আপনি এই শাখায় না git checkout another_branchথেকে থাকেন তবে শাখায় স্যুইচ করুন।

যদি another_branchনা থাকে তবে origin/another_branchথাকে তবে git checkout another_branchতার সমতুল্য git checkout -b another_branch origin/another_branch; git branch -u origin/another_branch। এটি থেকে তৈরি another_branchকরা origin/another_branchএবং origin/another_branchএর প্রবাহ হিসাবে সেট করা another_branch

যদি না থাকে তবে git checkout another_branchত্রুটি প্রদান করে।

git checkout origin another_branchবেশিরভাগ ক্ষেত্রে ত্রুটি প্রদান করে। যদি originএকটি সংশোধন হয় এবং another_branchএকটি ফাইল হয়, তবে এটি সেই সংশোধনের ফাইলটি পরীক্ষা করে তবে সম্ভবত এটি আপনি প্রত্যাশা করেন না not originবেশিরভাগ ক্ষেত্রে ব্যবহৃত হয় git fetch, git pullএবং git pushরিমোট হিসাবে, দূরবর্তী সংগ্রহস্থলের ইউআরএলের একটি উপন্যাস।

git checkout origin/another_branchorigin/another_branchউপস্থিত থাকলে সফল হয় এটি কোনও শাখায় নয়, বিচ্ছিন্ন হেড অবস্থায় থাকতে পারে। আপনি যদি নতুন কমিট করেন তবে নতুন কমিটগুলি বিদ্যমান বিদ্যমান শাখা থেকে পৌঁছনীয় নয় এবং কোনও শাখা আপডেট করা হবে না।

আপডেট :

২.২৩.০ যেমন প্রকাশিত হয়েছে, এর সাথে আমরা git switchশাখা তৈরি ও স্যুইচ করতেও ব্যবহার করতে পারি ।

যদি fooউপস্থিত থাকে তবে এটিকে স্যুইচ করার চেষ্টা করুন foo:

git switch foo

যদি fooউপস্থিত না থাকে এবং origin/fooবিদ্যমান না থাকে তবে fooথেকে তৈরি করার চেষ্টা করুন origin/fooএবং তারপরে স্যুইচ করুন foo:

git switch -c foo origin/foo
# or simply
git switch foo

আরও সাধারণভাবে, যদি fooউপস্থিত না থাকে তবে fooএকটি পরিচিত রেফ বা প্রতিশ্রুতি থেকে তৈরি করার চেষ্টা করুন এবং তারপরে স্যুইচ করুন foo:

git switch -c foo <ref>
git switch -c foo <commit>

যদি আমরা একই সময়ে গীতলাব এবং গিথুবগুলিতে একটি সংগ্রহস্থল বজায় রাখি তবে স্থানীয় সংগ্রহস্থলের দুটি রিমোট থাকতে পারে, উদাহরণস্বরূপ, originগিটলব এবং গিথাবের githubজন্য। এক্ষেত্রে সংগ্রহস্থলের রয়েছে origin/fooএবং github/foogit switch fooঅভিযোগ করবে fatal: invalid reference: foo, কারণ এটি কোন রেফ, origin/fooবা github/foo, থেকে তৈরি করা যায় তা জানা নেই foo। প্রয়োজনের সাথে git switch -c foo origin/fooবা git switch -c foo github/fooঅনুযায়ী আমাদের এটি নির্দিষ্ট করা দরকার। যদি আমরা উভয় প্রত্যন্ত শাখা থেকে শাখা তৈরি করতে চাই, তবে নতুন শাখাগুলির জন্য আলাদা আলাদা নাম ব্যবহার করা ভাল:

git switch -c gitlab_foo origin/foo
git switch -c github_foo github/foo

যদি fooউপস্থিত থাকে তবে একটি পরিচিত রেফ বা প্রতিশ্রুতি fooথেকে পুনরায় তৈরি / জোর করে তৈরি করার চেষ্টা করুন (এবং পুনরায় সেট fooকরুন) এবং তারপরে স্যুইচ করুন foo:

git switch -C foo <ref>
git switch -C foo <commit>

যা সমান:

git switch foo
git reset [<ref>|<commit>] --hard

পরিচিত রেফ বা প্রতিশ্রুতিবদ্ধতার পৃথক হেডে স্যুইচ করার চেষ্টা করুন:

git switch -d <ref>
git switch -d <commit>

আপনি যদি কেবল একটি শাখা তৈরি করতে চান তবে এটিতে স্যুইচ না করে, git branchপরিবর্তে ব্যবহার করুন। পরিচিত রেফ বা প্রতিশ্রুতিবদ্ধ থেকে একটি শাখা তৈরি করার চেষ্টা করুন:

git branch foo <ref>
git branch foo <commit>

24
এই উত্তরটি সঠিক (যথারীতি, এবং উন্নত), তবে আমি একটি মন্তব্য যুক্ত করব যা সহায়ক হতে পারে: git checkoutকমান্ডটি আমার মতে অনেকগুলি কাজ করে। এজন্য এখানে অপারেশন করার অনেকগুলি পদ্ধতি রয়েছে। যদি শুধুমাত্র জিনিস git checkoutনি সুইচ শাখা, উত্তর সহজ হবে, কিন্তু এটি করতে পারেন তৈরি শাখা, এবং এমনকি নির্দিষ্ট করে থেকে ফাইল নিষ্কর্ষ ছাড়া শাখা স্যুইচ করা হচ্ছে।
16

11
এটি সঠিক উত্তর, তবে গিটটি কীভাবে কমান্ড লাইনে স্ক্রু আপ করছে তা দেখায়। শাখা বদলে গিট চেকআউট?
থ্যাং করুন

3
@ থ্যাং ওয়েল, ২.২৩.০ রিলিজ সহ, এটি প্রতিকার করে: আপনি এখন git switchএকটি শাখায় স্যুইচ করতে ব্যবহার করতে পারেন।
কিংবদন্তি 2 কে

গিটের এই সংস্করণটির জন্য স্যুইচ কাজ করছে বলে মনে হচ্ছে না। গিটের এই সংস্করণে আমি অন্য কোনও শাখায় স্যুইচ করতে কী ব্যবহার করব? সি: \ উইজেট> গিট - রূপান্তর গিট সংস্করণ 2.11.0.windows.3 সি: \ উইজেট> গিট সুইচ মাস্টার গিট: 'সুইচ' গিট কমান্ড নয়। 'গিট - হেল্প' দেখুন। সি: \ উইজেট>
জন

1
@ জন git checkoutপরিবর্তে পুরানো সংস্করণগুলির জন্য ব্যবহার করুন যা আধুনিক সংস্করণগুলিতেও কাজ করে।
এলিপেকে

66

গিটে অন্য একটি শাখায় স্যুইচ করা। সোজা উত্তর,

গিট-চেকআউট - শাখাগুলি স্যুইচ করুন বা কার্যকারী ট্রি ফাইলগুলি পুনরুদ্ধার করুন

git fetch origin         <----this will fetch the branch
git checkout branch_name <--- Switching the branch

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


শেষ কমান্ডটি আমাকে আলাদা হেড অবস্থায় নিয়ে যায়। মানে যে কেউ শাখা সম্পাদনা করতে পারে না।

2
আপনার যে শাখায় চেকআউট করার চেষ্টা করছেন সেটি আনছে না তবে আপনাকে চেকআউট করার আগে আনতে হবে। শাখাটি যদি আপ টু অবধি থাকে তবে আপনি গিট চেকআউট শাখার নামটি ব্যবহার করতে পারেন।
danglingpointer

শাখায় স্যুইচ করার পরে কি "গিট টান" সম্পাদন করা যথেষ্ট হবে না?

ওকেও টানুন, টেনে আনুন এবং পটভূমিতে একত্রিত হন। আমি কোন ভিন্নতা দেখতে পাচ্ছি না।
danglingpointer

17

[ git checkout "branch_name"]

বলার আরেকটি উপায়:

[ git checkout -b branch_name origin/branch_name]

যদি "ব্রাঞ্চ_নাম" কেবলমাত্র দূরবর্তীভাবে উপস্থিত থাকে ।

[ git checkout -b branch_name origin/branch_name] আপনার একাধিক রিমোট থাকলে ক্ষেত্রে দরকারী।

সম্পর্কিত [ git checkout origin 'another_branch'] আমি নিশ্চিত যে এটি সম্ভব, আফাক আপনি "আনুন" কমান্ড ব্যবহার করে এটি করতে পারেন - [ git fetch origin 'another_branch']


আমি অন্য শাখা তৈরির জন্য "গিট চেকআউট-বি ব্রাঞ্চনাম" কমান্ডটি জানি। এই প্রশ্ন ছিল না!

10

সঙ্গে গীত 2.23 অগ্রে, এক ব্যবহার করতে পারেন git switch <branch name>শাখা স্যুইচ।


6

আমার জন্য যা কাজ করেছে তা নিম্নলিখিত:

প্রয়োজনীয় শাখায় স্যুইচ করুন:

git checkout -b BranchName

এবং তারপরে আমি "মাস্টার" কে টেনে এনেছি:

git pull origin master

6

দৈনন্দিন জীবনে কাজের কার্যকর আদেশ:

git checkout -b "branchname" ->  creates new branch
git branch                   ->  lists all branches
git checkout "branchname"    ->  switches to your branch
git push origin "branchname" ->  Pushes to your branch
git add */filename           -> Stages *(All files) or by given file name
git commit -m "commit message" -> Commits staged files
git push                     -> Pushes to your current branch

5

আপনি যদি ব্রাঞ্চটি দূরবর্তী শাখাকে ট্র্যাক করতে চান যা আপনি খুব ভালভাবে আমদানি করে যদি আপনি ব্রাঞ্চে পরিবর্তন আনতে এবং পরিবর্তনগুলি টানতে চলে যান তবে আপনাকে প্রকৃত চেকআউটের জন্য অ্যাড-টি ব্যবহার করতে হবে যেমন: git checkout -t branchname


4

চেক করুন: git branch -a

যদি আপনি কেবল একটি শাখা পাচ্ছেন। তারপরে নীচের পদক্ষেপগুলি করুন।

  • ধাপ 1 : git config --list
  • ধাপ ২ : git config --unset remote.origin.fetch
  • ধাপ 3 : git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*

2
আমি অবাক হয়েছি যে এই সিরিজ কমান্ডগুলি কীভাবে অন্য শাখায় স্যুইচ করবে।

আপনি যখন অগভীর ক্লোন (পরম ব্যবহার করে depth) করেছিলেন তখন এটি করতে কার্যকর হতে পারে এবং এখন আপনি কেন আশ্চর্য হবেন যে আপনি error: pathspec 'another_branch' did not match any file(s) known to gitউপরে উল্লিখিত আদেশগুলি ব্যবহার করে অন্য দূরবর্তী শাখা কেন আনতে পারবেন না । এটি অবশ্যই আসল প্রশ্নটি সম্পর্কে নয় তবে এটি অন্যদের এখানে মাথা আঁচড়ানোর ক্ষেত্রে সহায়তা করতে পারে।
luciash d '

0

আমি এটি ব্যবহার করছি অন্য যে কোনও শাখায় একটি শাখা পরিবর্তন করতে আপনি এটি ব্যবহার করতে পারেন এটি আমার জন্য কবজির মতো কাজ করে।

গিট স্যুইচ [শাখার নাম] বা গিট চেকআউট [শাখার নাম]

উদাহরণস্বরূপ: গিট সুইচ বিকাশ বা
গিট চেকআউট বিকাশ

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