git - কিভাবে গিট সব দূরবর্তী শাখা ক্লোন করতে?




github git-branch git-clone remote-branch (25)

আমি একটি master এবং একটি development শাখা আছে, উভয় GitHub ধাক্কা। আমি clone ডি করেছি, এড pull , এবং এড fetched, কিন্তু আমি master শাখা ফিরে ছাড়া অন্য কিছু পেতে অক্ষম।

আমি নিশ্চিত যে আমি কিছু সুস্পষ্ট অনুভব করছি, কিন্তু ম্যানুয়ালটি পড়েছি এবং আমি কোনও আনন্দ পাইনি।


Answers

প্রথমে, একটি রিমোট Git রিপোজিটরি এবং cd এটিতে ক্লোন করুন:

$ git clone git://example.com/myproject
$ cd myproject

পরবর্তীতে, আপনার সংগ্রহস্থলে স্থানীয় শাখায় দেখুন:

$ git branch
* master

কিন্তু আপনার সংগ্রহস্থলে লুকানো অন্যান্য শাখা আছে! আপনি -a পতাকা ব্যবহার করে দেখতে পারেন:

$ git branch -a
* master
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/v1.0-stable
  remotes/origin/experimental

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

$ git checkout origin/experimental

কিন্তু আপনি যদি সেই শাখায় কাজ করতে চান তবে আপনাকে স্থানীয় ট্র্যাকিং শাখা তৈরি করতে হবে যা স্বয়ংক্রিয়ভাবে দ্বারা করা হয়:

$ git checkout experimental

এবং আপনি দেখতে হবে

Branch experimental set up to track remote branch experimental from origin.
Switched to a new branch 'experimental'

সেই শেষ লাইনটি কিছু লোককে ছুঁড়ে ফেলেছে: "নতুন শাখা" - হাহ? এটি আসলেই অর্থ বহন করে যে শাখা সূচী থেকে নেওয়া হয়েছে এবং আপনার জন্য স্থানীয়ভাবে তৈরি করা হয়েছে। পূর্ববর্তী লাইন প্রকৃতপক্ষে আরো তথ্যপূর্ণ হিসাবে এটি আপনাকে বলে যে শাখাটি দূরবর্তী শাখার ট্র্যাক করার জন্য সেট আপ করা হচ্ছে, যা সাধারণত মূল / শাখা_নাম শাখার অর্থ করে

এখন, যদি আপনি আপনার স্থানীয় শাখার দিকে তাকান, আপনি যা দেখবেন তা হল:

$ git branch
* experimental
  master

আপনি git remote ব্যবহার করে একাধিক দূরবর্তী রিপোজিটরি ট্র্যাক করতে পারেন।

$ git remote add win32 git://example.com/users/joe/myproject-win32-port
$ git branch -a
* master
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/v1.0-stable
  remotes/origin/experimental
  remotes/win32/master
  remotes/win32/new-widgets

এই মুহুর্তে, জিনিসগুলি বেশ পাগল হয়ে উঠছে, তাই কি gitk তা দেখতে gitk চালান:

$ gitk --all &

শুধু এটা কর

$ git clone git://example.com/myproject
$ cd myproject
$ git checkout branchxyz
Branch branchxyz set up to track remote branch branchxyz from origin.
Switched to a new branch 'branchxyz'
$ git pull
Already up-to-date.
$ git branch
* branchxyz
  master
$ git branch -a
* branchxyz
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/branchxyz
  remotes/origin/branch123

আপনি দেখেন, 'গিট ক্লোন গিট: //example.com/myprojectt' সবকিছুকে এমনকি শাখাগুলিও ফিরিয়ে দেয়, আপনাকে কেবল তাদের চেক আউট করতে হবে, তারপরে আপনার স্থানীয় শাখা তৈরি হবে।


এই উত্তরগুলির মধ্যে কোনটিই এটি কাটবে না, ব্যতীত কেউ সঠিক ট্র্যাকে নেই।

আমি একটি সার্ভার / সিস্টেম থেকে অন্য একটি repo সরানো সঙ্গে সমস্যা ছিল। যখন আমি রেপো ক্লোন করি, তখন এটি শুধুমাত্র মাস্টারের জন্য একটি স্থানীয় শাখা তৈরি করে যাতে আমি নতুন দূরবর্তী স্থানে ধাক্কা দিলে শুধুমাত্র মাস্টার শাখা ধাক্কা দেয়।

তাই আমি এই দুটি পদ্ধতি খুব দরকারী খুঁজে পাওয়া যায় নি। তারা অন্য কেউ সাহায্য আশা করি।

পদ্ধতি 1:

git clone --mirror OLD_REPO_URL
cd new-cloned-project
mkdir .git
mv * .git
git config --local --bool core.bare false
git reset --hard HEAD
git remote add newrepo NEW_REPO_URL
git push --all newrepo
git push --tags newrepo

পদ্ধতি 2:

git config --global alias.clone-branches '! git branch -a | sed -n "/\/HEAD /d; /\/master$/d; /remotes/p;" | xargs -L1 git checkout -t'
git clone OLD_REPO_URL
cd new-cloned-project
git clone-branches
git remote add newrepo NEW_REPO_URL
git push --all newrepo
git push --tags newrepo

একটি git clone সমগ্র সংগ্রহস্থলের অনুলিপি অনুমিত হয়। এটি cloning চেষ্টা করুন, এবং তারপর git branch -a চালানো git branch -a । এটা সব শাখা তালিকা করা উচিত। যদি আপনি "মাস্টার" এর পরিবর্তে "foo" শাখায় স্যুইচ করতে চান তবে git checkout foo ব্যবহার করুন।


একটি স্থানীয় রেপো থেকে ক্লোনিং গিট ক্লোন এবং গিট ফ্যাক্টের সাথে কাজ করবে না: অনেকগুলি শাখা / ট্যাগগুলি অপ্রয়োজনীয় থাকবে।

সব শাখা এবং ট্যাগ সঙ্গে একটি ক্লোন পেতে।

git clone --mirror git://example.com/myproject myproject-local-bare-repo.git

সমস্ত শাখা এবং ট্যাগগুলির সাথে একটি ক্লোন পেতে কিন্তু একটি কার্যকরী অনুলিপি সহ:

git clone --mirror git://example.com/myproject myproject/.git
cd myproject
git config --unset core.bare
git config receive.denyCurrentBranch updateInstead
git checkout master

--mirror বিকল্পটি ব্যবহার করে remote ট্র্যাকিং শাখার সঠিকভাবে অনুলিপি করা হয়। যদিও, এটি একটি ন্যূনতম সংগ্রহস্থল হিসাবে সংগ্রহস্থল সেট করে, তাই আপনাকে পরে এটি একটি স্বাভাবিক সংগ্রহস্থলের মধ্যে চালু করতে হবে।

git clone --mirror path/to/original path/to/dest/.git
cd path/to/dest
git config --bool core.bare false
git checkout anybranch

রেফারেন্স: গিট প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী: আমি কিভাবে সমস্ত দূরবর্তী ট্র্যাক শাখা সঙ্গে একটি সংগ্রহস্থল ক্লোন করবেন?


আপনি শুধুমাত্র সব শাখা পেতে "গিট ক্লোন" ব্যবহার করতে হবে।

git clone <your_http_url>

যদিও আপনি শুধুমাত্র মাস্টার শাখাটি দেখতে পান তবে সমস্ত শাখার জন্য আপনি "গিট শাখা-এ" ব্যবহার করতে পারেন।

git branch -a

এবং আপনি ইতিমধ্যে যে কোন শাখায় সুইচ করতে পারেন।

git checkout <your_branch_name>

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


আর কখনও দেরী না, কিন্তু এখানে এটি করার সেরা উপায়:

mkdir repo
cd repo
git clone --bare path/to/repo.git .git
git config --unset core.bare
git reset --hard

এই মুহুর্তে আপনার সমস্ত শাখার সাথে রিমোট রেপোর সম্পূর্ণ কপি রয়েছে ( git branch সাথে যাচাই করুন)। আপনি যদি আপনার রিমোট রেপোর নিজস্ব রিমোট থাকে তবে --bare পরিবর্তে --mirror ব্যবহার করতে পারেন।


কপি-পেস্ট কমান্ড লাইনের জন্য:

git checkout master ; remote=origin ; for brname in `git branch -r | grep $remote | grep -v master | grep -v HEAD | awk '{gsub(/^[^\/]+\//,"",$1); print $1}'`; do git branch -D $brname ; git checkout -b $brname $remote/$brname ; done ; git checkout master

আরও পঠনযোগ্যতার জন্য:

git checkout master ;
remote=origin ;
for brname in `
    git branch -r | grep $remote | grep -v master | grep -v HEAD 
    | awk '{gsub(/^[^\/]+\//,"",$1); print $1}'
`; do
    git branch -D $brname ;
    git checkout -b $brname $remote/$brname ;
done ;
git checkout master

এটা হবে:

  1. মাস্টার চেক আউট (যাতে আমরা যে শাখাটি আমরা সরিয়ে দিতে পারি)
  2. চেকআউট থেকে রিমোট নির্বাচন করুন (আপনার যে কোনও দূরবর্তী স্থানে এটি পরিবর্তন করুন)
  3. মাস্টার এবং HEAD ছাড়া দূরবর্তী সব শাখার মাধ্যমে লুপ
    1. স্থানীয় শাখাটি মুছুন (যাতে আমরা শক্তি-আপডেট শাখার চেক আউট করতে পারি)
    2. রিমোট থেকে শাখা চেক আউট
  4. মাস্টার চেক আউট (এটির জন্য)

VonC answer উপর ভিত্তি করে।


2017 সালের শুরুতে, এই মন্তব্যের উত্তরটি কাজ করে:

git fetch <origin-name> <branch-name>আপনার জন্য শাখা এনেছে। যদিও এটি একযোগে সমস্ত শাখা টানতে পারে না, আপনি একচেটিয়াভাবে এই প্রতি-শাখাটি চালাতে পারবেন।


আমি এখানে আমার ২ সেন্ট যোগ করতে যাচ্ছি কারণ আমি স্থানীয়ভাবে মুছে ফেলা একটি রিমোট শাখাটি কীভাবে টেনে আনতে চেষ্টা করেছি। মূল আমার ছিল না, এবং আমি সবকিছু পুনরায় cloning এর ঝগড়া মাধ্যমে যেতে চান না

এটা আমার জন্য কাজ করেছে:

আপনি স্থানীয়ভাবে শাখা পুনরায় তৈরি করতে হবে অনুমান:

git checkout -b recreated-branch-name
git branch -a (to list remote branches)
git rebase remotes/remote-origin/recreated-branch-name

তাই আমি gituser / master থেকে sjp থেকে ফর্ক করে এবং তারপর sjp / mynewbranch এ এটি branched এটি দেখতে ভালো হবে:

$ git checkout -b mynewbranch
$ git branch -a
  master
  remotes/sjp/master
  remotes/sjp/mynewbranch
$ git fetch (habit to always do before)
$ git rebase remotes/sjp/mynewbranch

এই Bash স্ক্রিপ্ট আমাকে সাহায্য করেছে:

#!/bin/bash
for branch in $(git branch --all | grep '^\s*remotes' | egrep --invert-match '(:?HEAD|master)$'); do
    git branch --track "${branch##*/}" "$branch"
done

এটি মাস্টার ছাড়া অন্য সমস্ত দূরবর্তী শাখার ট্র্যাকিং শাখা তৈরি করবে (যা সম্ভবত আপনি মূল ক্লোন কমান্ড থেকে পেয়েছেন)। আমি এখনও আপনি একটি করতে হবে মনে হয়

git fetch --all
git pull --all

নিশ্চিত হতে হবে.

এক মাছ ধরার নৌকা : git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^\*?\s*||; if (m|(.+)/(.+)| && not $d{$2}) {print qq(git branch --track $2 $1/$2\n)} else {$d{$_}=1}' | csh -xfs git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^\*?\s*||; if (m|(.+)/(.+)| && not $d{$2}) {print qq(git branch --track $2 $1/$2\n)} else {$d{$_}=1}' | csh -xfs git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^\*?\s*||; if (m|(.+)/(.+)| && not $d{$2}) {print qq(git branch --track $2 $1/$2\n)} else {$d{$_}=1}' | csh -xfs স্বাভাবিক হিসাবে: আমরা এটি জানি হিসাবে rm -rf মহাবিশ্ব অনুলিপি করার আগে আপনার সেটআপ পরীক্ষা

এক-মাছ ধরার জন্য ক্রেডিট ব্যবহারকারী সিএফআই যান


Git সাধারণত (যখন নির্দিষ্ট না হয়) git ls-refsতাদের ইতিহাসগুলি সম্পূর্ণ করতে প্রয়োজনীয় বস্তুর সাথে এক বা একাধিক অন্যান্য সংগ্রহস্থল থেকে সমস্ত শাখা এবং / অথবা ট্যাগগুলি (রেফস, দেখুন :) সংগ্রহ করে। অন্য কথায় এটি এমন বস্তু সংগ্রহ করে যা ইতিমধ্যে ডাউনলোড করা বস্তুগুলি দ্বারা পৌঁছানো যায়। দেখুন: কী git fetchসত্যিই কি?

কখনও কখনও আপনার কাছে এমন শাখা / ট্যাগ থাকতে পারে যা বর্তমানের সাথে সরাসরি সংযুক্ত নয়, তাই git pull --all/ git fetch --allসেই ক্ষেত্রে সহায়তা করবে না, তবে আপনি তাদের দ্বারা তালিকাবদ্ধ করতে পারেন:

git ls-remote -h -t origin

এবং রেফারেন্স নাম বুদ্ধিমান দ্বারা তাদের ফিরিয়ে আনুন।

তাই তাদের সব আনতে , চেষ্টা করুন:

git fetch origin --depth=10000 $(git ls-remote -h -t origin)

--depth=10000প্যারামিটার আপনি সংগ্রহস্থলের অভিগ্রস্ত থাকেন সাহায্য করতে পারে।

তারপর আবার আপনার সব শাখা চেক করুন:

git branch -avv

উপরের দিকে সাহায্য না করলে, ট্র্যাক করা তালিকায় ম্যানুয়ালি অনুপস্থিত শাখাগুলি যুক্ত করতে হবে (যেহেতু তারা যেভাবে হারিয়ে গেছে):

$ git remote -v show origin
...
  Remote branches:
    master      tracked

দ্বারা git remote set-branchesমত:

git remote set-branches --add origin missing_branch

তাই এটি remotes/originআনতে পর অধীনে প্রদর্শিত হতে পারে :

$ git remote -v show origin
...
  Remote branches:
    missing_branch new (next fetch will store in remotes/origin)
$ git fetch
From github.com:Foo/Bar
 * [new branch]      missing_branch -> origin/missing_branch

সমস্যা সমাধান

যদি আপনি মাস্টার শাখার বাইরে অন্য কিছু না পান তবে অনুসরণগুলি দেখুন:

  • আপনার রিমোট চেক করুন ( git remote -v), উদাহরণস্বরূপ
    • যাচাই যে git config branch.master.remoteহয় origin
    • originসঠিক URL টির মাধ্যমে পয়েন্টগুলি কিনা তা পরীক্ষা করুন: git remote show origin(এই post )।

আমি ঠিক একই কাজ করতে হবে। এখানে আমার Ruby স্ক্রিপ্ট।

#!/usr/bin/env ruby

local = []
remote = {}

# Prepare
%x[git reset --hard HEAD]
%x[git checkout master] # Makes sure that * is on master.
%x[git branch -a].each_line do |line|
  line.strip!
  if /origin\//.match(line)
     remote[line.gsub(/origin\//, '')] = line
   else
     local << line
   end
end
# Update 
remote.each_pair do |loc, rem|
  next if local.include?(loc)
  %x[git checkout --track -b #{loc} #{rem}]
end
%x[git fetch]

সংক্রান্ত,

$ git চেকআউট -b পরীক্ষামূলক মূল / পরীক্ষামূলক

ব্যবহার

$ git checkout -t origin/experimental

অথবা আরো verbose কিন্তু মনে রাখা সহজ

$ git checkout --track origin/experimental

একটি রিমোট রিপোজিটরি ট্র্যাকিং শর্তাবলী ভাল হতে পারে।


আপনি সহজেই অভিনব "গিট চেকআউট-বি কিছু ব্র্যান্ড মূল / কিছু ব্র্যাঞ্চ" সিনট্যাক্স ব্যবহার না করেই একটি শাখাতে স্যুইচ করতে পারেন। আপনি শুধু করতে পারেন:

git checkout somebranch

Git স্বয়ংক্রিয়ভাবে সঠিক জিনিস করবে:

$ git checkout somebranch
Branch somebranch set up to track remote branch somebranch from origin.
Switched to a new branch 'somebranch'

Git একই নামের সাথে একটি শাখা ঠিক একই দূরবর্তী স্থানে উপস্থিত কিনা তা যাচাই করবে এবং যদি এটি করা হয় তবে এটি আপনাকে এটির একটি দূরবর্তী শাখা হিসাবে স্পষ্টভাবে উল্লেখ করে, এটি একইভাবে ট্র্যাক করে। গিট 1.8.2.1 এর গিট-চেকআউট ম্যান পৃষ্ঠা থেকে:

যদি <branch> খুঁজে পাওয়া যায় না তবে মিলযুক্ত নামের সাথে একটি দূরবর্তী ট্র্যাকিংয়ের ট্র্যাকিং শাখা বিদ্যমান (এটি <দূরবর্তী> কল করুন), সমতুল্য হিসাবে আচরণ করুন

$ git checkout -b <branch> --track <remote>/<branch>

আপনি মনে করতে পারেন যে কমান্ড ব্যবহার করুন

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

প্রথমে আপনার সংগ্রহস্থল ক্লোন করুন, তারপর গন্তব্য ফোল্ডারে পরিবর্তন করুন। এবং শেষ কিন্তু অন্তত আনয়ন এবং চেকআউট:

git clone <repo> <destination_folder>
cd <destination_folder>
git fetch && git checkout <branch>

এটাই. এখানে আরো একটি বাস্তব বিশ্ব উদাহরণ:

git clone https://[email protected]/team/repository.git project_folder
cd project_folder
git fetch && git checkout develop

ডক্সগুলিতে কমান্ডগুলি সম্পর্কে বিস্তারিত তথ্য পাবেন: ক্লোন কমান্ড , Fetch কমান্ড , চেকআউট কমান্ড


এই খুব জটিল হয় না, খুব সহজ এবং সোজা এগিয়ে পদক্ষেপ হিসাবে অনুসরণ করা হয়;

git fetch origin এই আপনার দূরবর্তী সব দূরবর্তী শাখা আনতে হবে।

git branch -a এটি আপনাকে সমস্ত দূরবর্তী শাখাগুলি দেখাবে।

git checkout --track origin/<branch you want to checkout>

আপনি নিম্নলিখিত কমান্ড দ্বারা পছন্দসই শাখা আছে কিনা তা যাচাই করুন;

git branch

আউটপুট এই পছন্দ হবে;

*your current branch 
some branch2
some branch3 

বর্তমান শাখাকে নির্দেশ করে * চিহ্নটি লক্ষ্য করুন।


ঠিক আছে, যখন আপনি আপনার রেপো ক্লোন করবেন , তখন আপনার সমস্ত শাখা আছে ...

আপনি যদি শুধু git branch তারা লুকানো থাকে ...

তাই যদি আপনি সমস্ত শাখার নাম দেখতে চান তবে কেবল এইভাবে সমস্ত পতাকা যুক্ত করুন:

git branch --all git branch -a বা git branch -a

আপনি শুধু শাখা চেকআউট, আপনি আপনার প্রয়োজন সব পেতে।

কিন্তু ক্লোনের পরে অন্য কেউ কী করে তৈরি করে শাখাটি সম্পর্কে?

এই ক্ষেত্রে, শুধু করবেন:

git fetch

এবং আবার সব শাখা চেক করুন ...

আপনি একই সময়ে fetch এবং চেকআউট করতে চান, আপনি করতে পারেন:

git fetch && git checkout your_branch_name

আমি যা বলেছি তা সহজ করার জন্য আপনার জন্য নিচের চিত্রটিও তৈরি করেছেন:


#!/bin/bash
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
   git branch --track ${branch#remotes/origin/} $branch
done

এই কোডটি স্থানীয় রিপোতে সমস্ত দূরবর্তী শাখা কোড টানবে।


আপনি যদি অনেক দূরবর্তী শাখাগুলি একবারে আনতে চান তবে তা করুন:

$ git pull --all

রিমোট রিপোজিটরিতে আঘাত না করে আপনি এখন যে কোনও শাখাটি চেক আউট করতে পারেন।


কেন আপনি শুধুমাত্র "মাস্টার" দেখুন

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

git branch -a দূরবর্তী শাখা সহ সমস্ত শাখা দেখায়।

কিভাবে স্থানীয় শাখা পেতে

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

git branch branchone origin/branchone
git branch branchtwo origin/branchtwo
git branch branchthree origin/branchthree

এই উদাহরণে, branchone হল স্থানীয় শাখার নাম যা আপনি origin/branchone উপর ভিত্তি করে তৈরি করছেন; যদি আপনি পরিবর্তে বিভিন্ন নামের সাথে স্থানীয় শাখাগুলি তৈরি করতে চান তবে আপনি এটি করতে পারেন:

git branch localbranchname origin/branchone

একবার আপনি স্থানীয় শাখা তৈরি করলে, আপনি এটি git branch সাথে দেখতে পারেন (মনে রাখবেন, আপনাকে স্থানীয় শাখার দেখতে হবে না)।


এখানে আরেকটি ছোট এক-মাছচালক কমান্ড যা সমস্ত দূরবর্তী শাখাগুলির জন্য স্থানীয় শাখা তৈরি করে:

(git branch -r | sed -n '/->/!s#^  origin/##p' && echo master) | xargs -L1 git checkout

স্থানীয় শাখার ট্র্যাকিং ইতিমধ্যে তৈরি করা হলে এটি সঠিকভাবে কাজ করে। আপনি প্রথম git cloneবা যে কোন সময় পরে এটি কল করতে পারেন ।

masterক্লোনিংয়ের পরে শাখা চেক করার দরকার নেই , ব্যবহার করুন

git branch -r | sed -n '/->/!s#^  origin/##p'| xargs -L1 git checkout

আপনি যা করছেন তা সব দূরবর্তী শাখাগুলি পেতে হবে, তবে এটি তাদের জন্য স্থানীয় শাখাগুলি তৈরি করবে না। আপনি gitk ব্যবহার করলে, আপনাকে দূরবর্তী শাখাগুলিকে "রিমোট / মূল / ডেভ" বা অনুরূপ কিছু হিসাবে বর্ণনা করা উচিত।

একটি দূরবর্তী শাখার উপর ভিত্তি করে একটি স্থানীয় শাখা তৈরি করতে, এরকম কিছু করুন:

git checkout -b dev refs/remotes/origin/dev

যা ভালো কিছু ফেরত করা উচিত:

Branch dev set up to track remote branch refs/remotes/origin/dev.
Switched to a new branch "dev"

এখন, যখন আপনি ডেভ শাখাতে থাকবেন, তখন "গিট পুল" দূরবর্তী ডেভ শাখা হিসাবে একই স্থানে আপনার স্থানীয় ডেভ আপডেট করবে। মনে রাখবেন যে এটি সমস্ত শাখাগুলি আনবে, কিন্তু শুধুমাত্র আপনি যেটির উপরে গাছের উপরে যাবেন তা টেনে আনুন।


zsh সঙ্গে oh-my-zsh গিট প্লাগইন মাধ্যমে যারা মহান উপাধি উপলব্ধ করা হয়। তারা পাশাপাশি bash ব্যবহার করা যেতে পারে।

gclean='git clean -fd'
gpristine='git reset --hard && git clean -dfx'

  • gclean untracked ফাইল ছাড়াও untracked ডিরেক্টরি মুছে ফেলা
  • gpristine হার্ড স্থানীয় পরিবর্তনগুলি পুনরায় সেট করুন, অট্যাকড ডিরেক্টরিগুলি, অটোক্রেড ফাইলগুলি সরিয়ে দিন এবং। gitignore (প্রতি ডিরেক্টরি) এবং $ GIT_DIR / info / exclude থেকে পড়া মান উপেক্ষা নিয়মগুলি ব্যবহার করবেন না, তবে এখনও -e বিকল্পগুলি দিয়ে দেওয়া উপেক্ষা নিয়মগুলি ব্যবহার করবেন না। । এই বিল্ড পণ্য সহ, সমস্ত untracked ফাইল অপসারণ করতে পারবেন। এটি একটি পরিষ্কার বিল্ড পরীক্ষা করার জন্য একটি প্রিজাইন ওয়ার্কিং ডিরেক্টরি তৈরি করতে (সম্ভবত গিট রিসেটের সাথে যুক্ত করে) ব্যবহার করা যেতে পারে






git github git-branch git-clone remote-branch