আমি কীভাবে একটি - শাখা ক্লোনটিকে "পূর্বাবস্থাপন" করব?


102

আমি একটি রেপো ক্লোন করে

git clone -b <branch name> --single-branch <github url> <target directory>

এটি কেবল এই শাখাটিকে ক্লোন করেছে তবে এখন আমি মাস্টার এবং অন্যান্য শাখায় স্যুইচ করতে চাই। এটিকে সাফ করার এবং বাকী রেপো ক্লোন করে শুরু করার পাশাপাশি আমি কী - শাখা পছন্দটি পূর্বাবস্থায় ফিরিয়ে আনতে পারি সে ছাড়াও কি কোনও উপায় আছে?

উত্তর:


147

আপনি গিটকে এভাবে সমস্ত শাখা টানতে বলতে পারেন:

git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin

আপনি যদি সন্ধান করেন তবে .git/configএটি এমন কিছু দেখতে পাবেন:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = false
[remote "origin"]
    url = https://github.com/owner/repo.git
    fetch = +refs/heads/master:refs/remotes/origin/master
[branch "master"]
    remote = origin
    merge = refs/heads/master
    rebase = true

আমি এটি একটি সম্পূর্ণ ক্লোনটির সাথে তুলনা করেছি এবং দেখেছি যে পার্থক্যটি কেবল "আনয়ন" এর অধীনে [remote "origin"]

দ্রষ্টব্য: আমি গিট সংস্করণ 1.8.2 চালাচ্ছি। আপনি গিটের একটি পুরানো সংস্করণ চালিয়ে গেলে কনফিগার বিকল্পগুলি পরিবর্তিত হতে পারে। যদি আমার কমান্ডগুলি কাজ করে না, তবে .git/configআপনি অনুরূপ কিছু দেখতে পাচ্ছেন কিনা তা দেখার জন্য আমি পরামর্শ দেওয়ার পরামর্শ দেব ।


2
আপনাকে কেবল একটি বিশেষ ধন্যবাদ দিতে চেয়েছিলাম কারণ আমি প্রচুর পড়া এবং গুগলিংয়ের কাজ করেছিলাম এবং এরকম কিছু আসতে পারিনি।
ড্যানিয়েলটালস্কি

2
সাহায্য করে আনন্দ পেলাম. gitকমান্ড লাইন টুল, অবিশ্বাস্যভাবে শক্তিশালী (আসলে, কমান্ড অধিকাংশ অন্যান্য কমান্ডের পরিপ্রেক্ষিতে বাস্তবায়িত হয়) তাই আপনি এটি দিয়ে কাপড় একটি সম্পূর্ণ অনেক কিছু করতে পারি একবার আপনি (বুঝতে সংগ্রহস্থলের পরিপূর্ণ হয় মূলত কিভাবে .gitফোল্ডারের কাজ )।
সারাহোদনে

এটি আমার পক্ষে কার্যকর হয়নি - চালানোর পরেও এই আদেশগুলি git show-ref tagsব্যর্থ হয়।
felixfbecker

1
মনে রাখবেন যে এই শাখাটি যদি নীচের বাক্য বিন্যাসের পাশাপাশি কোনও শাখা git clone --depth=1 --branch branchname git@github.com:foobar/repo.git destinationpath
অগভীরভাবে

1
বাহ, এটা স্বজ্ঞাত থেকে অনেক দূরে! এটি অদ্ভুত গিট সহজেই এটি সম্পাদন করার জন্য কোনও আদেশ দেয় না। হ্যাঁ আমি এটি কাজ করেছিলাম ... এবং এখন আমি কনফিগারেশন ফাইল সম্পর্কে জানি সে .git ডিরেক্টরিটিও!
কাশীরাজা

60

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

git remote set-branches --add origin [remote-branch]
git fetch origin [remote-branch]:[local-branch]

গিট সংস্করণ 1.9.1 এর সাথে কাজ করে


1
আমি তোমার প্রেমে আছি
ব্যবহারকারী 1760150

4
এটি fetch =.git / কনফিগারেশনে একাধিক লাইন যুক্ত করে , যখন আপনি দূরবর্তীতে দুটি শাখার মধ্যে স্যুইচ করতে চান তবে অন্যান্য শাখাগুলির পুরো গোছাটি আনতে চান না। ধন্যবাদ!
টেরি ব্রাউন

4

ক্লোন করা আমার স্থানীয় সংগ্রহস্থলে আরও একটি রিমোট শাখা যুক্ত করতে --single-branch, নিম্নলিখিতটি আমার জন্য কাজ করে:

git remote set-branches --add origin [remote-branch]
git fetch
git checkout [remote-branch]

আপনি [remote-branch]উদাহরণস্বরূপ, ওয়াইল্ডকার্ডও ব্যবহার করতে পারেন

git remote set-branches --add origin release-1.*
git fetch
git checkout release-1.5

এটি গিট সংস্করণ 2.21.1 ব্যবহার করে কাজ করে । অন্যান্য উত্তরগুলি প্রস্তাব দেওয়ার জন্য git fetch origin [remote-branch]:[local-branch]কাজ করে না কারণ এটি কোনও অ্যাক্র্যাকড অবস্থায় স্থানীয় শাখা তৈরি করে। git pullএটি চালানোর সময় প্রথমে আমার স্থানীয় এক সাথে দূরবর্তী শাখার সমস্ত কমান্ড একবারে মার্জ করার চেষ্টা করেছিল।


2
দ্বিতীয়বার আমি এই উত্তরে ফিরে আসি। খুব দরকারী. ধন্যবাদ!
godশ্বরের

1
সর্বাধিক দরকারী উত্তর
ডেনিস ইটস্কোভিচ

1
তৃতীয় বার LOL

আমাদের একই মুক্তির চক্র সম্পর্কে মনে হচ্ছে :)
আরনো ফিভা

1

নতুন রিমোট হিসাবে কেবল আসল রেপো যুক্ত করুন, এবং সেখান থেকে কাজ শুরু করবেন?

git remote add path/to/myrepo myNewOrigin
git fetch myNewOrigin

এমনকি আপনি যদি চান তবে আপনার বর্তমান 'উত্স' দূরবর্তীকে মুছে ফেলতে এবং 'মাইনিউইগ্রিন' এর নামকরণ করে 'উত্স' করতে পারেন।

সেখান থেকে আপনি টান / একীভূত / পুনরায় সেট করতে পারেন।


0

.git/configআপনার স্থানীয় রেপো, লাইন fetchএর ফাইলটি কেবল পরিবর্তন করুন [remote origin] section

এরকম কিছু আগে

[remote "origin"]
    url = https://github.com/owner/repo.git
    fetch = +refs/heads/master:refs/remotes/origin/master

পরে এটা হবে

[remote "origin"]
    url = https://github.com/owner/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*

0

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

single-branchপুরোপুরি পুনরায় সেট করার আরও একটি উপায় রয়েছে , যা এখানে উল্লেখ করা হয়নি:

git remote remove origin
git remote add origin git@gitlab.com:{yourProject}/{yourRepo}.git
git branch --set-upstream-to=origin/{yourBranch}  {yourBranch}
git pull

এটি সবকিছুকে আসলটিতে পুনরায় সেট করে।


0

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

git remote remove origin
git remote add origin https://*<yourPath>*.git
git fetch
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.