আমি আমার খালি রেপো কীভাবে আপডেট করব?


133

আমি আমার সংগ্রহশালা প্রকাশের জন্য একটি খালি রেপো তৈরি করেছি, তবে মূল সংগ্রহস্থলের বর্তমান অবস্থার সাথে খালি রেপো কীভাবে আপডেট করব তা আমি বুঝতে পারি না।


2
এই উত্তরটি দেখুন: stackoverflow.com/questions/315911/…
কেন ব্লুম

উত্তর:


83

আপনি যদি প্রধান রেপো থেকে সমস্ত বস্তুর সদৃশ করতে চান তবে এটি মূল রেপোর ভিতরে করুন:

git push --all <url-of-bare-repo>

বিকল্পভাবে, খালি রেপোর ভিতরে একটি আনুন:

git fetch <url-of-main-repo>

আপনি একটি টান করতে পারবেন না, কারণ একটি টান একত্রিত হতে চায় HEAD, যা একটি খালি রেপোতে নেই।

ভবিষ্যতে নিজেকে কিছু টাইপ করে বাঁচাতে আপনি এগুলি রিমোট হিসাবে যুক্ত করতে পারেন:

git remote add <whatever-name> <url-of-other-repo>

তাহলে আপনি সহজভাবে করতে পারেন

git push --all <whatever-name>

অথবা

git fetch <whatever-name>

আপনি কী রেপোতে <whatever-name>রয়েছেন তার উপর নির্ভর করে If যদি হয় তবে originআপনি এটি পুরোপুরি ছেড়ে দিতে পারেন।

দাবি অস্বীকার: আমি গিট গুরু নই। আমি যদি কিছু ভুল বলে থাকি তবে আমি আলোকিত হতে চাই!

আপডেট: মন্তব্য পড়ুন!


7
আমি যখন git-fetch --allখালি সংগ্রহস্থলটির অভ্যন্তর কোনও কাজ করেছি, তখন আমি প্রধান রেপোতে যে আপডেটগুলি করেছি তা আমি দেখতে পাইনি, তবে প্রধান রেপোগুলি দিয়ে যখন তাদের ধাক্কা দিয়ে git push --all <url-of-bare-repo>দেখি তখন আপডেটগুলি দেখতে পাচ্ছি git log। সম্ভবত এর জন্য একটি সহজ ব্যাখ্যা আছে - কেউ কি ব্যাখ্যা করতে পারেন?
pho79

2
@ থমাস - হ্যাঁ, "দেখেনি" এর অর্থ git log, খালি রেপোতে এই আপডেটগুলি দেখাবে না। (না হয় git log --allএবং না এমন একটি ওয়ার্কিং রেপো যা খালি রেপো ক্লোন করে তৈরি করা হয়েছিল - হয় git log --allকেবল সেখানে প্রদর্শিত হওয়া নতুন ফাইলগুলির মাধ্যমে বা কেবল দেখানো উচিত)। এটি নিজের জন্য দেখার জন্য একটি দুর্দান্ত দ্রুত পরীক্ষা। বেশিরভাগ ক্ষেত্রে আমি কৌতুহলী যেটি আমি মিস করছি।
pho79

70
আপনার রিমোটেস্ট রেপো যদি গিথুবের মতো কিছু হয়, যেখানে আপনার অ্যাক্সেস নেই, ধাক্কা চালাতে পারেন না, ইত্যাদি, আপনি git fetch -q origin master:masterআপনার স্থানীয় খালি রেপোর ভিতরে করতে পারেন । এটি গিথুবের মাস্টার শাখা থেকে নতুন জিনিস আনবে এবং এতে আপনার স্থানীয় মাস্টার শাখা আপডেট করবে।
আল্ট্রেয়াস

4
@ অ্যালট্রেয়াস হ'ল দূরবর্তী রেপোতে হেডকে master:masterএগিয়ে যাওয়ার জন্য প্রয়োজনীয়। আমার ক্ষেত্রে সমস্যার কারণে আমি আর আমাদের বেয়ার রেপোতে সংযোগ দিতে পারিনি কারণ গিটটি অনুপস্থিত ছিল। এটি সমাধান না হওয়া পর্যন্ত আমি একটি বিপরীত সুড়ঙ্গ করি এবং ব্যবহার করে কেন্দ্রীয় রেপোতে আনতে: git fetch ssh://localhost:8765/... master:masterএবং এটি কবজির মতো কাজ করে। ধন্যবাদ!
ইস্তানী

2
@ অ্যাল্ট্রেয়াস আপনি যদি সমস্ত শাখা চান তবে আপনি এটি করতে পারেনgit fetch origin *:*
জেবার্ট

71

আমি নিম্নলিখিত কমান্ডটি ব্যবহার করে একটি সংগ্রহস্থল তৈরি করেছি

git clone --bare <remote_repo>

তারপরে আমি থমাসের উত্তরটি ব্যবহার করে খালি ক্লোনটি আপডেট করার চেষ্টা করেছি, তবে এটি আমার পক্ষে কার্যকর হয়নি। আপডেট করার জন্য খালি সংগ্রহস্থলটি পেতে (যা আমি মনে করি লেট_মি_বি জিজ্ঞাসা করছে), আমাকে একটি আয়না সংগ্রহস্থল তৈরি করতে হয়েছিল:

git clone --mirror <remote_repo>

তারপরে আমি মুখ্য সংগ্রহস্থলের আপডেটগুলি পেতে মিররড রিপোজিটরিতে নিম্নলিখিত কমান্ডটি চালাতে পারি:

git fetch --all

আমি এই সমাধানটি পেরিয়ে মিরর এ গিট রিপোজিটরি পড়ে শুনে এসেছি


22
একটি বিদ্যমান বেয়ার রেপো আয়নাতে পরিবর্তন করতে, আপনাকে যা করতে হবে তা হ'ল <REPO> .git / config এ গিট কনফিগারেশন ফাইলে 2 টি লাইন যুক্ত করা উচিত। ইন [remote "origin"]অধ্যায়, অ্যাড fetch = +refs/*:refs/*এবংmirror = true
ইসহাক Betesh

@ আইসাকবেটেশ আপনি আমার দিনটি সংরক্ষণ করেছেন :)
এসএমসি

54

গ্রেগর থেকে পুনরায় পুনরুত্থানের পাশাপাশি একমাত্র সমাধান git clone --mirrorহ'ল :

git config remote.origin.fetch 'refs/heads/*:refs/heads/*'

তারপরে আপনি git fetchএবং আপডেটগুলি দেখতে পাবেন। অদ্ভুত বিষয়টি এটি হ'ল এর আগে, একটি remoteকনফিগার হওয়া সত্ত্বেও এর কোনও শাখা তালিকাভুক্ত নয় git branch -a


1
এটি সত্যিই আমাকে সাহায্য করেছে! ওয়ান-লাইনারকে git remote updateকাজ করার অনুমতি দেওয়ার জন্য ক্যাপিস্ট্রানো প্রকল্প / রেপোও এই সেটিংটি ব্যবহার করে ।
মিনকি প্যান

1
যদি রিমোটটিতে জোর-আপডেট হয়েছে বা মুছে ফেলা শাখা রয়েছে (এবং আপনি এই পরিবর্তনগুলি প্রতিবিম্বিত করতে চান), আপনাকে রেখার সাথে যথাক্রমে যুক্ত করতে --forceএবং প্রয়োজন হতে পারে । --prunegit fetch
এলিয়ট স্লটার

46

ধরে নেওয়া যাক:

$ git clone --bare https://github.com/.../foo.git

সাথে আনুন:

$ git --git-dir=foo.git fetch origin +refs/heads/*:refs/heads/* --prune

দ্রষ্টব্য: --git-dir=foo.gitআপনি যদি cdপ্রথমে ডিরেক্টরিতে যান তবে প্রয়োজন হয় না ।


2
যদিও এটি হয় যখন আমি সচেতন না, যদি originএটি সংজ্ঞায়িত না করা হয় তবে আপনি সর্বদা originঅংশটি আপনার মূল সংগ্রহস্থলের পথে / url দিয়ে প্রতিস্থাপন করতে পারেন । উদাহরণস্বরূপ$ git --git-dir=foo.git fetch https://github.com/.../foo.git +refs/heads/*:refs/heads/*
এন্টাক

আমি ঠিক এটিই খুঁজছিলাম। এটি পুরোপুরি কাজ করে।
ম্যাক্সিমাম রৌইলার

13

চারপাশে অনেক গণ্ডগোলের পরে আমি খুঁজে পেয়েছি এটি আমার জন্য কাজ করে।

একদা:

git clone --mirror ssh://git@source.address:2000/repo
git remote add remote_site ssh://git@remote_site.address/repo
git config remote.origin.fetch 'refs/heads/*:refs/heads/*'

প্রতিবার আমি সিঙ্ক করতে চাই:

cd /home/myhome/repo.git
git --bare fetch ssh://git@source.address:2000/repo
git  fetch ssh://git@source.address:2000/repo
git push --mirror remote_site

7
তৃতীয় লাইন ( git config remote.origin.fetch 'refs/heads/*:refs/heads/*') কী। ভাল উত্তর, ধন্যবাদ!
পিটারহ - মনিকা ২

2
@ পেটার যেমন বলেছেন, লাইনটি git config remote.origin.fetch 'refs/heads/*:refs/heads/*'উত্তর। এই কমান্ডটি আঘাত করার পরে, আমি ঠিক করতে পারি git fetchএবং রেপো রিমোটের সাথে সিঙ্ক করে।
জোকার

3

রিয়ার রিপোজিটরি হিসাবে খালি সংগ্রহস্থল যুক্ত করুন, তারপরে ব্যবহার করুন git push


সুতরাং যদি আমি চাপ না দিয়ে এটি করতে চাই তবে আমি একটি খালি সংগ্রহস্থল ব্যবহার করতে এবং একটি প্রতীকী লিঙ্ক বা এর মতো কিছু ব্যবহার করতে পারি না?
আইমন টুথ

খালি সংগ্রহস্থলগুলিতে সংগ্রহস্থল সামগ্রী স্থানান্তর করার জন্য সাধারণ পদ্ধতি পুশ করা, এটি এড়াতে হবে না।
ফিলিপ

2
আপনি সবসময় ধাক্কা দিতে পারবেন না। উদাহরণস্বরূপ, যদি
খালিটি

0

আমার জন্য এই সমন্বয়টি কাজ করেছে:

git remote add remote_site https://github.com/project/repo.git
git fetch -u remote_site +refs/heads/:refs/heads/*
git push --mirror

আনার জন্য একটি প্যারামিটার প্রয়োজনীয় ছিল, অন্যথায় আমি ত্রুটি বার্তাটি পেয়েছি: "বর্তমান শাখার রেফ / হেড / নন-বেয়ার রিপোজিটরিয়ের মাস্টার" এ প্রত্যাখ্যান করুন ( https://stackoverflow.com/a/19205680/4807875 দেখুন )

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