কিভাবে একটি সম্পূর্ণ রেপো বান্ডিল গিট


116

আমার একটি সম্পূর্ণ রেপো একটি নতুন নন-নেটওয়ার্কওয়াল মেশিনে স্থানান্তর করতে হবে, একটি একক ফাইল সত্তা হিসাবে পছন্দনীয়। Git বান্ডিল একটি পারবেন git fetch, git pullএকটি sneakernet পরিবেশে শৈলী অপারেশন কিন্তু অনুমান করা যদি আপনার আগে থেকেই গন্তব্য মেশিনে রেপো একটি কাজ সংস্করণ আছে বলে মনে হচ্ছে।

সঠিক অনুরোধ কি:

  1. বর্তমান রেপোতে সমস্ত শাখা বান্ডিল
  2. গন্তব্য ডিরেক্টরিতে নতুন রেপো শুরু করুন, অর্থাৎ রুট কমিটটি সঠিকভাবে ইনস্টল করুন

আমি স্পষ্ট করতে একটি প্যাচ উপরের দিকে প্রেরণ করেছি:

`git clone` can use any bundle created without negative refspecs
(e.g., `new`, but not `old..new`).
If you want to match `git clone --mirror`, which would clone other
refs such as `refs/remotes/*`, use `--all`.
If you want to provide the same set of refs that a clone directly
from the source repository would get, use `--branches --tags` for
the `<git-rev-list-args>`.

তাই $ git bundle create repo.bundle --branches --tagsসেরা ম্যাচ ক্লোনিং।

$ git bundle create repo.bundle --all এটি রিমোট রেফ সহ আপনার উত্স মেশিনের একটি আয়না চিত্র সরবরাহ করবে।

উত্তর:


189

সঠিক অনুরোধ কি:

  • বর্তমান রেপোতে সমস্ত শাখা বান্ডিল

সরল:

$ git bundle create repo.bundle --all

repo.bundleআপনি যে বান্ডিল ফাইলটি তৈরি করতে চান তার নাম এখানে । দ্রষ্টব্য যে --allদূরবর্তী ট্র্যাকিং শাখাগুলি অন্তর্ভুক্ত করবে না ... যেমন সাধারণ ক্লোনটিও হয় না।

  • গন্তব্য ডিরেক্টরিতে নতুন রেপো শুরু করুন, অর্থাৎ রুট কমিটটি সঠিকভাবে ইনস্টল করুন

প্রথমত, cloneশুধু init+ + fetch(+ + administrativia)।

দ্বিতীয়ত, আপনি যে কোনও জায়গায় বান্ডিল ফাইল ব্যবহার করতে পারেন যেখানে रिपোরিটরি ইউআরএল ব্যবহার করা যায়, তাই আপনি কেবল cloneএকটি বান্ডিল ফাইল থেকে করতে পারেন :

$ git clone repo.bundle

এটি repoএকটি গিট সংগ্রহস্থল হিসাবে তৈরি করবে ।


6
ধন্যবাদ, --allবিকল্পগুলি আমার ম্যান পৃষ্ঠায় নেই bundle(আমি সংস্করণ 1.7.6.msysgit.0 এ খুঁজছি), না URL এর বিভাগে .bundle ফাইলটি ব্যবহার করা clone। এটির ব্যবহারের প্রস্তাব দেওয়ার ক্ষেত্রে এটি আমাকে আরও বেশি আত্মবিশ্বাস দেয়।
ফিলিপ ওকলে

20
সারসংক্ষেপ জন্য তৈরি কমান্ড git bundle create <file> <git-rev-list-args>। দৌড়ানো man git-rev-list(বা man git-log) আপনাকে দিতেন --all। তবে আমি সম্মত হই যে এটি বান্ডেল কমান্ড ডকুমেন্টেশনে আরও দৃশ্যমান হওয়া উচিত।
জাকুব নরবস্কি

1
আমি দেখতে পাচ্ছি যে উল্লেখযোগ্য রেফারেন্সগুলির অধীনে বান্ডিল ম্যান পৃষ্ঠাটি বলেছে যে এটি "কেবলমাত্র প্যাকেজগুলিই কেবল প্যাকেজগুলিই প্রদর্শন করবে git show-ref" যা গিট-রেভ-তালিকার বিকল্পগুলি [তালিকা] অন্তর্ভুক্ত করে না।
ফিলিপ ওকলি

2
@ ফিলিপ ওকলি: git-rev-list-argsআপনি কমান্ড দ্বারা প্রদর্শিত রেফগুলি নির্বাচন করবেনgit show-ref
জাকুব নরবস্কি

2
--allআমার জন্য দূরবর্তী ট্র্যাকিং শাখাগুলি অন্তর্ভুক্ত করেছে (গিট ২.১.৪) আমি বা refs/remotes/origin/*সঙ্গে দেখতে পারে । যদিও এগুলি বান্ডিল থেকে ফিরে পাওয়া সামান্য জটিল। git bundle list-heads bundlefilegit ls-remote bundlefile
অ্যালেক্স

32

প্রথমে সংগ্রহস্থলটি ক্লোন করুন এবং --mirrorবিকল্পটি অন্তর্ভুক্ত করুন ।

git clone --mirror git@example.org:path/repo.git

এটি নিশ্চিত করে যে সমস্ত দূরবর্তী শাখাগুলিও বান্ডিলিংয়ের জন্য প্রস্তুত স্থানীয় শাখা।

তারপরে দৌড়াও

git bundle create repo.bundle --all জাকুব নারবস্কির উত্তর দ্বারা বর্ণিত হিসাবে


3

আমি আপনাকে .git ফোল্ডারটি ট্যারি বা জিপ করার পরামর্শ দিচ্ছি এবং কেবল নতুন জায়গায় এটি আনপ্যাক করুন এবং তারপরে করুন git reset --hard HEAD। সমস্ত শাখার জন্য প্রয়োজনীয় সমস্ত কিছুই .git এর অধীনে এবং আপনাকে যা করতে হবে তা হ'ল .git / কনফিগারেশন ফাইলে কোনও রিমোটগুলি সামঞ্জস্য করা বা সেগুলি সরানো।

tar cf myrepo.tgz .git
cp myrepo.tgz [USB_STICK]
... move to new machine ...
mkdir myrepo && cd myrepo
tar xpf [USB_STICK]/myrepo.tgz
git reset --hard HEAD

4
একটি সতর্কতা হ'ল মূল রেপো মালিকের সেখানে কোনও ব্যবহারকারীর নির্দিষ্ট সামগ্রী রয়েছে কিনা তা পরীক্ষা করতে আপনাকে .git / কনফিগারেশন ফাইলটি দেখতে হবে।
নওফাল ইব্রাহিম

@ পেথোয়েটস: এটি সংযোগ বিচ্ছিন্ন হয়ে গেছে, কোনও রিমোট থাকবে না ;-) দেখে মনে হচ্ছে যে বান্ডিলটি কোনও বিকল্প অনুপস্থিত এবং সম্ভবত ক্লোন (একটি বান্ডিল থেকে ক্লোনিংয়ের বিষয়ে চিন্তা করা দরকার)
ফিলিপ ওকলে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.