সুনির্দিষ্ট সংশোধন / পরিবর্তন সেট সহ গিট সংগ্রহস্থল কীভাবে করবেন?


393

আমি কীভাবে সুনির্দিষ্ট সংশোধন সহ গিট সংগ্রহস্থলটির ক্লোন করতে পারি, যেমনটি আমি সাধারণত মার্চুরিয়ালে করি:

hg clone -r 3 /path/to/repository

3
পরিবর্তন-সেট বা সংশোধনগুলির জন্য সুনির্দিষ্ট নয় তবে নির্দিষ্ট শাখায় সর্বশেষের ক্লোনিং করা যেমন কার্যকর হতে পারে তেমনি git clone -b 10.1 https://github.com/MariaDB/server.git --depth=1 mariadb-server-src
MrMesees


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

যদি প্রশ্নে থাকা সংগ্রহশালাটি অন্য কোনও সংগ্রহস্থলের অভ্যন্তর থেকে ক্লোন করা হচ্ছে এবং আপনি কোনও অভ্যন্তরীণ রেপো একটি নির্দিষ্ট শা এ ক্লোন করতে চান, তবে গিট সাবমোডিয়ুলগুলি স্বয়ংক্রিয়ভাবে এটি করতে পারে way
J0hnG4lt

উত্তর:


202

আপডেট 2 যেহেতু নীচে বর্ণিত গিট 2.5.0 বৈশিষ্ট্যটি কনফিগারেশন ভেরিয়েবলের সাথে সার্ভার সাইডে সক্ষম করা যেতে পারে uploadpack.allowReachableSHA1InWant, এখানে গিটহাব বৈশিষ্ট্য অনুরোধ এবং গিটহাব এই বৈশিষ্ট্যটি সক্ষম করার প্রতিশ্রুতিবদ্ধ । নোট করুন যে কিছু গিট সার্ভারগুলি ডিফল্টরূপে এই বিকল্পটি সক্রিয় করে থাকে, যেমন বিটবকেট সার্ভার এটি সংস্করণ 5.5+ থেকে সক্ষম করেছে । কীভাবে কনফিগারেশন বিকল্পটি সক্রিয় করতে হয় তার একটি উদাহরণ জানতে স্ট্যাকেক্সচেঞ্জে এই উত্তরটি দেখুন ।

আপডেট 1 গিট সংস্করণগুলির 1.7 < v < 2.5জন্য গাইট ক্লোন এবং গিট রিসেট ব্যবহার করুন, বৈভব বাজপাইয়ের উত্তরে বর্ণিত

আপনি যদি পুরো সংগ্রহ সংগ্রহ করতে চান না তবে আপনার সম্ভবত ব্যবহার করা উচিত নয় clone। আপনি যে শাখাটি আনতে চান তা চয়ন করতে আপনি সর্বদা সবেমাত্র ব্যবহার করতে পারেন। আমি কোনও এইচজি বিশেষজ্ঞ নই তাই এর বিশদ জানি না -rতবে গিট এ আপনি এরকম কিছু করতে পারেন।

# make a new blank repository in the current directory
git init

# add a remote
git remote add origin url://to/source/repository

# fetch a commit (or branch or tag) of interest
# Note: the full history up to this commit will be retrieved unless 
#       you limit it with '--depth=...' or '--shallow-since=...'
git fetch origin <sha1-of-commit-of-interest>

# reset this repository's master branch to the commit of interest
git reset --hard FETCH_HEAD

32
আমি মনে করি git fetch origin <sha1>কাজ করে না ; দেখে মনে হচ্ছে আপনার কোনও নাম বা রেফারেন্স যেমন ট্যাগ বা শাখার নাম পাস করা দরকার। দেখুন kerneltrap.org/mailarchive/git/2009/1/13/4707444
Artur

48
@ আরতুর: আপনি ভাবেন না যে এটি কাজ করে, না আপনি চেষ্টা করে দেখেছেন এবং কাজ করে না?
সিবি বেইলি

37
1.4 গিটের সাহায্যে আমি জানতে পেরেছিলাম যে আমি git fetch origin <SHA1>দূরবর্তী থেকে মাস্টার আনার পরে reset --hardস্থানীয়ভাবে শাখাটি ইনস্ট্যান্টিয়েট করার পরে আমি যে কোনও সংশোধন চাইছিলাম সেটিতে স্যুইচ করতে ব্যবহার করতে সক্ষম হয়েছি । আমি সরাসরি পৃথক সংশোধনগুলি আনতে সক্ষম হইনি। git fetch origin <SHA1>১.it গিট দিয়ে, কাজ করেনি, যেমনটি @artur এর রিপোর্ট অনুসারে; আপনার ব্যবহারের দরকার git checkout <SHA1>পরে একটি reset --hard
জো ম্যাকমাহন

6
SHA-1 এর মাধ্যমে আনতে কেবলমাত্র http এবং rsync প্রোটোকল দিয়ে কাজ করা হবে। দেখুন kerneltrap.org/mailarchive/git/2009/1/14/4716044/...
CharlesB

23
এই উত্তরটি পুরানো। এটি গিট 1.7 বা গিট 1.8 নিয়ে কাজ করে না, https: // অথবা ssh প্রোটোকল দিয়েও নয়। ("রিমোট রেফ df44398762393c67af487edeb0831ad9579df4aa খুঁজে পাওয়া যায় নি" - এটি রেফ নয়, এটি প্রতিশ্রুতিবদ্ধ))
পাওলো ইবারম্যান

837
$ git clone $URL
$ cd $PROJECT_NAME
$ git reset --hard $SHA1

আবার সাম্প্রতিকতম প্রতিশ্রুতিতে ফিরে যেতে

$ git pull

13
কমিট যদি মাস্টার শাখায় থাকে তবেই এটি কাজ করে, যদি তা স্থানীয় রেফারেন্সকে জবাবদিহি করে। গিট পুনরায় সেট করুন এবং গিট চেকআউট প্রথম স্থানে নেই কেন?
জকি

72
এটি বৃহত ভাণ্ডারগুলির জন্য একটি ভাল বিকল্প নয়, কারণ এটি সমস্ত কিছু টানে।
ছদ্মবেশ

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

20
@ ফ্লোরিয়ানসিজিঙ্গার যদি আমি একটি নির্দিষ্ট সংশোধন ক্লোন করতে চাইছি তবে সম্ভবত এটিই আমি সমস্ত কিছু ক্লোন করতে চাই না, তবে কেবল এটিই সংশোধন। আমার কাছে এটাই প্রশ্ন করা হয়েছিল। এই সমাধানটি একটি পৃথক প্রশ্নের উত্তর দেয়: "আমি কীভাবে আমার রেপোতে একটি নির্দিষ্ট সংশোধন দেখতে পারি?"। পুরো রেপো আনার বিষয়টি হ'ল এখানে প্রচুর মানুষ এড়াতে চায়।
রেনাটো

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

54

গিট সংগ্রহস্থলকে ক্লোনিং করা, যথাযথভাবে পুরো সংগ্রহস্থলটিকে ক্লোন করা: ক্লোন থেকে কেবলমাত্র একটি সংশোধন নির্বাচন করার উপায় নেই। যাইহোক, একবার আপনি সঞ্চালন git clone, আপনি করে একটি নির্দিষ্ট সংশোধন চেকআউট করতে পারেন checkout <rev>


4
আমি কেবল একটি পুনর্বিবেচনা ক্লোন করতে চাই না। আমি কেবল ক্লোনিংয়ের সীমাটি নির্দিষ্ট করতে চাই। অন্য কথায়, আমি নির্দিষ্ট সংশোধন পর্যন্ত সবকিছু ক্লোন করতে চাই।
জন

6
আপনি এটা করতে পারবেন না। git cloneপুরো সংগ্রহস্থল দখল করে। আপনার কাছে একবার হয়ে গেলে আপনি তারপরে একটি নির্দিষ্ট সংশোধনটি চেকআউট করতে পারেন।

4
একটি বিষয় লক্ষণীয়; ইতিহাস সংরক্ষণের বিষয়ে গিটটি সাধারণত বেশ দক্ষ, তাই এটির মতো নয় যে আপনি কেবলমাত্র অর্ধেকটি সংশোধনগুলি ক্লোন করেই প্রচুর পরিমাণে জায়গাটি সঞ্চয় করতে পারেন।
আম্বার

এটি "স্থান বাঁচানোর" বিষয়ে নয় - এটি কেবলমাত্র একটি নির্দিষ্ট সংশোধনী পাওয়ার কথা - যেমন কোনও নতুন পরিবর্তন যদি একটি বাগ প্রবর্তন করে, এবং তাই আমি সেই নতুন পরিবর্তনটি চাই না - আপনি বলছেন গিট তা করতে পারে না এই? এটি সঠিক হতে পারে না - আপনি যদি কোনও পুরানো সংস্করণে ফিরে যেতে না পারেন তবে উত্স নিয়ন্ত্রণ কেন?
BrainSlugs83

1
"ক্লোন করতে কেবলমাত্র একটি পুনর্বিবেচনা নির্বাচন করার উপায় নেই" - হ্যাঁ, আছে:git clone --single-branch ...
মরক্সা

33

নির্দিষ্ট শাখা বা ট্যাগ ব্যবহারের জন্য শুধুমাত্র একটি একক নির্দিষ্ট প্রতিশ্রুতি ক্লোন করতে:

git clone --depth=1 --branch NAME https://github.com/your/repo.git

দুর্ভাগ্যক্রমে, NAMEকেবলমাত্র শাখার নাম বা ট্যাগের নাম (SHA করা নয়) হতে পারে।

--depthপুরো ইতিহাসটি ডাউনলোড করতে পতাকাটিকে অনুমতি দিন এবং তারপরে সেই শাখা বা ট্যাগটি চেকআউট করুন:

git clone --branch NAME https://github.com/your/repo.git

এটি গিটের সাম্প্রতিক সংস্করণটির সাথে কাজ করে (আমি এটি সংস্করণ দিয়ে করেছি 2.18.0)।


তবে পুরানো সংস্করণে নয় 2.17.1
আরজেআর

4
এটির জন্য আরও বেশি পরিমাণের প্রয়োজন। এটি অন্যান্য পুরানো উত্তরের তুলনায় অনেক ভাল।
Étienne

32

যদি আপনি বোঝাতে চান যে আপনি শুরু থেকে একটি নির্দিষ্ট পয়েন্ট পর্যন্ত সমস্ত কিছু আনতে চান, চার্লস বেলির উত্তরটি নিখুঁত। আপনি যদি বর্তমানের তারিখ থেকে পিছনে ফিরে যাওয়া এবং ইতিহাসের কোনও উপসেটটি পুনরুদ্ধার করতে চান এবং আপনি git clone --depth [N] যেখানে চান ইতিহাসের রেড সংখ্যা হ'ল এন ব্যবহার করতে পারেন। যাহোক:

--depth

নির্দিষ্ট ইতিহাসের সংখ্যার সংক্ষিপ্ত ইতিহাসের সাথে একটি অগভীর ক্লোন তৈরি করুন। অগভীর সংগ্রহশালার অনেকগুলি সীমাবদ্ধতা রয়েছে (আপনি এটির কাছ থেকে ক্লোন করতে বা আনতে পারবেন না, এখান থেকে চাপতেও পারবেন না) তবে আপনি যদি দীর্ঘ ইতিহাসের সাথে কেবলমাত্র একটি বৃহত প্রকল্পের সাম্প্রতিক ইতিহাসে আগ্রহী হন এবং আপনি চান প্যাচ হিসাবে সংশোধন পাঠান।


4
গিটের আরও নতুন সংস্করণ অগভীর ক্লোনগুলির উন্নতি করেছে এবং আপনি এটিকে টানতে এবং ধাক্কা দিতে পারেন।
orion78fr

26

কেবল জিনিসগুলি যোগ করতে হবে (গিট ভি। 1.7.2.1):

  1. git cloneযেখানে আপনি রেপো চান সেখানে নিয়মিত করুন (সব কিছু আজ পর্যন্ত পাওয়া যায় - আমি জানি, যা চেয়েছিল তা নয়, আমরা সেখানে যাচ্ছি)
  2. git checkout <sha1 rev> আপনি চান রেভ এর
  3. git reset --hard
  4. git checkout -b master

6
3 এবং 4 পদক্ষেপগুলি কী করে?
BrainSlugs83

চতুর্থ ধাপটি আমার পক্ষে কাজ করেনি, তবে তৃতীয় ধাপে 3 টি কৌশলটি করেছে - ধন্যবাদ
জেন বো বো

@ ব্রেইনস্লাগস ৩৩: পদক্ষেপ 4 স্থানীয় নামক একটি শাখা তৈরি masterকরে তাতে পরিবর্তন করে।
LarsH

3
@ ফিল: কেন git reset --hard? এর জন্য দস্তাবেজগুলি "সূচি এবং কার্যনির্বাহী গাছ পুনরায় সেট করে। <কমিট <> যেহেতু কার্যকারী ট্রিতে ট্র্যাক করা ফাইলগুলিতে কোনও পরিবর্তন [যা এখন হেডের ডিফল্ট, যা এখন রয়েছে <sha1 rev>] বাতিল করা হয়।" তবে এই মুহুর্তে আমরা ক্লোনিংয়ের পরে কোনও পরিবর্তন আনিনি, তবে উদ্দেশ্য কী? এটি কি বর্তমান শাখাটি কেটে যায় <sha1 rev>?
LarsH

19

টিএল; ডিআর - আপনি যে প্রতিশ্রুতিটি আপ করতে চান এবং তার মধ্যে আনা কমান্ডটিতে ট্যাগটি ব্যবহার করতে চান তার বিরুদ্ধে উত্স ভান্ডারে কেবল একটি ট্যাগ তৈরি করুন। আপনি পরে ক্লিন আপটি মূল রেপো থেকে ট্যাগটি মুছতে পারেন।

ঠিক আছে, এটি ২০১৪ এবং মনে হচ্ছে চার্লস বেইলির গৃহীত উত্তর ২০১০ সালের থেকে ভাল এবং সত্যই এখন পুরানো এবং অন্যান্য উত্তরগুলির বেশিরভাগ (সমস্ত?) ক্লোনিংয়ের সাথে জড়িত, যা অনেকে এড়াতে পারবেন বলে আশা করছেন।

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

স্থানীয় রেপো (যেমন, অন্য ডিরেক্টরিতে একটি সংগ্রহস্থল) নির্দিষ্ট বিন্দু পর্যন্ত ক্লোন করতে আমি গিট সংস্করণ ২.১.২ সহ যে কমান্ডগুলি ব্যবহার করেছি তা এখানে:

# in the source repository, create a tag against the commit you want to check out
git tag -m "Temporary tag" tmptag <sha1>

# create a new directory and change into that directory
cd somewhere_else;mkdir newdir;cd newdir

# ...and create a new repository
git init

# add the source repository as a remote (this can be a URL or a directory)
git remote add origin /path/to/original/repo

# fetch the tag, which will include the entire repo and history up to that point
git fetch origin refs/tags/tmptag

# reset the head of the repository
git reset --hard FETCH_HEAD

# you can now change back to the original repository and remove the temporary tag
cd original_repo
git tag -d tmptag

আশা করি এই সমাধানটি আরও কয়েক বছর ধরে কাজ করে চলেছে! :-)


2
এটি আপনার পক্ষে রেপোর মালিকের একটি ভাল ধারণা, নিশ্চিত নয় যে এটি আপনার সংরক্ষণ করা না এমন পাবলিক রেপগুলির সাথে কাজ করে কিনা
সুহাইব

18

আপনি সহজভাবে ব্যবহার করতে পারেন git checkout <commit hash>

এই ধারাবাহিকতায়

bash git clone [URLTORepository] git checkout [commithash]

কমিট হ্যাশ দেখতে এই "45ef55ac20ce2389c9180658fdba35f4a663d204" এর মতো দেখাচ্ছে


আগের মত - আপনি ক্লোন করার পরে চেকআউট কেন। একবার আপনি ক্লোন হয়ে গেলে স্থানীয় রেপোতে আপনার পুরো ইতিহাস থাকে। এই উত্তরটির কেন অনেকগুলি আপগেট রয়েছে?
দিমিত্রি পারফিলিভ

2

উপরের উত্তরগুলির মধ্যে 2 টি ব্যবহার করে ( নির্দিষ্ট সংশোধন / চেঞ্জসেটের সাহায্যে গিট সংগ্রহস্থল কীভাবে ক্লোন করবেন? এবং কীভাবে সুনির্দিষ্ট সংশোধন / চেঞ্জসেটের সাহায্যে গিট সংগ্রহস্থলটি ক্লোন করতে পারবেন? ) আমাকে একটি সংশোধনবাদী উপস্থিত হতে সহায়তা করেছিল। আপনি যদি একটি বিন্দু পর্যন্ত ক্লোন করতে চান, তবে সেই পয়েন্টটি কেবল একটি SHA বা FETCH_HEAD বিভ্রান্ত না হয়ে একটি ট্যাগ / শাখা হতে হবে। গিট ফেচ সেটটি অনুসরণ করে, আপনি যদি কোনও শাখা বা ট্যাগ নাম ব্যবহার করেন তবে আপনি একটি প্রতিক্রিয়া পাবেন, যদি আপনি কেবল একটি SHA-1 ব্যবহার করেন তবে আপনি প্রতিক্রিয়া পাবেন না।
আমি যা করেছি তা এখানে: প্রকৃত উত্স থেকে সম্পূর্ণ রেপোর একটি সম্পূর্ণ কার্যকারী ক্লোন তৈরি করুন

cd <path to create repo>
git clone git@<our gitlab server>:ui-developers/ui.git 

তারপরে একটি স্থানীয় শাখা তৈরি করুন, এটি আকর্ষণীয়

git checkout 2050c8829c67f04b0db81e6247bb589c950afb14
git checkout -b origin_point

তারপরে আমার নতুন ফাঁকা রেপো তৈরি করুন, আমার স্থানীয় অনুলিপিটির উত্স হিসাবে এটি

cd <path to create repo>
mkdir reduced-repo
cd reduced-repo
git init
git remote add local_copy <path to create repo>/ui
git fetch local_copy origin_point

এই সময়ে আমি এই প্রতিক্রিয়া পেয়েছি। আমি এটি নোট করছি কারণ যদি আপনি উপরের শাখার জায়গায় কোনও SHA-1 ব্যবহার করেন তবে কিছুই হয় না, সুতরাং প্রতিক্রিয়া, এর অর্থ এটি কাজ করে

/ var / www / html / ui-hacking $ গিট আনতে স্থানীয়_কপি উত্স_পয়েন্ট
দূরবর্তী: গণনা অবজেক্টস: 45493, সম্পন্ন।
রিমোট: কম্প্রেসিং অবজেক্টস: 100% (15928/15928), সম্পন্ন।
রিমোট: মোট 45493 (ডেল্টা 27508), পুনঃব্যবহৃত 45387 (বদ্বীপ 27463)
প্রাপ্ত সামগ্রী: 100% (45493/45493), 53.64 মাইবি | 50.59 MiB / s, সম্পন্ন হয়েছে।
ডেল্টাস সমাধান: 100% (27508/27508), সম্পন্ন।
/ Var / www / এইচটিএমএল / ইউআই থেকে
 * শাখার উত্স_পয়েন্ট -> FETCH_HEAD
 * [নতুন শাখা] উত্স_পয়েন্ট -> উত্স / উত্স_পয়েন্ট

এখন আমার ক্ষেত্রে, আমার তখন গিটল্যাবের উপরে ফিরে আসা দরকার ছিল, তাজা রেপো হিসাবে আমি করেছি

git remote add origin git@<our gitlab server>:ui-developers/new-ui.git

যার অর্থ আমি git --git-dir=../ui/.git format-patch -k -1 --stdout <sha1> | git am -3 -kচেরি পিক থেকে দূরবর্তীভাবে ব্যবহার করে আমার উত্স_পয়েন্ট থেকে আমার রেপো পুনর্নির্মাণ করতে পারি তারপরে সম্পূর্ণ নতুনটিকে git push originতার নতুন বাড়িতে আপলোড করতে ব্যবহার করতে পারি।

আশা করি যে কাউকে সাহায্য করবে


"FETCH_HEAD বিভ্রান্ত হয়ে যায়" এর অর্থ আপনি কী ব্যাখ্যা করতে পারেন? এবং git fetch local_copy origin_pointজেমসজি থেকে কীভাবে আপনার পার্থক্য রয়েছে git fetch origin refs/tags/tmptag?
not2qubit

git fetch local_copy origin_pointএকটি খালি সঙ্গে অবস্থায় আপনাকে ছেড়ে reduced-repoডিরেক্টরির মাত্র ধারণকারী .git। এই নির্দেশাবলীতে আরও কিছু অনুপস্থিত রয়েছে ...
not 2qubit

2

আমার সংস্করণটি গৃহীত এবং সর্বাধিক উত্সাহিত উত্তরগুলির সংমিশ্রণ ছিল। তবে এটি কিছুটা আলাদা, কারণ প্রত্যেকে SHA1 ব্যবহার করে তবে কীভাবে এটি পাবেন তা কেউ আপনাকে বলে না

$ git init
$ git remote add <remote_url>
$ git fetch --all

এখন আপনি সমস্ত শাখা এবং কমিটগুলি দেখতে পাবেন

$ git branch -a
$ git log remotes/origin/master <-- or any other branch

অবশেষে আপনি পছন্দসই অঙ্গীকারের SHA1 জানেন

git reset --hard <sha1>

1

আমি এই স্নিপেটটি কোনও সংশোধন ট্যাগ, শাখা বা হ্যাশ বন্ধ করতে জিএনইউ মেকের সাথে ব্যবহার করি

এটি গিট সংস্করণ 2.17.1 এ পরীক্ষা করা হয়েছিল

${dir}:
    mkdir -p ${@D}
    git clone --recursive --depth 1 --branch ${revison} ${url} ${@} \
 || git clone --recursive --branch ${revison} ${url} ${@} \
 || git clone ${url} ${@}
    cd ${@} && git reset --hard ${revison}
    ls $@





0

git clone https://github.com/ORGANIZATION/repository.git (ভান্ডারটি ক্লোন করুন)

cd repository (navigate to the repository)

git fetch origin 2600f4f928773d79164964137d514b85400b09b2

git checkout FETCH_HEAD


2
আপনি ক্লোন হওয়ার পরে কেন আনবেন? একবার আপনি ক্লোন হয়ে গেলে স্থানীয় রেপোতে আপনার পুরো ইতিহাস থাকে। এই উত্তরের দুটি উচ্চারণ কেন?
মাধাইরাইলেন্স

0
# clone special tag/branch without history
git clone  --branch=<tag/branch> --depth=1 <repository>


# clone special revision with minimal histories
git clone --branch <branch> <repository> --shallow-since=yyyy-MM-ddTHH:mm:ss  # get the commit time
cd <dir>
git reset --hard <revision> 

আপনি যদি uploadpack.allowReachableSHA1InWant=trueসার্ভারের পাশে না সেট করা থাকে তবে আপনি ইতিহাস ছাড়া কোনও সংশোধন পাবেন না , আপনি এর জন্য একটি ট্যাগ তৈরি করতে পারেন এবং তার পরিবর্তে বিশেষ ট্যাগটি ক্লোন করতে পারেন।


-3

ইহা সাধারণ. আপনাকে কেবলমাত্র বর্তমান শাখার জন্য প্রবাহ স্থাপন করতে হবে

$ git clone repo
$ git checkout -b newbranch
$ git branch --set-upstream-to=origin/branch newbranch
$ git pull

এখানেই শেষ


-4
git clone -o <sha1-of-the-commit> <repository-url> <local-dir-name>

gitশব্দটি originজনপ্রিয় হিসাবে স্থিরভাবে ব্যবহার করেrevision

ম্যানুয়াল থেকে একটি স্নিপেট নীচে দেওয়া হয়েছে $ git help clone

--origin <name>, -o <name>
    Instead of using the remote name origin to keep track of the upstream repository, use <name>.

4
আপনি এখানে কেন নিম্নমানের হচ্ছেন তা ধারণা নেই; এটি আমার ব্যবহারের ক্ষেত্রে দেখার জন্য ঠিক আমি প্রত্যাশা করছিলাম: লিনাক্স কার্নেলের একটি বিশেষ সংস্করণ পাওয়া একটি সংস্করণ থেকে তাদের রিলিজ হিসাবে ট্যাগ করার ভাল ধারণা ছিল না (আরপিআই লোকেদের মনে হয় এটি সমস্যা মনে হয়), ছাড়াই লিনাক্সের সম্পূর্ণ মাল্টি-গিগাবাইট ইতিহাস ডাউনলোড করা। ঘটনাচক্রে, এটি একটি ট্রিট কাজ করে।
ফোর্ডি

1
--depth=1উত্তরে উল্লেখ করা হয়নি, তাই আপনি এখানে উল্লেখ না করা এমন আরও কিছু জিনিস যুক্ত করলে কেন এই উত্তরটি কাজ করবে? আমি খুশি যে এটি আপনার পক্ষে কার্যকর হয়েছিল, তবে এই উত্তরটি বিভ্রান্তিমূলক এবং এমনকি কিছু অংশে প্রশ্নের উত্তর দেয় না। সুতরাং ডাউনভোটস।
এমিল স্টায়ার্ক

5
@ ফোর্ডি: না। এই উত্তরটি ভারব্যাটিম ব্যবহার করে আপনি ভ্যানিলা থেকে যে গাছটি পেয়েছেন ঠিক তেমন গাছটি পেয়েছে git clone <url> <local_dir_name>, কেবল নিজের জন্য চেষ্টা করে দেখুন। পার্থক্যটি হ'ল রিমোট (ব্যবহার করে দেখানো হয়েছে git remote) কে প্রচলিত নাম "উত্স" এর পরিবর্তে কিছু ক্রিপ্টিক sha1 ক্রম বলা হবে। অন্য কথায়, <sha1-of-the-commit>এই উত্তরে উল্লিখিতটির রয়েছে সার্ভার থেকে সংশোধনী আনা হয়েছে বা কোন শাখাটি পরীক্ষা করা হবে কোনও ফল নেই।
এমিল স্টায়ার্ক

6
@ ফোর্ডি: আমি সবেমাত্র করেছি git clone -o 896066ee1cf4d653057dac4e952f49c96ad16fa7 https://github.com/torvalds/linux.git linux --depth=1। এটি আমার পুনর্বিবেচনা দেয় 8a28d674এবং না 896066ee তুমি ও এই উত্তর দাবী হিসাবে।
এমিল স্টায়ার্ক

4
"রিভিশন" এর সাথে "উত্স" এর কোনও সম্পর্ক নেই এবং এই উত্তরটি সম্পূর্ণ ভুল emphas
veভী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.