J'ai tiré un projet de GitHub il y a quelques jours. Depuis, j'ai découvert qu'il y avait plusieurs forks sur GitHub et j'ai omis de noter celle que j'avais prise à l'origine. Comment puis-je déterminer laquelle de ces fourches j'ai tiré?
Si vous voulez seulement l'URL distante ou l'intégrité référentielle a été brisée:
git config --get remote.Origin.url
Si vous avez besoin d'une sortie complète ou si l'intégrité référentielle est intacte:
git remote show Origin
Lors de l'utilisation de git clone
(à partir de GitHub ou de tout autre référentiel source), le nom par défaut de la source du clone est "Origin". Utiliser git remote show
affichera les informations sur ce nom distant. Les premières lignes devraient montrer:
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:
Si vous souhaitez utiliser la valeur dans le script, utilisez la première commande répertoriée dans cette réponse.
Si vous le souhaitez à des fins de script, vous ne pouvez obtenir que l’URL avec
git config --get remote.Origin.url
Tu peux essayer:
git remote -v
Il imprimera toutes les URL de récupération/diffusion de vos télécommandes.
Pour avoir la réponse:
git ls-remote --get-url [REMOTE]
C’est mieux que de lire la configuration; reportez-vous à la page de manuel pour git-ls-remote
:
--get-url
Développez l'URL du référentiel distant donné en tenant compte de tout paramètre de configuration
"url.<base>.insteadOf"
(voirgit-config(1)
) et sortir sans parler à la télécommande.
Comme l'a souligné @Jefromi, cette option a été ajoutée à v1.7.5 et n'a été documentée que jusqu'au v1.7.12.2 (2012-09).
Avec Git 2.7 (version du 5 janvier 2015), vous avez une solution plus cohérente avec git remote
:
git remote get-url Origin
(Joli pendentif de git remote set-url Origin <newurl>
)
Voir commit 96f78d3 (16 sept. 2015) de Ben Boeckel (mathstuf
) .
(Fusion de Junio C Hamano - gitster
- dans commit e437cbd , 5 octobre 2015):
remote: ajouter la sous-commande get-url
Expanding
insteadOf
fait partie dels-remote --url
et il n’ya aucun moyen pour développerpushInsteadOf
également.
Ajoutez une sous-commandeget-url
pour pouvoir interroger les deux ainsi qu'un moyen d'obtenir toutes les URL configurées.
get-url:
Récupère les URL d'une télécommande.
Les configurations pourinsteadOf
etpushInsteadOf
sont développées ici.
Par défaut, seule la première URL est répertoriée.
- Avec '
--Push
', les URL push sont interrogées plutôt que de chercher des URL.- Avec '
--all
', toutes les URL de la télécommande seront listées.
Avant Git 2.7, vous aviez:
git config --get remote.[REMOTE].url
git ls-remote --get-url [REMOTE]
git remote show [REMOTE]
Pour résumer, il y a au moins quatre manières:
(Ce qui suit a été essayé pour le dépôt officiel Linux)
Moins d'informations:
$ git config --get remote.Origin.url
https://github.com/torvalds/linux.git
et
$ git ls-remote --get-url
https://github.com/torvalds/linux.git
Plus d'information:
$ git remote -v
Origin https://github.com/torvalds/linux.git (fetch)
Origin https://github.com/torvalds/linux.git (Push)
Encore plus d'informations:
$ 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)
Réponse courte:
$ git remote show -n Origin
ou, une alternative aux scripts rapides purs:
$ git config --get remote.Origin.url
Quelques infos:
$ git remote -v
imprimera toutes les télécommandes (pas ce que vous voulez). Vous voulez que Origin ait raison?$ git remote show Origin
beaucoup mieux, montre seulement Origin
mais prend trop de temps (testé sur git version 1.8.1.msysgit.1).Je me suis retrouvé avec: $ git remote show -n Origin
, qui semble être le plus rapide. Avec -n
, les têtes distantes ne seront pas récupérées (branches AKA). Vous n'avez pas besoin de ce type d'informations, non?
http://www.kernel.org/pub//software/scm/git/docs/git-remote.html
Vous pouvez appliquer | grep -i fetch
aux trois versions pour afficher uniquement l'URL d'extraction.
Si vous avez besoin de vitesse pure, utilisez:
$ git config --get remote.Origin.url
Merci à @Jefromi pour l'avoir signalé.
Je pense que vous pouvez le trouver sous .git/config
et remote["Origin"]
si vous n’avez pas manipulé cela.
L'URL Git sera à l'intérieur du fichier de configuration Git. La valeur correspond à la clé url
:
cd project_dir
cat .git/config | grep url | awk '{print $3}'
Remarque: cela fonctionnera même si vous êtes hors ligne ou si le serveur git distant a été arrêté.
La télécommande en amont ne peut pas s'appeler "Origine", alors voici une variante:
remote=$(git config --get branch.master.remote)
url=$(git config --get remote.$remote.url)
basename=$(basename "$url" .git)
echo $basename
Ou:
basename $(git config --get remote.$(git config --get branch.master.remote).url) .git
Pour des variables plus utiles, il y a:
$ git config -l
Je ne me souviens jamais de tous les paramètres des commandes Git, aussi je viens de mettre un alias dans le fichier ~/.gitconfig
qui me semble plus logique, pour que je puisse m'en souvenir, et cela se traduit par moins de frappe:
[alias]
url = ls-remote --get-url
Après avoir rechargé le terminal, vous pouvez simplement taper:
> git url
Voici quelques-uns de mes plus fréquemment utilisés:
[alias]
cd = checkout
ls = branch
lsr = branch --remote
lst = describe --tags
Origin
Pour les référentiels ssh://
:
git ls-remote --get-url Origin | cut -f 2 -d @ | cut -f 1 -d "/"
Pour les référentiels git://
:
git ls-remote --get-url Origin | cut -f 2 -d @ | cut -f 1 -d ":"
J'utilise essentiellement:
git remote get-url Origin
Cela fonctionne pour la console de commande Git Bash ou la console de commande CMD sous Windows. Cela dit, cela fonctionne avec la version 2.x de Git.
Avec git remote show Origin
, vous devez être dans le répertoire des projets. Mais si vous voulez déterminer les URL de n'importe où ailleursvous pouvez utiliser:
cat <path2project>/.git/config | grep url
Si vous avez souvent besoin de cette commande, vous pouvez définir un alias dans votre .bashrc
ou .bash_profile
avec MacOS.
alias giturl='cat ./.git/config | grep url'
Il suffit donc d’appeler giturl
dans le dossier racine de Git pour obtenir simplement son URL.
Si vous étendez cet alias comme ça
alias giturl='cat .git/config | grep -i url | cut -d'=' -f 2'
vous obtenez uniquement l'URL simple sans le précédent
"url ="
dans
vous obtenez plus de possibilités dans son utilisation:
Exemple
Sur Mac, vous pouvez appeler open $(giturl)
pour ouvrir l’URL dans le navigateur standard.
Ou chrome $(giturl)
pour l'ouvrir avec le navigateur Chrome sous Linux.
Pour compléter les autres réponses: Si, pour une raison quelconque, la télécommande a été modifiée et ne reflète donc pas l'origine originale, la toute première entrée du journal (c'est-à-dire la dernière entrée affichée par la commande git reflog
) devrait indiquer où le repo a été cloné à l'origine.
par exemple.
$ git reflog | tail -n 1
f34be46 HEAD@{0}: clone: from https://github.com/git/git
$
(Gardez à l'esprit que le reflog peut être purgé, cela ne garantit donc pas son efficacité.)
Une manière simple est d'ouvrir le fichier .git/config
:
cat .git/config
Éditer:
vim .git/config
ou
nano .git/config
Imprimer des URL de récupération à distance nommées arbitrairement:
git remote -v | grep fetch | awk '{print $2}'
Si vous ne connaissez pas le nom de la connexion distante en amont d'une branche, vous pouvez d'abord le rechercher en consultant le nom de la branche en amont sur lequel la branche actuelle a été créée. Utilisez git rev-parse
comme ceci:
git rev-parse --symbolic-full-name --abbrev-ref @{upstream}
Cela montre cette branche en amont qui était la source de la branche actuelle. Cela peut être analysé pour obtenir le nom distant comme ceci:
git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1
Maintenant, prenez cela et dirigez-le vers git ls-remote
et vous obtiendrez l'URL de la télécommande en amont qui est la source de la branche actuelle:
git ls-remote --get-url \
$(git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1)
Notez maintenant que ce n'est pas nécessairement le même que le référentiel distant source à partir duquel le clonage a été effectué. Dans de nombreux cas cependant, cela suffira.
#!/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"
}
Usage:
# 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
Sortie:
https://github.com/your-username/your-repository
Pour moi, c'est le moyen le plus facile (moins de taper):
$ git remote -v
Origin https://github.com/torvalds/linux.git (fetch)
Origin https://github.com/torvalds/linux.git (Push)
en fait, j'ai cela dans une alias
appelée s
qui fait:
git remote -v
git status
Vous pouvez ajouter à votre profil avec: alias s='git remote -v && git status'
git config --list
Cette commande donnera toutes les informations relatives à votre référentiel.