আমি কীভাবে একটি গিটহাবের কাঁটাযুক্ত সংগ্রহস্থল আপডেট করব?


3600

আমি সম্প্রতি একটি প্রকল্প কাঁটাচামচ করেছি এবং বেশ কয়েকটি সংশোধন করেছি। আমি তখন একটি টানার অনুরোধ তৈরি করেছি যা তখন গৃহীত হয়েছিল।

কিছু দিন পরে আরেকটি অবদানকারী অন্য পরিবর্তন করেছিলেন। সুতরাং আমার কাঁটাচামচটিতে সেই পরিবর্তন নেই।

আমি কীভাবে আমার কাঁটাচামচে পরিবর্তন আনতে পারি? যখন আমার আরও অবদান রাখার জন্য আমার কাঁটাচামচ মুছতে এবং পুনরায় তৈরি করা দরকার? নাকি আপডেটের বোতাম আছে?


120
এটি গিথুব ইউআই থেকেও করা যেতে পারে। আমি ক্রেডিট দিতে চাই [এই অন্য পোস্টারকে] [1] [1]: স্ট্যাকওভারফ্লো.com
মাইক স্ক্রোল

2
এ সম্পর্কে আরও একটি ভাল ব্লগ পোস্ট - একটি গিটহাব কাঁটাচামচ আপডেট করা
অরূপ রক্ষিত



এখানে একটি ভিডিও ডেমো যা এই দুটি
গিথুব

উত্তর:


3974

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

# Add the remote, call it "upstream":

git remote add upstream https://github.com/whoever/whatever.git

# Fetch all the branches of that remote into remote-tracking branches,
# such as upstream/master:

git fetch upstream

# Make sure that you're on your master branch:

git checkout master

# Rewrite your master branch so that any commits of yours that
# aren't already in upstream/master are replayed on top of that
# other branch:

git rebase upstream/master

আপনি যদি নিজের মাস্টার শাখার ইতিহাসটি পুনরায় লিখতে না চান, (উদাহরণস্বরূপ কারণ অন্যান্য লোকেরা এটি ক্লোন করে থাকতে পারে) তবে আপনার শেষ কমান্ডটি প্রতিস্থাপন করা উচিত git merge upstream/master। তবে, আরও টানুন অনুরোধগুলি যেগুলি যতটা সম্ভব পরিষ্কার করার জন্য, পুনর্বাসনা করা সম্ভবত ভাল।


আপনি যদি নিজের শাখাটি পুনরায় upstream/masterচালু করেন তবে গিটহাবের নিজের কাঁটা ভাণ্ডারগুলিতে এটি চাপ দেওয়ার জন্য আপনাকে জোর করে চাপ দিতে হবে। আপনি এটি দিয়ে করতেন:

git push -f origin master

আপনি -fরিবেস করার পরে প্রথমবারটি ব্যবহার করতে হবে ।


94
যেহেতু আপনার কাঁটাচামুটি কেবল গিথুবে রয়েছে, এবং গিথাবের কাছে ওয়েব ইন্টারফেসের মাধ্যমে মার্জ করার সরঞ্জাম নেই, তাই সঠিক উত্তরটি হ'ল স্থানীয়ভাবে আপস্ট্রিম মার্জ করা এবং পরিবর্তনগুলি আপনার কাঁটাচামুতে ফিরে আসা।
টিম কেটিং

29
এখানে একটি দুর্দান্ত টিউটোরিয়াল যা আমি গিথুব-এর
টিম কেটিং

50
একটি দ্রুত নোট যে আপনি পরিষ্কার রাষ্ট্র দিয়ে শুরু করছেন তা নিশ্চিত করার জন্য আপনার নিজের মাস্টার শাখাটি পুনরায় চালু করার পরিবর্তে আপনার সম্ভবত পৃথক শাখায় কাজ করা উচিত এবং সেখান থেকে একটি অনুরোধ অনুরোধ করা উচিত। এটি যে কোনও ভবিষ্যতের সংশ্লেষের জন্য আপনার মাস্টারকে পরিষ্কার রাখে এবং এটি আপনাকে ইতিহাস পুনর্লিখন করা থেকে বিরত রাখে -fযার সাহায্যে আপনার সংস্করণটি ক্লোন করতে পারে এমন প্রত্যেককেই বিভ্রান্ত করে তোলে।
ম্যাটিউজ কোয়ালসিজেক

11
রিবেস কমান্ডের পরিবর্তে, আমি নিম্নলিখিতটি ব্যবহার করেছি: git merge --no-ff upstream/masterএইভাবে আপনার প্রতিশ্রুতিগুলি শীর্ষে নেই।
স্টেকডোসরিচ

51
অন্য গিট ব্যর্থতা। যদি এই সরঞ্জামগুলি বিতরণকৃত সহযোগিতা সমর্থন করার কথা মনে করা হয়, তবে কেন একটি মৌলিক কর্মপ্রবাহ সম্পাদন করা এত কঠিন? 4 মিলিয়ন লোক এবং 2200 upvotes মানে সরঞ্জামটি ব্যর্থ হয়েছে। "আপনি মূল গিটহাবের সংগ্রহশালাটিকে" রিমোট "হিসাবে যুক্ত করতে পারেন - কেন এটি করতে হবে কেন? কাঁটাচামড়ার সময় কেন করা হয় না? এই সরঞ্জামটি সম্পর্কে কি এত ভাঙা?
jww

738

২০১৪ সালের মে মাসে, গিটহাব থেকে সরাসরি একটি কাঁটাচামচ আপডেট করা সম্ভব। এখনও সেপ্টেম্বর 2017 হিসাবে কাজ করে, কিন্তু এটি একটি মলিন হতে হবে ইতিহাস কমিট।

  1. গিটহাবে আপনার কাঁটাচামচ খুলুন।
  2. ক্লিক করুন Pull Requests
  3. ক্লিক করুন New Pull Request। ডিফল্টরূপে, গিটহাব আপনার কাঁটাচামচটির সাথে মূলটি তুলনা করবে এবং আপনি যদি কোনও পরিবর্তন না করেন তবে তুলনা করার মতো কিছু থাকতে হবে না।
  4. আপনি switching the baseযদি এই লিঙ্কটি দেখতে পান তবে ক্লিক করুন। অন্যথায়, নিজেই base forkড্রপটি আপনার কাঁটাচামচায় এবং head forkপ্রবাহের কাছে সেট করুন set এখন গিটহাব আপনার কাঁটাচামচটি মূলের সাথে তুলনা করবে এবং আপনার সর্বশেষ পরিবর্তনগুলি দেখা উচিত। এখানে চিত্র বর্ণনা লিখুন
  5. Create pull requestএবং আপনার টানার অনুরোধে একটি অনুমানযোগ্য নাম বরাদ্দ করুন (যেমন, Update from original)।
  6. নীচে স্ক্রোল করুন Merge pull request, তবে এখনও কিছু ক্লিক করবেন না।

এখন আপনার কাছে তিনটি বিকল্প রয়েছে তবে প্রত্যেকটিই কম-কম-পরিচ্ছন্ন প্রতিশ্রুতিবদ্ধ ইতিহাসের দিকে নিয়ে যাবে।

  1. ডিফল্ট একটি কুৎসিত মার্জ কমিট তৈরি করবে।
  2. আপনি যদি ড্রপডাউন ক্লিক করেন এবং "স্কোয়াশ এবং মার্জ" চয়ন করেন, সমস্ত হস্তক্ষেপমূলক কমিটগুলি একটিতে স্কোয়াশ করা হবে। এটি প্রায়শই এমন কিছু যা আপনি চান না।
  3. আপনি যদি ক্লিক করেন তবে Rebase and mergeসমস্ত কমিট আপনার সাথে "তৈরি করা হবে", মূল পিআরগুলি আপনার PR এর সাথে লিঙ্ক করবে এবং গিটহাব প্রদর্শিত হবে This branch is X commits ahead, Y commits behind <original fork>

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


19
এটি এক সময় দুর্দান্ত কাজ করেছে। দ্বিতীয়বার এই প্রক্রিয়াটি একইভাবে কাজ করে নি: "বেস স্যুইচিং" লিঙ্কটি প্রদর্শিত হয়নি। এবং আমি যখন "টানার অনুরোধ তৈরি করতে ক্লিক করুন" টিপুন তখন এটি উত্সের রেপোতে একটি PR তৈরি করেছিল। আমি যা চাইছিলাম তা নয় ..
জাভাদবা

29
এখনও কাজ করে (মার্চ ২০১৫), যদিও "বেস স্যুইচিং" লিঙ্কটি আর নেই। আপনাকে "বেস" ড্রপ ডাউন এর উভয় বিন্দুটি আপনার কাঁটাচামচে পরিবর্তন করতে হবে এবং তারপরে আপনি "তুলনা জুড়ে তুলুন" একটি প্রম্পট পাবেন যা আপনাকে যেখানে চাইবে সেখানে নিয়ে যাবে।
mluisbrown

8
এপ্রিল 2015. কাজ। ধন্যবাদ। আমি "বেসে স্যুইচিং" পেয়েছি। তবে step ধাপটি ছিল "পুলের অনুরোধ তৈরি করুন" -> মন্তব্য লিখুন -> "পুলের অনুরোধ তৈরি করুন"। আসলটির চেয়ে 1 টি কমিট করে শেষ করুন।
কার্টল্যান্ড

5
@ কার্টল্যান্ড (বা অন্যরা) - হ্যাঁ, এটি বলেছে "এই শাখাটি 1 এর আগে কমিট করেছে ..." এটি কি উদ্বেগের বিষয়? এই বার্তা থেকে মুক্তি পাওয়া সম্ভব?
রেনিপেট

11
একটি সহজ আপডেট বা সিঙ্ক বোতাম দিয়ে এটি আরও ভাল হতে পারে!
ট্রান্সফর্মার

456

কাঁটাচামচ সিঙ্ক করার বিষয়ে এখানে গিটহাবের সরকারী দস্তাবেজ :

একটি কাঁটাচামচ সিঙ্ক করছে

সেটআপ

আপনি সিঙ্ক করার আগে, আপনাকে একটি রিমোট যুক্ত করতে হবে যা আপস্ট্রিম সংগ্রহস্থলের দিকে নির্দেশ করবে। আপনি যখন মূলত কাঁটাচামচ করেছিলেন তখন আপনি এটি করতে পারেন।

টিপ: আপনার কাঁটাচুটি সিঙ্ক করা কেবলমাত্র আপনার স্থানীয় কপিটি সংগ্রহস্থলের আপডেট করে; এটি গিটহাবে আপনার সংগ্রহস্থল আপডেট করে না।

$ git remote -v
# List the current remotes
origin  https://github.com/user/repo.git (fetch)
origin  https://github.com/user/repo.git (push)

$ git remote add upstream https://github.com/otheruser/repo.git
# Set a new remote

$ git remote -v
# Verify new remote
origin    https://github.com/user/repo.git (fetch)
origin    https://github.com/user/repo.git (push)
upstream  https://github.com/otheruser/repo.git (fetch)
upstream  https://github.com/otheruser/repo.git (push)

সিঙ্কিং

আপনার স্টোরের সাথে উজানের সাথে সিঙ্ক করার জন্য দুটি ধাপ রয়েছে: প্রথমে আপনাকে দূরবর্তী থেকে আনতে হবে, তারপরে আপনাকে অবশ্যই পছন্দসই শাখাটি আপনার স্থানীয় শাখায় মার্জ করতে হবে।

আনা হচ্ছে

দূরবর্তী সংগ্রহস্থল থেকে আনতে এর শাখাগুলি এবং তাদের নিজ নিজ দায়িত্বে আনতে হবে। এগুলি আপনার স্থানীয় স্টোরগুলিতে বিশেষ শাখাগুলির অধীনে সংরক্ষণ করা হয়।

$ git fetch upstream
# Grab the upstream remote's branches
remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/otheruser/repo
 * [new branch]      master     -> upstream/master

আমাদের এখন আপস্ট্রিমের মাস্টার শাখা স্থানীয় শাখায় সঞ্চয় করা আছে, আপস্ট्रीम / মাস্টার

$ git branch -va
# List all local and remote-tracking branches
* master                  a422352 My local commit
  remotes/origin/HEAD     -> origin/master
  remotes/origin/master   a422352 My local commit
  remotes/upstream/master 5fdff0f Some upstream commit

মার্জ

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

$ git checkout master
# Check out our local master branch
Switched to branch 'master'

$ git merge upstream/master
# Merge upstream's master into our own
Updating a422352..5fdff0f
Fast-forward
 README                    |    9 -------
 README.md                 |    7 ++++++
 2 files changed, 7 insertions(+), 9 deletions(-)
 delete mode 100644 README
 create mode 100644 README.md

যদি আপনার স্থানীয় শাখায় কোনও অনন্য কমিট না থাকে, তবে গিট পরিবর্তে "ফাস্ট-ফরোয়ার্ড" সম্পাদন করবে:

$ git merge upstream/master
Updating 34e91da..16c56ad
Fast-forward
 README.md                 |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

টিপ: আপনি যদি গিটহাবের উপরে আপনার সংগ্রহস্থলটি আপডেট করতে চান তবে এখানে নির্দেশাবলী অনুসরণ করুন


1
এটি আমার স্থানীয় কাঁটাচামচ আপডেট করে, তবে গিথুব ডটকম-এ আমার কাঁটাচামচ এখনও "43 টি স্বীকার করে" বলে says আমার গিথুব ডটকমের কাঁটাচালায় মাস্টার পরিবর্তনগুলিকে একীভূত করার জন্য আমাকে নিজের কাছে টানা অনুরোধ তৈরি করতে লবজিকের কৌশলটি ব্যবহার করতে হয়েছিল।
মাইকেল ম্যাকগিনিস 23'15

11
@ মিশেলএমসিগিনিস স্থানীয়ভাবে একত্রিত হওয়ার পরে, আপনাকে পরিবর্তনগুলি গিথুবে চাপাতে হবে। git push origin master
জাম্পনেট

1
সাথে ধাক্কা দিতে স্মার্ট হতে পারে --follow-tags: stackoverflow.com/a/26438076/667847
কেনি

1
আমাকে সমস্ত শাখার জন্য আলাদাভাবে এটি করতে হবে git merge upstream/master, তারপরে শাখার বিকাশ করতে হবে এবং করতে হবেgit merge upstream/develop
শোবি

স্ট্যাকওভারফ্লো.com/a/14074925/470749 আমার পক্ষে সহায়ক কারণ Permission denied (publickey). fatal: Could not read from remote repository.ফেসবুকের গিথুব অ্যাকাউন্টটি উজানের দিকে আনার চেষ্টা করার সময় আমি পাচ্ছিলাম ।
রায়ান

98

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

  1. ডিরেক্টরিটি আপনার স্থানীয় সংগ্রহস্থলে পরিবর্তন করুন।

    • আপনি না হলে মাস্টার শাখায় স্যুইচ করুন git checkout master
  2. দূরবর্তী সংগ্রহস্থল হিসাবে পিতামাতাকে যুক্ত করুন, git remote add upstream <repo-location>

  3. সমস্যা git fetch upstream
  4. সমস্যা git rebase upstream/master

    • এই পর্যায়ে আপনি পরীক্ষা করে দেখুন যে টাইপ করে কী একত্রীভূত হবে git status
  5. সমস্যা git push origin master

এই আদেশগুলি সম্পর্কে আরও তথ্যের জন্য, পদক্ষেপ 3 দেখুন


13
@ এমটি: যদিও আপনি এই আদেশগুলি প্রবেশ করবেন? প্রশ্নের সংক্ষিপ্তসার যেমন আমি বুঝতে পেরেছি তা হল কীভাবে আপনার ব্যক্তিগত গিটহাব কাঁটাচামচটি মূল প্রকল্পের সাথে পুনরায় সংশ্লেষিত করা যায় এবং এই সমস্ত কিছুই গিটহাব থেকে করা যায় । অন্য কথায়, কীভাবে আপনি স্থানীয় সংগ্রহস্থল ছাড়াই আপনার দূরবর্তী কাঁটাচামড়া আপডেট করতে পারেন ?
জন ওয়াই

4
@ জন গিটিহাব ব্যবহার করা সর্বদা একটি অতিরিক্ত প্রতিশ্রুতি তৈরি করে। অতিরিক্ত অতিরিক্ত প্রতিশ্রুতি এড়াতে আপনাকে স্থানীয় রেপোতে একটি শেলের মাধ্যমে এগুলি করতে হবে।
জোনাথন ক্রস

48

পূর্বশব্দ: আপনার কাঁটাচামচটি "উত্স" এবং আপনি যে ভাণ্ডারটি সংগ্রহ করেছিলেন তা হ'ল "আপস্ট্রিম"।

আসুন ধরে নেওয়া যাক আপনি ইতিমধ্যে আপনার কম্পিউটারে আপনার কাঁটাচামচটি এমন একটি আদেশ দিয়ে ক্লোন করেছেন:

git clone git@github.com:your_name/project_name.git
cd project_name

যদি তা দেওয়া হয় তবে আপনার এই ক্রমটি চালিয়ে যাওয়া দরকার:

  1. আপনার ক্লোন করা ভাণ্ডারে ("উত্স") "আপস্ট्रीम" যুক্ত করুন:

    git remote add upstream git@github.com:original_author/project_name.git
    
  2. "উজানের" থেকে কমিটগুলি (এবং শাখাগুলি) আনুন:

    git fetch upstream
    
  3. আপনার কাঁটাচামড়ার "মাস্টার" শাখায় স্যুইচ করুন ("উত্স"):

    git checkout master
    
  4. আপনার "মাস্টার" শাখার পরিবর্তনগুলি সংরক্ষণ করুন:

    git stash
    
  5. "আপস্ট্রিম" এর "মাস্টার" শাখা থেকে আপনার "উত্স" এর "মাস্টার" শাখায় পরিবর্তনগুলি মার্জ করুন:

    git merge upstream/master
    
  6. যদি থাকে তবে মার্জ সংঘাতগুলি সমাধান করুন এবং আপনার মার্জটি প্রতিশ্রুতিবদ্ধ

    git commit -am "Merged from upstream"
    
  7. আপনার কাঁটাচামচ পরিবর্তনগুলি ধাক্কা

    git push
    
  8. আপনার স্ট্যাশেড পরিবর্তনগুলি ফিরে পান (যদি থাকে)

    git stash pop
    
  9. তুমি করেছ! অভিনন্দন!

গিটহাব এই বিষয়টির জন্য নির্দেশাবলীও সরবরাহ করে: একটি কাঁটাচামচ সিঙ্ক করে


1
আংশিকভাবে সহায়তা করেছেন: এর জন্য কি git remote add upstream git@github.com:original_author/project_name.gitকেবল একটি উপনাম রয়েছে git remote add upstream https://github.com/original_author/project_name.git?
ওল্ফ

2
নেকড়ে , অনুমান করে আপনি এখনই এটি জানেন তবে উত্তরোত্তর জন্য ... এটি ssh এর ফর্ম্যাট। help.github.com/articles/configuring-a-remote-for-a-fork
ব্র্যাড এলিস

2
আপনাকে অনেক ধন্যবাদ. git stashএবং git stash popঅংশটি খুব সহায়ক
সত্যম্বে জয়তে 4'19

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

47

যদি, আমার মতো, আপনি কখনই মাস্টারের সাথে সরাসরি কিছু করেন না , যা আপনার সত্যই হওয়া উচিত, আপনি নিম্নলিখিতটি করতে পারেন।

আপনার কাঁটাচামানের স্থানীয় ক্লোন থেকে, আপনার উজানের রিমোট তৈরি করুন। আপনার কেবল একবার এটি করা দরকার:

git remote add upstream https://github.com/whoever/whatever.git

তারপরে আপনি যখনই আপস্ট্রিম রিপোজিটরি মাস্টার শাখাটি ধরতে চান আপনার প্রয়োজন:

git checkout master
git pull upstream master

ধরে নিই যে আপনি কখনই মাস্টার সম্পর্কে কোনও প্রতিশ্রুতিবদ্ধ হন নি আপনার ইতিমধ্যে করা উচিত। এখন আপনি আপনার স্থানীয় মাস্টারকে আপনার মূল রিমোট গিটহাব কাঁটাচামচে ঠেলাতে পারেন। আপনি আপনার আপ-টু-ডেট স্থানীয় মাস্টারকেও আপনার বিকাশ শাখাটি পুনর্বাসিত করতে পারেন।

প্রাথমিক প্রবাহের সেটআপ এবং মাস্টার চেকআউটটি অতীতে করুন, আপনার মাস্টারটিকে আপস্ট্রিমের সাথে সিঙ্ক করার জন্য আপনাকে যা করতে হবে তা হ'ল: গিট পুল আপ স্ট্রিম মাস্টার


45

নভেম্বর ২০১৩ সাল থেকে গিটহাবের সাথে একটি অনানুষ্ঠানিক বৈশিষ্ট্য অনুরোধ প্রকাশিত হয়েছে যাতে তাদের স্থানীয় প্রজাতির সাথে কাঁটাচামচ রাখার জন্য খুব সহজ এবং স্বজ্ঞাত পদ্ধতি যুক্ত করতে বলুন:

https://github.com/isaacs/github/issues/121

দ্রষ্টব্য: বৈশিষ্ট্যটির অনুরোধটি অফিশিয়াল হওয়ায় এ জাতীয় বৈশিষ্ট্য কার্যকর support@github.comকরার জন্য আপনার সমর্থন যুক্ত করার জন্য যোগাযোগ করার পরামর্শ দেওয়া হচ্ছে । উপরের আনুষ্ঠানিক বৈশিষ্ট্য অনুরোধটি প্রয়োগ করা হচ্ছে এতে আগ্রহের পরিমাণের প্রমাণ হিসাবে ব্যবহার করা যেতে পারে।


23

এই উত্তরের তারিখ হিসাবে, গিটহাবের ওয়েব ইন্টারফেসে এই বৈশিষ্ট্যটি নেই ( বা আমি আর বলব না? )। আপনি তবে তার support@github.comজন্য আপনার ভোট যুক্ত করতে চাইতে পারেন।

এরই মধ্যে, গিটহাব ব্যবহারকারী বারডিহারবোউ কেবল এটি করার জন্য একটি সরঞ্জাম তৈরি করেছে: https://upriver.github.io/

উত্সটি এখানে: https://github.com/upriver/upriver.github.io


2
আমি যখন সরঞ্জামটি খুঁজে পাচ্ছি তখন একটি বাস্তব ধারণাটি হ'ল ব্রোকেন। এটি আমার অ্যাকাউন্ট থেকে কেবলমাত্র 20 টি রেপো লোড করেছে এবং এমনকি পাদলেখ কোনও ওয়েবসাইটকে পুনঃনির্দেশ করে যা বিদ্যমান নেই। যদি তা স্থির হয় তবে আমি বড় উকিল হব।
sorin

2
আজ অবধি, আমি সাফল্যের সাথে আপস্ট্রিও রেপোর সাথে একটি কাঁটাচামচ সিঙ্ক করতে ব্যবহার করেছি, সুতরাং এটি আমার উদ্দেশ্যে কাজ করছে এবং আমি এটি ব্যবহার চালিয়ে যাব।
নটিক্যালমাইল

1
@ সোরিন এই 20 টি রেপো / শাখা সীমাবদ্ধতা (বরং এটি এখন 30 বছর) গিটহাবের ডিফল্ট পেজিং সেটিংস থেকে এসেছে। এটিকে পরিচালনা করার জন্য কোডটির সাথে কিছু মানিয়ে নেওয়া দরকার।
আন্দ্রেয়াস

19

আপনি যদি উইন্ডোজ বা ম্যাকের জন্য গিটহাব ব্যবহার করছেন তবে এখন কাঁটাচামচ আপডেট করার জন্য তাদের একটি ক্লিকের বৈশিষ্ট্য রয়েছে:

  1. ইউআইতে সংগ্রহস্থল নির্বাচন করুন।
  2. উপরের অংশে "ব্যবহারকারী / শাখা থেকে আপডেট করুন" ক্লিক করুন।


11

প্রকৃতপক্ষে, ব্রাউজারে প্রবাহের যে কোনও প্রতিশ্রুতি থেকে আপনার কাঁটাচামচে একটি শাখা তৈরি করা সম্ভব:

  • উন্মুক্ত করুন https://github.com/<repo>/commits/<hash>, যেখানে রেপো আপনার কাঁটাচামচ, এবং হ্যাশ কমিটমেন্টের পূর্ণ হ্যাশ যা আপনি আপস্ট্রিম ওয়েব ইন্টারফেসে খুঁজে পেতে পারেন। উদাহরণস্বরূপ, আমি https://github.com/max630/linux/commits/0aa0313f9d576affd7747cc3f179feb097d28990 খুলতে পারি , যা linux masterলেখার সময় হিসাবে নির্দেশ করে ।
  • "ট্রি: ...." বোতামে ক্লিক করুন।
  • নতুন শাখার নাম লিখুন এবং টিপুন Enter

এখানে চিত্র বিবরণ লিখুন

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

এটি কীভাবে কাজ করে (এটি একটি অনুমান, আমি জানি না গিটহাব এটি ঠিক কীভাবে করে): কাঁটাচামচ বস্তু স্টোরেজ ভাগ করে এবং ব্যবহারকারীদের রেফারেন্স পৃথক করতে নেমস্পেস ব্যবহার করে । সুতরাং আপনি কাঁটাচামচ দিয়ে সমস্ত কমিট অ্যাক্সেস করতে পারেন, এমনকি কাঁটাচামচ করার সময় না থাকলেও।


2
এটা অসাধারণ! এটি গিথুব করার প্রতিশ্রুতিগুলির সম্পূর্ণ অর্থহীন আপলোড এড়িয়ে চলে avo
রোটসর

9

নীচের পদক্ষেপগুলি অনুসরণ করুন। আমি তাদের চেষ্টা করেছিলাম এবং এটি আমাকে সহায়তা করেছিল।

আপনার শাখায় চেকআউট করুন

সিনট্যাক্স: গিট শাখা আপনার ডেভেলপমেন্ট ব্রাঞ্চ
উদাহরণ: গিট চেকআউট মাস্টার

সর্বশেষ কোড পাওয়ার জন্য সোর্স সংগ্রহস্থল শাখাটি টানুন

সিনট্যাক্স: গিট টান https://github.com/tastejs/awesome-app-ideas মাস্টার
উদাহরণ: গিট টান https://github.com/ORIGINAL_OWNER/ORIGINAL_REPO.git BRANCH_NAME


1
আপনি যদি গিটহাব ব্যবহার করছেন তবে আপনি নিজের পরিবর্তনগুলি আপনার গিটহাব শাখায় ঠেলাতেও পারেন। git push HttpsForYourForkOfTheRepo BRANCH_NAME
user3731622

9

আমি এই এক লাইনের সাথে আমার কাঁটাযুক্ত রেপো আপডেট করেছি:

git pull https://github.com/forkuser/forkedrepo.git branch

আপনি এখানে অন্য পোস্ট হিসাবে সমাধান পোস্ট হিসাবে আপনার প্রকল্পে অন্য একটি দূরবর্তী শেষ পয়েন্ট যুক্ত করতে না চান এটি ব্যবহার করুন।


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

1
এটি কোনও দূরবর্তী শাখা থেকে সাধারণ টানার মতো কাজ করে। যদি আপনি X আপনার স্থানীয় রেপোতে কমিট করে থাকেন এবং এখন আপনি যদি মূল রেপোর পিছনে ওয়াই কমিট করে থাকেন তবে এটি আপনার স্থানীয় শাখায় ওয়াই কমিটস এনে দেবে এবং সম্ভবত আপনি কিছু দ্বন্দ্ব সমাধান করবেন।
আর.ব্রাভো

1
@ লাইটসিসি এটি কোনও পূর্ববর্তী সংযুক্ত রিমোট থেকে মোটেও টানানোর চেয়ে আলাদা নয়, আপনি কোনও রিমোট যুক্ত করেননি এমনটি বাদে । সুতরাং অসুবিধাটি হ'ল আপনাকে যতবার ইচ্ছা পুরো রেপোজিটরি ইউআরএল প্রবেশ করতে হবে pull
২৩7777

1
যদি আপনাকে মূল রেপো থেকে অনেক বার টানতে না হয়, বা প্রকল্পটি কাঁটাচামচ করা অপেক্ষাকৃত সহজ This
এক্সএফেক্ট

7

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

এটি ধরে নেওয়া হয় আপনি ইতিমধ্যে উত্স সংগ্রহস্থলের দিকে একটি প্রবাহের দূরবর্তী পয়েন্টটি কনফিগার করেছেন (যেখানে উত্সটি ফোরক করা হয়েছিল) এবং এটির সাথে সিঙ্ক করেছেন git fetch upstream

তারপরে চালান:

for branch in $(git ls-remote --heads upstream|sed 's#^.*refs/heads/##'); do git push origin refs/remotes/upstream/$branch:refs/heads/$branch; done

এই কমান্ডের প্রথম অংশটি আপস্ট্রিম রিমোট রেপোতে সমস্ত মাথা তালিকাভুক্ত করে এবং refs/heads/শাখা নাম উপসর্গের পরে SHA-1 সরিয়ে দেয় ।

তারপরে এই শাখাগুলির প্রত্যেকটির জন্য, এটি উত্সের দূরবর্তী শাখায় ( স্থানীয় দিকে) প্রবাহিত দূরবর্তী ট্র্যাকিং শাখার স্থানীয় অনুলিপিটি refs/remotes/upstream/<branch>সরাসরি ( দূরবর্তী দিকে) ধাক্কা দেয় ।refs/heads/<branch>

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


6

"পুল" অ্যাপ্লিকেশন একটি স্বয়ংক্রিয় সেট-আপ-এবং-ভুলবেন সমাধান। এটি আপনার কাঁটাচামড়ার ডিফল্ট শাখাটি আপস্ট্রিম সংগ্রহস্থলের সাথে সিঙ্ক করবে।

ইউআরএল দেখুন, সবুজ "ইনস্টল" বোতামটি ক্লিক করুন এবং যেখানে আপনি স্বয়ংক্রিয়ভাবে সিঙ্ক্রোনাইজেশন সক্ষম করতে চান সেগুলি সংগ্রহ করুন।

আপনার স্থানীয় কপি সিঙ্কে রয়েছে কিনা তা নিশ্চিত করার জন্য আপনার স্থানীয় মেশিনে আপনাকে সরাসরি গিটহাবের উপর প্রতি ঘন্টা একবার শাখাটি আপডেট করা হয়।


2
দয়া করে নোট করুন যে বেসিক সেটআপের সাহায্যে আপনি আপনার কাঁটাযুক্ত ভাণ্ডারগুলিতে করা পরিবর্তনগুলি হারাতে পারেন। পরিবর্তনগুলি রাখতে, একটি কনফিগার ফাইল সেট আপ করুন এবং একটি নির্দিষ্ট করুন mergemethod। আরও এখানে এখানে
সৌরভ পি ভান্ডারী

1
আমি লক্ষ করেছি যে বেসিক সেটআপটি অনুরোধগুলি প্রেরণ করে এবং সেগুলিকে মার্জ করে (ডকুমেন্টেশনে যা বলা হয়েছে তার বিপরীতে)। এটি কিছুটা বিরক্তিকর তবে ডেটা ক্ষতি সমস্যা সমাধান করে?
krlmlr

4

অ্যান্ড্রয়েড স্টুডিও এখন গিটহাব কাঁটাচামান সংগ্রহস্থলগুলির সাথে কাজ করতে শিখেছে (কনসোল কমান্ড দ্বারা আপনাকে "আপস্ট্রিম" রিমোট রিপোজিটরি যুক্ত করতে হবে না)।

মেনু খুলুন ভিসিএসগিট

এবং দুটি শেষ পপআপ মেনু আইটেমগুলিতে মনোযোগ দিন:

  • আমার গিটহাব কাঁটাচামচ পুনরায়

  • পুল অনুরোধ তৈরি করুন

তাদের চেষ্টা করুন। আমি আমার স্থানীয় সংগ্রহস্থল সিঙ্ক্রোনাইজ করতে প্রথমটি ব্যবহার করি। যাইহোক আপনি "আমার গিটহাব কাঁটাচামচ রিবেস করুন" ক্লিক করার পরে প্যারেন্ট রিমোট রিপোজিটরি ("আপস্ট্রিম") এর শাখাগুলি অ্যান্ড্রয়েড স্টুডিওতে অ্যাক্সেসযোগ্য হবে এবং আপনি তাদের সাথে সহজেই পরিচালনা করতে সক্ষম হবেন।

(আমি "গিট সংহতকরণ" এবং "গিটহাব" প্লাগইন সহ অ্যান্ড্রয়েড স্টুডিও 3.0 ব্যবহার করি))

এখানে চিত্র বিবরণ লিখুন


4

আপনি যখন নিজের কাঁটাযুক্ত সংগ্রহস্থলটিকে ক্লোন করেছেন, তখন আপনার ক্লোনটি যে ডিরেক্টরিটিতে থাকে এবং আপনার গিট ব্যাশ টার্মিনালের কয়েকটি লাইন থাকে।

$ cd project-name

$ git remote add upstream https://github.com/user-name/project-name.git
 # Adding the upstream -> the main repo with which you wanna sync

$ git remote -v # you will see the upstream here 

$ git checkout master # see if you are already on master branch

$ git fetch upstream

এবং সেখানে আপনি যেতে ভাল। মূল সংগ্রহস্থলের সমস্ত আপডেট হওয়া পরিবর্তনগুলি আপনার কাঁটাচালানের ভাণ্ডারে beোকানো হবে।

কোনও প্রকল্পে আপ টু ডেট থাকার জন্য "আনুন" কমান্ড অপরিহার্য: কেবলমাত্র "গিট ফ্যাচ" সম্পাদন করার সময় আপনার সহকর্মীরা দূরবর্তী সার্ভারে চাপ পরিবর্তনগুলি সম্পর্কে আপনাকে অবহিত করা হবে।

আপনি আরও প্রশ্নের জন্য এখানে যেতে পারেন


4

আপনি যদি আপনার উজান সেট করেন। সাথে চেক করুন git remote -v, তাহলে এটি যথেষ্ট হবে।

git fetch upstream
git checkout master
git merge --no-edit upstream/master
git push

2

এটি আপনার সংগ্রহস্থলের আকার এবং আপনি কীভাবে এটি তৈরি করেছিলেন তার উপর নির্ভর করে।

এটি যদি একটি বড় সংগ্রহস্থল হয় তবে আপনি এটি বিশেষ উপায়ে পরিচালনা করতে চেয়েছিলেন (যেমন ড্রপের ইতিহাস)। মূলত, আপনি বর্তমান এবং উজানের সংস্করণগুলির মধ্যে পার্থক্য পেতে পারেন, তাদের প্রতিশ্রুতিবদ্ধ করতে পারেন এবং তারপরে চেরি আবার মাস্টারটিতে ফিরে আসতে পারেন।

পড়ার চেষ্টা করুন এই এক । এটি কীভাবে বড় গিট সংগ্রহস্থলগুলি পরিচালনা করতে পারে এবং সর্বশেষ পরিবর্তনগুলির সাথে সেগুলি কীভাবে প্রবাহিত করা যায় তা বর্ণনা করে।


2

আমি উপর যোগ করতে চাই @ krlmlr এর উত্তর

প্রাথমিকভাবে, forked সংগ্রহস্থলের এক শাখা নামে জানিয়েছেন: master। আপনি যদি কোনও নতুন বৈশিষ্ট্য বা কোনও স্থির উপর কাজ করে থাকেন তবে আপনি সাধারণত একটি নতুন শাখা featureতৈরি করে পরিবর্তনগুলি করেন।

আপনি যদি চাইছেন যে কাঁটাচালিত সংগ্রহস্থলটি প্যারেন্ট রিপোজিটরির সাথে সমলয় হয়, আপনি পুল অ্যাপের জন্য ( বৈশিষ্ট্য শাখায় ) একটি কনফিগার ফাইল ( pull.yml) সেট আপ করতে পারেন, এটির মতো:

version: "1"
rules:
  - base: feature
    upstream: master
    mergeMethod: merge
  - base: master
    upstream: parent_repo:master
    mergeMethod: hardreset

এটি masterকাঁটাযুক্ত রেপোর শাখাকে প্যারেন্ট রেপোর সাথে আপ টু ডেট রাখে । এটি featureকাঁটাযুক্ত রেপোর masterশাখাকে একই মার্জ করে ফোরকড রেপোর শাখার মাধ্যমে আপডেট করে রাখে । এটি ধরে নেওয়া হয় যে featureশাখাটি ডিফল্ট শাখা যা কনফিগার ফাইল রয়েছে।

এখানে দুটি mergemethodsখেলতে hardresetচলেছে , একটি হ'ল masterপ্যারেন্ট রেপোর সাথে কাঁটাযুক্ত রেপোর শাখায় সিঙ্ক পরিবর্তনগুলি জোর করতে সহায়তা করে এবং অন্যটি পদ্ধতি merge। এই পদ্ধতিটি আপনার দ্বারা featureশাখায় করা পরিবর্তনগুলি এবং শাখায় বলপূর্বক সিঙ্কের কারণে সম্পন্ন হওয়া পরিবর্তনগুলি মার্জ করার জন্য ব্যবহৃত হয় master। মার্জ সংঘাতের ক্ষেত্রে, পুল অ্যাপ্লিকেশন আপনাকে টানার অনুরোধের সময় পরবর্তী ক্রিয়াটি বেছে নিতে দেয়।

আপনি mergemethods এখানে বেসিক এবং উন্নত কনফিগারেশন এবং বিভিন্ন সম্পর্কে পড়তে পারেন ।

আমি বর্তমানে আমার Forked রেপো তে এই কনফিগারেশন ব্যবহার করছি এখানে নিশ্চিত একটি বর্ধিতকরণ অনুরোধ করতে এখানে থাকার বিষয়টি মতেই আপডেট করা হয়েছে।


1

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

1. কাঁটাচামচ মাস্টার থেকে শাখা তৈরি করুন এবং সেখানে পরিবর্তন করুন

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

২. কাঁটা মাস্টারের স্বয়ংক্রিয়ভাবে আপডেট করার জন্য একটি নির্ধারিত কাজ তৈরি করুন

এটি ক্রোন দিয়ে করা যেতে পারে । আপনি যদি এটি লিনাক্সে করেন তবে উদাহরণ কোডের জন্য এখানে।

$ crontab -e

crontab fileঘন্টাটি ভিত্তিতে কাজটি সম্পাদন করতে এই কোডটি দিন ।

0 * * * * sh ~/cron.sh

তারপরে cron.shস্ক্রিপ্ট ফাইল এবং এসআইএস-এজেন্টের সাথে একটি গিট ইন্টারঅ্যাকশন তৈরি করুন এবং / অথবা নীচে হিসাবে আশা করুন

#!/bin/sh
WORKDIR=/path/to/your/dir   
REPOSITORY=<name of your repo>
MASTER="git@github.com:<username>/$REPOSITORY.git"   
UPSTREAM=git@github.com:<upstream>/<name of the repo>.git  

cd $WORKDIR && rm -rf $REPOSITORY
eval `ssh-agent` && expect ~/.ssh/agent && ssh-add -l
git clone $MASTER && cd $REPOSITORY && git checkout master
git remote add upstream $UPSTREAM && git fetch --prune upstream
if [ `git rev-list HEAD...upstream/master --count` -eq 0 ]
then
    echo "all the same, do nothing"
else
    echo "update exist, do rebase!"
    git reset --hard upstream/master
    git push origin master --force
fi
cd $WORKDIR && rm -rf $REPOSITORY
eval `ssh-agent -k`

আপনার কাঁটাযুক্ত সংগ্রহস্থলটি পরীক্ষা করুন। সময়ে সময়ে এটি সর্বদা এই বিজ্ঞপ্তিটি প্রদর্শন করবে:

এই শাখাটিও সাথে রয়েছে <upstream>: মাস্টার

এখানে চিত্র বর্ণনা লিখুন


0

এই আদেশগুলি ব্যবহার করুন (ভাগ্যবান ক্ষেত্রে)

git remote -v
git pull
git fetch upstream
git checkout master
git merge upstream/master --no-ff
git add .
git commit -m"Sync with upstream repository."
git push -v
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.