আমি জানতে চাই যে গিটে কোন স্থানীয় শাখা কোন দূরবর্তী শাখা ট্র্যাক করছে তা বলার উপায় আছে কিনা।
আমি একটি রিমোট সার্ভার ব্যবহার করছি, যার নাম "উত্স"।
আমি জানতে চাই যে গিটে কোন স্থানীয় শাখা কোন দূরবর্তী শাখা ট্র্যাক করছে তা বলার উপায় আছে কিনা।
আমি একটি রিমোট সার্ভার ব্যবহার করছি, যার নাম "উত্স"।
উত্তর:
আমার পুতুলের অনুলিপিটির উদাহরণ ব্যবহার করে গিথুব ডটকমের উজানের গিট সংগ্রহস্থল থেকে চেক আউট ...
$ git remote show origin
* remote origin
Fetch URL: git://github.com/reductivelabs/puppet.git
Push URL: git://github.com/reductivelabs/puppet.git
HEAD branch: master
Remote branches:
0.24.x tracked
0.25.x tracked
2.6.x tracked
master tracked
next tracked
primordial-ooze tracked
reins-on-a-horse tracked
testing tracked
testing-17-march tracked
testing-18-march tracked
testing-2-april tracked
testing-2-april-midday tracked
testing-20-march tracked
testing-21-march tracked
testing-24-march tracked
testing-26-march tracked
testing-29-march tracked
testing-31-march tracked
testing-5-april tracked
testing-9-april tracked
testing4268 tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
তারপরে যদি আমি নিম্নলিখিতগুলি সম্পাদন করি:
$ git checkout -b local_2.6 -t origin/2.6.x
Branch local_2.6 set up to track remote branch 2.6.x from origin.
Switched to a new branch 'local_2.6'
এবং অবশেষে git remote show origin
কমান্ডটি আবার চালিত করুন আমি নীচের নীচে নীচে নীচে দেখতে পাবেন:
Local branches configured for 'git pull':
local_2.6 merges with remote 2.6.x
master merges with remote master
git fetch
বা git pull
দূরবর্তী শাখাগুলির আপডেট করা হয় তবে আপনার ক্লোন করা সংগ্রহস্থলটিতে ট্র্যাক করা হবে। স্থানীয় শাখাগুলি কেবল এটিই, দূরবর্তী শাখাগুলির স্থানীয় শাখাগুলি এবং সুতরাং যথাযথ আদেশ দেওয়ার পরে দূরবর্তী শাখাগুলির আপডেটগুলি ট্র্যাক এবং একত্রিত করা হবে। স্থানীয় শাখাটি তৈরি করার সময় আমি স্পষ্টতই '-t' বিকল্পটি অন্তর্ভুক্ত করি যাতে এটি যে শাখা থেকে উদ্ভূত হয়েছিল সেই শাখাকে ট্র্যাক করে তা নিশ্চিত করে। মনে রাখবেন একটি স্থানীয় শাখা অন্য একটি স্থানীয় শাখাও ট্র্যাক করতে পারে তাই দূরবর্তী শাখা হতে হবে না।
git remote show remote-name
উল্লেখ করে to "একত্রিত" লাইনগুলি স্থানীয় শাখাগুলিকে বোঝায় যেগুলিতে একটি "আপস্ট্রি শাখা" কনফিগারেশন রয়েছে ( গিট শাখা বা গিট চেকআউটের / বিকল্পের সাহায্যে তৈরি এবং এভাবে প্রায়শই "ট্র্যাকিং শাখা" দিয়ে বিভ্রান্ত হয়)। --track
-t
সমস্ত শাখার জন্য:
git branch -avv
শুধুমাত্র স্থানীয় শাখার জন্য:
git branch -lvv
কেবল প্রত্যন্ত শাখার জন্য:
git branch -rvv
আপনাকে সমস্ত শাখা পাশাপাশি প্রবাহিত শাখার নাম দেখায়।
git branch -lvv
কেবল প্রবাহের স্থানীয় শাখাগুলি কার্যকর হতে পারে
git branch -vv
আমার জন্য কাজ করে ...
জেরেমি বাউস ট্র্যাকিংয়ের তথ্য কীভাবে git remote show
প্রদর্শন করে তা চিত্রিত করে । এটি কেবলমাত্র যদি আপনি মানুষের ব্যবহারের জন্য তথ্য চান তবে তা যথেষ্ট হবে।
যদি আপনি কোনও স্বয়ংক্রিয় প্রসঙ্গে তথ্যটি ব্যবহার করার পরিকল্পনা করেন (উদাহরণস্বরূপ স্ক্রিপ্ট) আপনার git for-each-ref
পরিবর্তে নিম্ন-স্তরের ("নদীর গভীরতানির্ণয়") ব্যবহার করা উচিত।
% git remote show origin
* remote origin
⋮
Local branches configured for 'git pull':
master merges with remote master
pu merges with remote pu
⋮
% git for-each-ref --format='%(refname:short) <- %(upstream:short)' refs/heads
master <- origin/master
pu <- origin/pu
git for-each-ref
শিখেছি %(upstream)
মধ্যে টোকেন গীত 1.6.3 । গিটের পূর্ববর্তী সংস্করণগুলির সাথে আপনাকে ট্র্যাকিংয়ের তথ্যটি বের করতে হবে git config branch.<name>.remote
এবং git config branch.<name>.merge
(সম্ভবত git for-each-ref
প্রতিটি স্থানীয় শাখার নামের জন্য আদেশগুলি তৈরি করতে ব্যবহার করতে হবে)।
git for-each-ref --format=$'\n'' '' '' '' '' '' ''/%(refname:short);%(upstream:short)' refs/heads | tr ';' $'\n'
একটি নির্দিষ্ট শাখার জন্য, আপনি শাখার নামের উপর বা প্রত্যয় git rev-parse
দিয়ে ব্যবহার করতে পারেন , যেমন:@{u}
@{upstream}
$ git rev-parse --symbolic-full-name master@{u}
refs/remotes/github-mhl/master
... বা সংক্ষিপ্ত আকারের জন্য, যুক্ত করুন --abbrev-ref
$ git rev-parse --symbolic-full-name --abbrev-ref master@{u}
github-mhl/master
branch@{upstream}
প্রতিশ্রুতি প্রত্যাশিত যেখানেই আপনি সাধারণত বাক্য গঠন ব্যবহার করতে পারেন ।
git rev-parse --symbolic-full-name HEAD
বনাম git rev-parse --symbolic-full-name HEAD@{u}
, ধন্যবাদ!
git-tracks
বর্তমান শাখার দ্বারা ট্র্যাক করা দূরবর্তী শাখাটি দেখানোর জন্য আমি নিম্নলিখিত শেল স্ক্রিপ্টটি (নামযুক্ত ) ব্যবহার করি :
#!/bin/sh -e
branch=$(git symbolic-ref HEAD)
branch=${branch##refs/heads/}
remote=$(git config "branch.${branch}.remote")
remoteBranch=$(git config "branch.${branch}.merge")
remoteBranch=${remoteBranch##refs/heads/}
echo "${remote:?}/${remoteBranch:?}"
এটি উল্লিখিতটিও ব্যবহার করতে পারে git for-each-ref
তবে আমি বর্তমান শাখার জন্য আউটপুট ফিল্টার করার চেয়ে সরাসরি অ্যাক্সেসটি কিছুটা সহজ পেয়েছি।
set -e
, তবে সাধারণত স্পষ্ট চেকিংয়ে লেগে থাকি । তবে এই ক্ষেত্রে, এটি সত্যই ভাল।
git version 1.9.4
। এত প্রতিধ্বনি কিছুই :(
.git/config
ফাইল হিসাবে ট্র্যাকিং শাখা তথ্য প্রদান করবে
[remote "Hub"]
url = ssh://xxxx/tmp/Hub
fetch = +refs/heads/*:refs/remotes/Hub/*
[branch "develop"]
remote = Hub
merge = refs/heads/develop
[branch "Dev1"]
remote = Test
merge = refs/heads/Dev1
[remote "Test"]
url = ssh://xxxx/tmp/gittesting/Dev1GIT
fetch = +refs/heads/*:refs/remotes/Test/*
স্থানীয় শাখাগুলির একটি তালিকায় কাজ করে এমন একটি লুপের মধ্যে প্রতিটি স্থানীয় শাখার জন্য আমার সংশ্লিষ্ট দূরবর্তী শাখা (যদি থাকে) খুঁজে পাওয়া দরকার। আমি নিম্নলিখিত ব্যবহার করে শেষ:
git for-each-ref --format='%(refname:short):%(upstream:short)' refs/heads | grep "^LocalBranchName:.*/" | sed "s/^LocalBranchName://"
এটি স্থানীয় শাখাগুলির জন্য কোনও দূরবর্তী শাখা ("সামেরোমোট / সাম্র্যাঞ্চ") এর জন্য কিছুই (একটি ফাঁকা স্ট্রিং) আউটপুট দেবে।
git branch
বিকল্পগুলির সাথে চেষ্টা করুন :
-r
List or delete (if used with -d) the remote-tracking branches.
-a
List both remote-tracking branches and local branches.
অন্যথায়, আপনার পরীক্ষা .git/config
।