tutorial - what is git




আমি কিভাবে একটি GitHub forked সংগ্রহস্থল আপডেট করব? (11)

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

ওপেন মেনু ভিসিএসজিটি

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

  • আমার GitHub ফর্ক rebbase

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

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

(আমি "গিট ইন্টিগ্রেশন" এবং "GitHub" প্লাগিন সহ Android স্টুডিও 3.0 ব্যবহার করি।)

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

কয়েক দিন পরে অন্য পরিবর্তন অন্য contributor দ্বারা তৈরি করা হয়েছিল। তাই আমার ফর্ক যে পরিবর্তন ধারণ করে না।

আমি কিভাবে আমার ফর্ক মধ্যে যে পরিবর্তন পেতে পারি? আমি অবদান রাখতে আরও পরিবর্তন আছে যখন আমি আমার ফর্ক মুছে ফেলার এবং পুনরায় তৈরি করতে হবে? অথবা একটি আপডেট বাটন আছে?


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

  1. UI এ রিপোজিটরি নির্বাচন করুন।
  2. শীর্ষে বোতামটি "ব্যবহারকারী / শাখা থেকে আপডেট করুন" ক্লিক করুন।

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

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

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

  3. ইস্যু git fetch upstream
  4. ইস্যু git rebase upstream/master

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

এই কমান্ড সম্পর্কে আরও তথ্যের জন্য, here পড়ুন।


এই উত্তরটির তারিখ হিসাবে, ওয়েব ইন্টারফেসে এই বৈশিষ্ট্যটি GitHub ( নাকি আমি আর বলব না? ) নেই । আপনি, তবে, আপনার ভোটটি যোগ করতে [email protected] কে জিজ্ঞাসা করতে পারেন।

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

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


এখানে একটি ফর্ক সিঙ্কিং নেভিগেশন GitHub এর অফিসিয়াল ডকুমেন্ট:

একটি ফর্ক সিঙ্কিং

সেটআপ

আপনি সিঙ্ক করতে পারার আগে, আপস্ট্রিম রিপোজিটরিতে নির্দেশ করে এমন একটি রিমোট যুক্ত করতে হবে। আপনি মূলত ফর্ক যখন আপনি এই কাজ করতে পারে।

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

$ 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(-)

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


এটি আপনার রিপোজিটরির আকার এবং আপনি এটি কিভাবে ফোকাস করেছেন তার উপর নির্ভর করে।

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

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


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

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

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

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

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


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

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

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

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


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

$ 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

এবং সেখানে আপনি যেতে ভাল। প্রধান রিপোজিটরিতে সব আপডেট করা পরিবর্তনগুলি আপনার ফর্ক সংগ্রহস্থলের মধ্যে push করা হবে।

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

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


যদি, আমার মত, আপনি মাস্টারকে সরাসরি কিছু করেন না , যা আপনাকে অবশ্যই করতে হবে, আপনি নিম্নলিখিতটি করতে পারেন।

আপনার ফর্ক স্থানীয় ক্লোন থেকে, আপনার আপস্ট্রিম রিমোট তৈরি করুন। আপনি শুধুমাত্র একবার যে করতে হবে:

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

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

git checkout master
git pull upstream master

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

সুতরাং প্রারম্ভিক আপস্ট্রিম সেটআপ এবং মাস্টার চেকআউটটি অতীতের, আপনাকে যা করতে হবে তা হল আপনার মাস্টারকে আপস্ট্রীমের সাথে সিঙ্ক করার জন্য নিম্নোক্ত কমান্ড চালানো: git pull upstream master


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

# 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 সাথে git merge upstream/master । যাইহোক, যত তাড়াতাড়ি সম্ভব পরিষ্কার পুল অনুরোধ করার জন্য, এটি সম্ভবত রিবেস ভাল।

আপনি যদি আপনার শাখাটি upstream/master রিবাজ করেছেন তবে GitHub এ আপনার নিজস্ব ফর্কড রিপোজিটরিতে এটি ধাক্কা দেওয়ার জন্য আপনাকে push চাপতে বাধ্য করতে হতে পারে। আপনি এটা দিয়ে যাবেন:

git push -f origin master

আপনি শুধুমাত্র -f করার পরে প্রথমবার- -f ব্যবহার করতে হবে।








github