স্থানীয় গিট সংগ্রহস্থলটি মূলত ক্লোন করা হয়েছিল এমন ইউআরএল আমি কীভাবে নির্ধারণ করতে পারি?


4089

আমি কিছুদিন আগে গিটহাব থেকে একটি প্রকল্প টেনেছি। আমি তখন থেকেই আবিষ্কার করেছি যে গিটহাবের কয়েকটি কাঁটাচামচ রয়েছে এবং আমি কোনটি মূলত গ্রহণ করেছি তা খেয়াল করতে অবহেলা করেছি। আমি কীভাবে কাঁটাচামচ করেছিলাম তা কীভাবে নির্ধারণ করতে পারি?


162
গিট 2.7 (Q4 2015) দিয়ে, git remote get-url originসম্ভব হবে। দেখুন নিচের আমার উত্তর
VonC


21
git remote get-url originআমার জন্য কাজ করে না - সম্ভবত অবহেলিত? git remote show originযদিও কাজ।
ক্লিক

46
git remote -vএটি সহ আপনাকে প্রচুর তথ্য দেয়।
থরবজর্ন রাভন অ্যান্ডারসন

git remote get-url origin --pushসূক্ষ্মভাবে কাজ করে, দৃশ্যত অবহেলিত নয় এবং দুর্দান্ত সংক্ষিপ্ত তথ্য সরবরাহ করে ( খুব ভার্জোজ git remote show originহতে পারে ) Qv । git help remote
নীলজি

উত্তর:


5752

আপনি যদি কেবলমাত্র দূরবর্তী URL চান তবে বা যদি আপনার এমন কোনও নেটওয়ার্কের সাথে সংযুক্ত না হয় যা দূরবর্তী রেপোতে পৌঁছতে পারে:

git config --get remote.origin.url

আপনার যদি পুরো আউটপুট প্রয়োজন হয় এবং আপনি এমন কোনও নেটওয়ার্কে রয়েছেন যেখানে রিমোট রেপোতে পৌঁছতে পারে যেখানে উত্সটি থাকে:

git remote show origin

ব্যবহার করার সময় git clone(গিটহাব থেকে, বা সেই বিষয়ে কোনও উত্স সংগ্রহস্থল থেকে) ক্লোনটির উত্সের ডিফল্ট নাম "উত্স"। ব্যবহার করে git remote showএই দূরবর্তী নাম সম্পর্কিত তথ্য প্রদর্শন করা হবে। প্রথম কয়েকটি লাইন দেখানো উচিত:

C:\Users\jaredpar\VsVim> git remote show origin
* remote origin
  Fetch URL: git@github.com:jaredpar/VsVim.git
  Push  URL: git@github.com:jaredpar/VsVim.git
  HEAD branch: master
  Remote branches:

আপনি যদি স্ক্রিপ্টে মানটি ব্যবহার করতে চান তবে আপনি এই উত্তরের তালিকাভুক্ত প্রথম কমান্ডটি ব্যবহার করবেন।


2
এর পরিবর্তে গিট কনফিগারেশনটি নীচে বর্ণিত হিসাবে ব্যবহার করুন যদি অ্যামাজন-এস 3 এর সাথে jgit ব্যবহার করা হয়।
ব্যারিকু

6
যদিও মূল প্রশ্নের উদ্দেশ্যটির সাথে প্রাসঙ্গিক নয়, তবে দয়া করে নোট করুন যে "রিড ইউআরএল" পেতে চেষ্টা করা হয়েছে এবং একাধিক ইউআরএল নির্দিষ্ট করা রিমোটের জন্য প্রবেশ করানো হয়েছে, আপনাকে হয় ব্যবহার করতে হবে git remote show origin(optionচ্ছিকভাবে @ দ্বারা সরবরাহিত -n পতাকা সহ) ক্যাসি), বা git remote -v@ মন্টারো এবং @ মডেলের পরামর্শ অনুসারে।
আশ্চর্যজনক

এটি কোন ফাইলটিতে লেখা আছে? আমি ভেবেছিলাম .gitconfigফাইলটি এটি থাকবে তবে আমি এটি আমার হাতে দেখিনি।
অজয় 21

1
@ayjay ´~/.gitconfigসমস্ত gitভান্ডারগুলির কাছে বিশ্বব্যাপী , এটি এখানে স্থানীয় কনফিগারেশন থেকে আসে যা সাধারণত থাকে .git/config(তবে গিট-সাবমডিউলগুলির জন্য উত্তরটি কিছুটা আরও কঠিন)। নোট যে strace git config --get remote.origin.urlআপনার বন্ধু।
টিনো

1
তবে মূল ইউআরএল বর্তমানে ব্যবহৃত রিমোটের ইউআরএল হতে হবে না। : প্রকৃত ব্যবহৃত URL দেখাতে, তারপর আপনি এই সমাধান হবে stackoverflow.com/a/40630957/1069083
rubo77

620

আপনার যদি স্ক্রিপ্টিংয়ের জন্য এটির দরকার হয় তবে আপনি কেবলমাত্র URL টি দিয়ে পেতে পারেন

git config --get remote.origin.url

38
এটা সঠিক উত্তর. এটি git remote show originউপায়টি দ্রুত এবং এটি এমনকি কার্যকর হয়, যদি দূরবর্তী ইউআরএলটি আর পাওয়া না যায় ( কেবল "কনক: সংগ্রহস্থল উপস্থিত নেই" দেখায়)।
অ্যাপলবক্স

5
এটি কনফিগার বিকল্পের কারণে সঠিক উত্তর নয় url.<base>.insteadOf। আমার উত্তর দেখুন - গিটের এই উদ্দেশ্যে একটি আদেশ রয়েছে।
কার্ল সস্টার

2
@ কর্রেসু শীতল, আপনার কাছে +1! আমার প্রতিরক্ষা মতে, এই আদেশটি মার্চ ২০১১ অবধি যুক্ত করা হয়নি এবং এটি সেপ্টেম্বর ২০১২ অবধি ডকুমেন্ট করা হয়নি।
ক্যাসাবেল

1
কেবলমাত্র ক্যাটসকুল --git-dir প্রাসঙ্গিক (কনফিগারেশনটি গিটার ডায়ারে রয়েছে, কাজের গাছের অবস্থানের চেয়ে পৃথক) এবং এটি আমার পক্ষে কাজ করে। আপনি কি নিশ্চিত যে আপনি প্রকৃত .git দিরের জন্য পথটি নির্দিষ্ট করেছেন, এর পিতামহিত ডিরেক্টরি নয়?
ক্যাস্যাবেল

553

আপনি চেষ্টা করতে পারেন:

git remote -v

এটি আপনার সমস্ত রিমোটের আনার / পুশ URL গুলি মুদ্রণ করবে।


255

উত্তর পেতে:

git ls-remote --get-url [REMOTE]

এটি কনফিগারেশন পড়ার চেয়ে ভাল; পড়ুন জন্য man পৃষ্ঠাgit-ls-remote :

--get-URL

যে কোনও "url.<base>.insteadOf"কনফিগার সেটিংস (দেখুন git-config(1)) বিবেচনা করে প্রদত্ত দূরবর্তী সংগ্রহস্থলের URL টি প্রসারিত করুন এবং রিমোটের সাথে কথা না বলে প্রস্থান করুন।

@ জেফ্রমি দ্বারা চিহ্নিত হিসাবে, এই বিকল্পটি v1.7.5 এ যুক্ত হয়েছিল এবং v1.7.12.2 (2012-09) পর্যন্ত নথিভুক্ত করা হয়নি ।


2
ভাল একটি: এটি পূর্ববর্তী সংস্করণগুলি> গিট রিমোট-ভি | গ্রেপ ফেচ | awk '{মুদ্রণ $ 2}'
ravi.zombie

1
আমি মনে করি অন্যান্য উত্তরগুলির মধ্যে বেশিরভাগই গিট কমান্ড এবং গিটের ইতিহাস সম্পর্কে প্রদর্শন সম্পর্কে শো-অ্যান্ড-টোলেট tell এটিই কেবলমাত্র উত্তর যা আপনার প্রবাহকে কল বলে ধরে নি origin
মাইক ডি

এটি পুরানো remote get-urlবিকল্পের জন্য সর্বাধিক প্রত্যক্ষ প্রতিস্থাপন । এটি একটি ড্রপ-ইন প্রতিস্থাপন।
ক্লাতাতু ভন শ্ল্যাকার

111

গিট ২.7 (জানুয়ারী 5, 2015 প্রকাশ করুন) এর সাথে আপনার ব্যবহারের আরও সুসংগত সমাধান রয়েছে git remote:

git remote get-url origin

(সুন্দর দুল git remote set-url origin <newurl>)

দেখুন কমিট 96f78d3 (16 সেপ্টেম্বর 2015) দ্বারা বেন Boeckel ( mathstuf)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে e437cbd কমিট , 05 অক্টোবর 2015) :

দূরবর্তী: get-url সাবকম্যান্ড যোগ করুন

সম্প্রসারণ insteadOfএকটি অংশ ls-remote --urlএবং pushInsteadOfপাশাপাশি প্রসারিত করার কোনও উপায় নেই ।
একটি যোগ করুন get-urlsubcommand উভয় অনুসন্ধান একটি উপায় সব কনফিগার করা URL গুলিতে পেতে সেইসাথে পাবে।

get-url:

রিমোটের জন্য URL গুলি পুনরুদ্ধার করে।
জন্য কনফিগারেশন insteadOfএবং pushInsteadOfএখানে প্রসারিত হয়।
ডিফল্টরূপে শুধুমাত্র প্রথম ইউআরএল তালিকাভুক্ত করা হয়।

  • ' --push' দিয়ে, পুশ ইউআরএলগুলি ইউআরএল আনার পরিবর্তে অনুসন্ধান করা হয়।
  • ' --all' দিয়ে, দূরবর্তী সমস্ত URL টি তালিকাভুক্ত করা হবে।

গিট ২.7 এর আগে আপনার ছিল:

 git config --get remote.[REMOTE].url
 git ls-remote --get-url [REMOTE]
 git remote show [REMOTE]

4
5 বছর পরে অনেক পরিবর্তন হয়েছে এবং এটি এখনই গ্রহণযোগ্য উত্তর হওয়া উচিত। তবে সম্ভবত প্রাক-2.7 বাক্য গঠনও যুক্ত করুন।
এমএসপি

58

সংক্ষেপে বলতে গেলে, কমপক্ষে চারটি উপায় রয়েছে:

(অফিসিয়াল লিনাক্স সংগ্রহস্থলের জন্য নিম্নলিখিতটির চেষ্টা করা হয়েছিল)

সর্বনিম্ন তথ্য:

$ git config --get remote.origin.url
https://github.com/torvalds/linux.git

এবং

$ git ls-remote --get-url
https://github.com/torvalds/linux.git

অধিক তথ্য:

$ git remote -v
origin    https://github.com/torvalds/linux.git (fetch)
origin    https://github.com/torvalds/linux.git (push)

আরও তথ্য:

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/torvalds/linux.git
  Push  URL: https://github.com/torvalds/linux.git
  HEAD branch: master
  Remote branch:
    master 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)

4
নোটটি git config --get remote.origin.urlমূল ইউআরএলটি পুনরুদ্ধার করে যা মূলত রিমোট অ্যাক্সেস করতে ব্যবহৃত ইউআরএল পুনরুদ্ধার করে থাকে git remote add ...বা উপস্থিত git remote set-url ...থাকাকালীন git ls-remote --get-url originপৃথক হতে পারে git config --global url.XXX.insteadOf YYYসুতরাং উভয় আউটপুট পৃথক হতে পারে! আরও মনে রাখবেন যে git ls-remote --get-url(ছাড়াই origin) প্রয়োজনীয়ভাবে পুনরুদ্ধার করে না origin, পরিবর্তে এটি ট্র্যাকড আপস্ট্রি দেখায়, সুতরাং এটি পৃথক হেড অবস্থায় উদাহরণস্বরূপ ব্যর্থ হবে।
টিনো

24

আমি মনে করি আপনি এটি খুঁজে পেতে পারেন .git/configএবং remote["origin"]যদি আপনি তা ব্যবহার করেন না।


22

সংক্ষিপ্ত উত্তর:

$ git remote show -n origin

বা, খাঁটি দ্রুত স্ক্রিপ্টগুলির বিকল্প:

$ git config --get remote.origin.url

কিছু তথ্য:

  1. $ git remote -vসমস্ত রিমোট মুদ্রণ করবে (আপনি যা চান তা নয়)। আপনি ঠিক উত্স চান?
  2. $ git remote show originআরও ভাল, কেবল দেখায় originতবে খুব দীর্ঘ সময় নেয় (গিট সংস্করণ 1.8.1.msysgit.1 এ পরীক্ষিত)।

আমি এটি দিয়ে শেষ করেছি: $ git remote show -n originযা খুব দ্রুত বলে মনে হচ্ছে। -nএটির সাথে দূরবর্তী মাথাগুলি (একেএ শাখা) আনবে না। আপনার এই ধরণের তথ্য দরকার নেই, তাই না?

http://www.kernel.org/pub//software/scm/git/docs/git-remote.html

আপনি | grep -i fetchকেবল আনার URL দেখানোর জন্য আপনি তিনটি সংস্করণেই আবেদন করতে পারেন ।

আপনার যদি খাঁটি গতির প্রয়োজন হয় তবে ব্যবহার করুন:

$ git config --get remote.origin.url

এটি নির্দেশ করার জন্য @ জেফ্রমিকে ধন্যবাদ ।


22

আমার জন্য, এটি সহজ উপায় (কম টাইপিং):

$ git remote -v
origin    https://github.com/torvalds/linux.git (fetch)
origin    https://github.com/torvalds/linux.git (push)

আসলে, আমি মধ্যে একটি করেছি aliasনামক sযে আছে:

git remote -v
git status

আপনি আপনার প্রোফাইলে এটি যুক্ত করতে পারেন: alias s='git remote -v && git status'


17

গিট কমান্ডের সমস্ত পরামিতি আমি কখনই স্মরণ করতে পারি না, তাই আমি কেবলমাত্র একটি ~/.gitconfigফাইল নাম রেখেছি যার ফলে আমার আরও অর্থ হয়, তাই আমি এটি মনে রাখতে পারি এবং এটির ফলে টাইপ কম হয়:

[alias]
url = ls-remote --get-url

টার্মিনালটি পুনরায় লোড করার পরে, আপনি কেবল টাইপ করতে পারেন:

> git url

আমার ঘন ঘন ব্যবহৃত আরও কয়েকটি এখানে:

[alias]
cd = checkout
ls = branch
lsr = branch --remote
lst = describe --tags

আমি গিট-অতিরিক্তগুলিও সুপারিশ করি যার একটি git info কমান্ড রয়েছে যা দূরবর্তী এবং স্থানীয় শাখাগুলিতে আরও বিস্তারিত তথ্য সরবরাহ করে।


আমি এই অনেক পছন্দ!
আলফি

15

গিট URL টি গিট কনফিগারেশন ফাইলের অভ্যন্তরে থাকবে। মানটি কীটির সাথে মিলে যায় url

ম্যাক এবং লিনাক্সের জন্য নীচের কমান্ডগুলি ব্যবহার করুন:

 cd project_dir
 cat .git/config | grep url | awk '{print $3}'

উইন্ডোজের জন্য যে কোনও পাঠ্য সম্পাদকটিতে নীচের ফাইলটি খুলুন এবং কীটির মান সন্ধান করুন url

project_dir/.git/config

দ্রষ্টব্য: আপনি অফলাইনে থাকলে বা রিমোট গিট সার্ভারটি নামানো না হলেও এটি কাজ করবে।


1
মূল চেকআউটটি হোস্ট করা রিমোট সার্ভারটি একবার নিলে এটি আমার জন্য কাজ করেছিল। অন্যান্য সমস্ত প্রচেষ্টা ব্যর্থ হয়েছে: git remote get-url origin >> fatal: No such remote 'origin',git config --get remote.origin.url >>
jxramos

14

আমি মূলত:

git remote get-url origin

এটি উইন্ডোজে গিট বাশ কমান্ড কনসোল বা সিএমডি কমান্ড কনসোলের জন্য কাজ করে। বলেছিল, এটি গিতের ২.x সংস্করণে কাজ করে।



10

উজানের দূরবর্তীটিকে "উত্স" বলা যায় না, সুতরাং এখানে একটি প্রকরণ রয়েছে:

remote=$(git config --get branch.master.remote)
url=$(git config --get remote.$remote.url)
basename=$(basename "$url" .git)
echo $basename

বা:

basename $(git config --get remote.$(git config --get branch.master.remote).url) .git

আরও দরকারী ভেরিয়েবলের জন্য এখানে রয়েছে:

$ git config -l

9

এর আইপি ঠিকানা / হোস্টনামটি পেতে origin

জন্য ssh://ভান্ডার:

git ls-remote --get-url origin | cut -f 2 -d @ | cut -f 1 -d "/"

জন্য git://ভান্ডার:

git ls-remote --get-url origin | cut -f 2 -d @ | cut -f 1 -d ":"

4
এর জন্য sshকেবলমাত্র অনুপস্থিতিতে কাজ করে ~/.ssh/configযা হোস্টনাম বা উপনামটি পুনরায় লিখে দেয়।
টিনো

9

অন্যান্য উত্তরগুলির পরিপূরক হিসাবে: যদি কোনও কারণে রিমোটটি পরিবর্তন করা হয়েছে এবং তাই মূল উত্সটি প্রতিফলিত না করে , তবে রিফলগের প্রথম প্রবেশিকা (অর্থাৎ কমান্ড দ্বারা প্রদর্শিত সর্বশেষ এন্ট্রি)git reflog ) নির্দেশ করা উচিত যেখানে মূলত ক্লোন করা হয়েছিল থেকে।

যেমন

$ git reflog | tail -n 1
f34be46 HEAD@{0}: clone: from https://github.com/git/git
$

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


1
সম্ভবত এটি "আসল" রিমোট পাওয়ার একমাত্র আসল উপায় যদি এটি পরিবর্তন করা থাকে।
জাস্টিন ওহমস

8

আপনার সাথে git remote show originপ্রকল্পের ডিরেক্টরিতে থাকতে হবে। তবে আপনি অন্য যে কোনও জায়গা থেকে ইউআরএল নির্ধারণ করতে চাইলে আপনি ব্যবহার করতে পারেন:

cat <path2project>/.git/config | grep url

আপনার যদি এই কমান্ডটি প্রায়শই প্রয়োজন হয় তবে আপনি নিজের .bashrcবা .bash_profileম্যাকওএসের সাথে একটি উপনাম সংজ্ঞায়িত করতে পারেন ।

alias giturl='cat ./.git/config | grep url'

সুতরাং আপনাকে giturlকেবল ইউআরএলটি পেতে গিট রুট ফোল্ডারে কল করতে হবে।


আপনি যদি এই উপনামটি এভাবে প্রসারিত করেন

alias giturl='cat .git/config | grep -i url | cut -d'=' -f 2'

আপনি পূর্ববর্তীটি ব্যতীত কেবল প্লে ইউআরএল পাবেন

"URL ="

ভিতরে

url = http://example.com/repo.git

আপনি এর ব্যবহারে আরও সম্ভাবনা পান:

উদাহরণ

ম্যাক আপনি open $(giturl)স্ট্যান্ডার্ড ব্রাউজারে URL টি খুলতে কল করতে পারেন ।

বা chrome $(giturl)এটি লিনাক্সে ক্রোম ব্রাউজার দিয়ে খুলতে।



7

ইচ্ছামত নামযুক্ত দূরবর্তী আনয়ন URL গুলি মুদ্রণ করুন:

git remote -v | grep fetch | awk '{print $2}'

6

আপনি যদি কোনও শাখার জন্য প্রবাহের দূরবর্তী নামটি জানেন না, আপনি বর্তমান শাখাটি নির্মিত হয়েছিল উজানের শাখার নামটি পরীক্ষা করে এটি দেখতে পারেন। এটি ব্যবহার করুন git rev-parse:

git rev-parse --symbolic-full-name --abbrev-ref @{upstream}

এটি দেখায় যে উজানের শাখাটি বর্তমান শাখার উত্স ছিল। এটি এর মতো দূরবর্তী নাম পেতে পার্স করা যায়:

git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1

এখন এটি নিন git ls-remoteএবং এটিতে পাইপ দিন এবং আপনি বর্তমান শাখার উত্স হিসাবে প্রবাহিত রিমোটের URL পাবেন:

git ls-remote --get-url \
  $(git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1)

এখন এটি লক্ষ করা উচিত, এটি উত্স থেকে দূরবর্তী সংগ্রহস্থল হিসাবে ক্লোন করা ছিল যেমন একই নয়। অনেক ক্ষেত্রে তবে এটি যথেষ্ট হবে।


5
#!/bin/bash

git-remote-url() {
 local rmt=$1; shift || { printf "Usage: git-remote-url [REMOTE]\n" >&2; return 1; }
 local url

 if ! git config --get remote.${rmt}.url &>/dev/null; then
  printf "%s\n" "Error: not a valid remote name" && return 1
  # Verify remote using 'git remote -v' command
 fi

 url=`git config --get remote.${rmt}.url`

 # Parse remote if local clone used SSH checkout
 [[ "$url" == git@* ]] \
 && { url="https://github.com/${url##*:}" >&2; }; \
 { url="${url%%.git}" >&2; };

 printf "%s\n" "$url"
}

ব্যবহার:

# Either launch a new terminal and copy `git-remote-url` into the current shell process, 
# or create a shell script and add it to the PATH to enable command invocation with bash.

# Create a local clone of your repo with SSH, or HTTPS
git clone git@github.com:your-username/your-repository.git
cd your-repository

git-remote-url origin

আউটপুট:

https://github.com/your-username/your-repository

5

মনে রাখার চেয়ে সহজ হওয়ায় আমি এটিকে পছন্দ করি:

git config -l

এটি সমস্ত দরকারী তথ্য যেমন:

user.name=Your Name
user.email=your.name@notexisting.com
core.autocrlf=input
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=https://github.com/mapstruct/mapstruct-examples
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master

1

সহজেই এই কমান্ডটি ব্যবহার করুন যেখানে আপনি .git ফোল্ডারটি রেখেছেন

git config --get remote.origin.url

আপনি যদি নেটওয়ার্কের সাথে সংযুক্ত থাকেন

git remote show origin

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

এই সাহায্য আশা করি

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