গিথুব: উজানের শাখা কাঁটাচামচে আমদানি করুন


169

আমার কাছে গিথুবে originএকটি প্রকল্প ( upstream) থেকে কাঁটাচামচ রয়েছে । এখন প্রবাহ প্রকল্পটি একটি নতুন শাখা যুক্ত করেছে, আমি আমার কাঁটাচামচে আমদানি করতে চাই। আমি কেমন করে ঐটি করি?

আমি রিমোটটি পরীক্ষা করে দেখার চেষ্টা করেছি এবং তার উপরে একটি শাখা তৈরি করেছি, তবে এটি শাখাটিকে যেভাবে git pushধাক্কা দেওয়ার চেষ্টা করছে তা কনফিগার করে upstream:

git checkout upstream/branch
git checkout -b branch

সম্পাদন করা

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

সুতরাং আমি মূলত এমন একটি অস্তিত্বহীন শাখার চেকআউট করতে চাই originযার উপরের বিষয়বস্তুগুলি এঁকে নেওয়া হবে upstream

উত্তর:


262
  1. আপনার স্থানীয় রেপোতে আপনি নতুন উজানের শাখাটি টানছেন তা নিশ্চিত করুন :

    • প্রথমে নিশ্চিত হয়ে নিন যে আপনার কার্যনির্বাহী গাছটি পরিষ্কার (কমিট / স্ট্যাশ / কোনও পরিবর্তন ফিরিয়ে দিন)
    • তারপরে, git fetch upstreamনতুন প্রবাহ শাখাটি পুনরুদ্ধার করতে
  2. তৈরি করুন এবং একটি সুইচ নতুন মূল প্রজেক্টের শাখার স্থানীয় সংস্করণ ( newbranch):

    • git checkout -b newbranch upstream/newbranch
  3. আপনি যখন নতুন শাখা ধাক্কা করার জন্য প্রস্তুত হন উৎপত্তি :

    • git push -u origin newbranch

-U নির্দিষ্ট দূরবর্তী ট্র্যাকিং আপ সুইচ সেট (এই উদাহরণে, origin)


6
আমি বিশ্বাস করি git fetch upstreamপ্রথম পদক্ষেপ এ একটি ভাল বিকল্প, যেহেতু git pull upstreamপ্রয়োজন আরো ক্রিয়া পর কাজ করতে হবে git remote add ...জন্য upstream
আলেকজান্ডার পাভলভ

গিট টান আপস্ট্রিম রিটার্ন: You asked to pull from the remote 'upstream', but did not specify a branch. Because this is not the default configured remote for your current branch, you must specify a branch on the command line.কমান্ডের শেষে শাখার নাম যুক্ত করায় একটি নতুন স্থানীয় শাখা গঠনের অনুমতি না দিয়ে বর্তমান স্থানীয় শাখার সাথে উজানে শাখার মধ্যে একীভূত হওয়ার কারণ ঘটায়। কোন ধারনা?
এম মন্টু

1
প্রতিস্থাপন করা হচ্ছে git pull upstreamসঙ্গে git fetch upstreamসমস্যা সমাধান, এবং নিম্নলিখিত ধাপগুলি কাজ করেন।
এমমন্টু

আমি পেয়েছি: মারাত্মক: পাথগুলি আপডেট করতে পারে না এবং একই সাথে শাখা 'আপস্ট্রিম' এ স্যুইচ করতে পারে। প্রতিশ্রুতি হিসাবে সমাধান করা যায় না এমন 'আপস্ট्रीम / মাস্টার' চেকআউট করার ইচ্ছা কি আপনার ছিল?
sureshvv

1
@sureshvv সম্ভবত এটি কারণ যে আপনার যে কোনও কিছু করার আগে আপস্ট্রিম নামের আপস্ট্রিম সংগ্রহস্থলের একটি রিমোট রেফারেন্স থাকা দরকার । আপনি যদি এটি না করেন তবে আপনি কীভাবে এটি যুক্ত করবেন: গিট রিমোট আপনার_গিত_উপস্ট্রিম_রেপোসিটিরি_উরল . git প্রবাহিত করুনএই বিষয়ে আপনার যদি স্পষ্টির প্রয়োজন হয় তবে এটি পড়ুন
গ্যাব্রিয়েল রায়হা

7

আমি ব্যবহার করব

git checkout -b <new_branch> upstream/<new_branch>

এটাই আসলে আমি প্রশ্নটিতে যা বলেছি তার আগেও চেষ্টা করেছি; এটি একই ফলাফল বাড়ে।
poke

4

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

[remote "somebody"]
        url = git@github.com:somebodys/repo.git
        fetch = +refs/heads/master:refs/remotes/upstream/master

.Git / কনফিগারেশন নিম্নরূপে সম্পাদনা করা আমার সমস্যাটি স্থির করেছে

[remote "somebody"]
        url = git@github.com:somebodys/repo.git
        fetch = +refs/heads/*:refs/remotes/upstream/*

1

নিম্নলিখিত পদক্ষেপগুলি আমার পক্ষে ভাল কাজ করেছে (ধরে নিচ্ছে আপস্ট্রি শাখার নামটি branch):

$ git fetch upstream
$ git checkout branch
$ git push origin

1
আমি গিট ফেইচ আপস্ট্রিমে মারাত্মক পেয়েছি: 'উজান' গিট সংগ্রহস্থল মারাত্মক বলে মনে হচ্ছে না: দূরবর্তী সংগ্রহস্থল থেকে পড়া যায়নি। দয়া করে নিশ্চিত হয়ে নিন যে আপনার কাছে সঠিক অ্যাক্সেসের অধিকার রয়েছে এবং ভান্ডার রয়েছে।
থিংডিজিটাল

0

--track?

git branch --track branch upstream/branch

হতে পারে আমি আপনাকে ভুল বুঝতে পেরেছি, তবে এটি করা একইভাবে শাখাটি স্থাপন করবে; সঙ্গে pushথেকে Pusing upstream
অকর্মা

না, আমি মনে করি আপনাকে ভুল বুঝেছি।
ট্রয়লস্কন

0

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

[remote "origin"]
url = git@github.com:<your_user/org>/<repo>.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
rebase = true
[remote "upstream"]
url = git@github.com:<upstream_user>/<repo>.git
fetch = +refs/heads/*:refs/remotes/upstream/*
[remote "other_user"]
url = git@github.com:<other_user>/<repo>.git
fetch = +refs/heads/*:refs/remotes/<other_user>/*

এখন আপনি <other_user>কাঁটাচামচ থেকে একটি শাখা চেকআউট করতে পারেন ।

git fetch <other_user> <branch>
git checkout -b <branch> <other_user>/<branch>

এটি আপনাকে একটি স্থানীয় শাখা দেবে যা কাঁটাচামচ থেকে উত্পন্ন।

স্থানীয় শাখাটি পুশ করতে আমাকে আমার পুশ কমান্ডের সাথে নির্দিষ্ট হতে হয়েছিল।

git push origin <branch>

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