unrelated - github new




كيف يمكنني تحديد عنوان URL الذي تم في الأصل استنساخ مستودع Git محلي؟ (13)

للحصول على عنوان IP / اسم المضيف origin

بالنسبة إلى ssh:// repositories:

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 ":"

لقد سحبت مشروعًا من GitHub منذ بضعة أيام. لقد اكتشفت منذ ذلك الحين أن هناك عدة شوكات على GitHub ، وأنا أهملت ملاحظة أي واحد أخذت في الأصل. كيف يمكنني تحديد أي من تلك الشوكات التي سحبت؟


أعتقد أنه يمكنك العثور عليها ضمن .git/config و remote["origin"] إذا لم تتلاعب بذلك.


إذا كنت تريد ذلك لأغراض البرمجة النصية ، فيمكنك الحصول على عنوان URL فقط

git config --get remote.origin.url

إذا كنت تريد فقط عنوان URL البعيد أو تم كسر التكامل المرجعي:

git config --get remote.origin.url

إذا كنت تحتاج إلى إخراج كامل أو سلامة مرجعية سليمة:

git remote show origin

عند استخدام git clone (من GitHub ، أو أي مستودع مصدر لهذه المسألة) ، يكون الاسم الافتراضي لمصدر النسخة هو "origin". سيؤدي استخدام git remote show إلى عرض المعلومات الخاصة بهذا الاسم البعيد. يجب أن تظهر الخطوط القليلة الأولى:

C:\Users\jaredpar\VsVim> git remote show origin
* remote origin
  Fetch URL: [email protected]:jaredpar/VsVim.git
  Push  URL: [email protected]:jaredpar/VsVim.git
  HEAD branch: master
  Remote branches:

إذا كنت تريد استخدام القيمة في البرنامج النصي ، فستستخدم الأمر الأول المذكور في هذه الإجابة.


اجابة قصيرة:

$ git remote show -n origin

أو ، بديل للنصوص السريعة الخالصة:

$ git config --get remote.origin.url

بعض المعلومات:

  1. سوف $ git remote -v طباعة جميع أجهزة التحكم عن بعد (وليس ما تريد). تريد المنشأ الصحيح؟
  2. $ git remote show origin أفضل بكثير ، ويظهر فقط origin ولكنه يستغرق وقتًا طويلاً جدًا (تم اختباره على git version 1.8.1.msysgit.1).

انتهى بي الأمر: $ git remote show -n origin ، والذي يبدو أسرع. مع -n لن يجلب رؤساء عن بعد (فروع AKA). لا تحتاج إلى هذا النوع من المعلومات ، أليس كذلك؟

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

يمكنك تطبيق | grep -i fetch | grep -i fetch إلى جميع الإصدارات الثلاثة لإظهار عنوان URL فقط.

إذا كنت تحتاج إلى سرعة نقية ، فاستخدم:

$ git config --get remote.origin.url

بفضل @Jefromi للإشارة إلى ذلك.


اطبع بشكل تعسفي بعنوان جلب عناوين URL عن بُعد:

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

طريقة بسيطة هي فتح ملف .git/config :

cat .git/config

للتعديل:

vim .git/config أو

nano .git/config


قد لا يسمى جهاز التحكم عن بُعد في المنبع باسم "origin" ، لذا إليك شكلًا مختلفًا:

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

لتكملة الإجابات الأخرى: إذا تم تغيير جهاز التحكم عن بعد لسبب ما وبالتالي لا يعكس الأصل الأصلي ، git reflog أن يشير الإدخال الأول في السجل (أي آخر إدخال يتم عرضه بواسطة الأمر git reflog ) إلى المكان الذي كان فيه الريبو في الأصل مستنسخ من.

على سبيل المثال

$ git reflog | tail -n 1
f34be46 [email protected]{0}: clone: from https://github.com/git/git
$

(ضع في اعتبارك أنه قد يتم إزالة السجل ، وهذا لا يضمن العمل.)


لتلخيص ، هناك أربع طرق على الأقل:

(تمت تجربة ما يلي بالنسبة لمستودع Linux الرسمي)

أقل المعلومات:

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

مع git remote show origin يجب أن تكون في دليل المشاريع. ولكن إذا كنت تريد تحديد عناوين URL من أي مكان آخر يمكنك استخدامه:

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

إذا كنت ستحتاج إلى هذا الأمر غالبًا ، يمكنك تحديد اسم مستعار في .bashrc أو .bash_profile باستخدام MacOS.

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

لذلك تحتاج فقط إلى الاتصال giturl في المجلد الجذر Git من أجل الحصول ببساطة على عنوان URL الخاص به.

إذا قمت بتوسيع هذا الاسم المستعار مثل هذا

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

تحصل فقط على عنوان URL العادي دون السابق

"URL ="

في

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

تحصل على المزيد من الاحتمالات في استخدامه:

مثال

على Mac ، يمكنك الاتصال بـ open $(giturl) لفتح عنوان URL في المتصفح القياسي.

أو chrome $(giturl) لفتحه باستخدام متصفح Chrome على نظام التشغيل Linux.


مع الإصدار Git 2.7 (إصدار 5 يناير 2015) ، لديك حل أكثر git remote باستخدام git remote :

git remote get-url origin

(قلادة جميلة من أصل git remote set-url origin <newurl> )

انظر ارتكبت 96f78d3 (16 سبتمبر 2015) من قبل بن Boeckel ( mathstuf ) .
(تم دمجها بواسطة Junio ​​C gitster - gitster - في ارتكاب e437cbd ، في 5 أكتوبر 2015) :

بعيد: إضافة get-url subcommand

توسيع insteadOf هو جزء من ls-remote --url ولا توجد طريقة لتوسيع pushInsteadOf كذلك.
أضف عنوانًا فرعيًا لـ get-url لتتمكن من الاستعلام عن كلٍّ منهما بالإضافة إلى طريقة للحصول على جميع عناوين URL التي تمت تهيئتها.

get-url:

يسترد عناوين URL لجهاز التحكم عن بعد.
يتم توسيع تكوينات بدلاً insteadOf و pushInsteadOf هنا.
بشكل افتراضي ، يتم سرد عنوان URL الأول فقط.

  • باستخدام " --push " ، يتم الاستعلام عن عناوين URL بدلاً من جلب عناوين URL.
  • باستخدام " --all " ، سيتم إدراج جميع عناوين URL لجهاز التحكم عن بُعد.

قبل git 2.7 ، كان لديك:

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

#!/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" == [email protected]* ]] \
 && { 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 [email protected]:your-username/your-repository.git
cd your-repository

git-remote-url origin

انتاج:

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




git-remote