Dans le cadre de notre processus de construction, nous mettons à jour les numéros de version et nous voulons valider et repousser les modifications vers le référentiel principal. Il s'agit d'un dépôt git hébergé sur azure devops et utilisant get sources comme première étape:
J'ai ajouté une tâche de ligne de commande à la fin du pipeline avec le code suivant. Il semble y avoir quelque chose qui ne va pas, comment puis-je le faire correctement? Merci.
##[section]Starting: Commit/Push Changes To Git Repo ============================================================================== Task : Command Line Description : Run a command line script using cmd.exe on Windows and bash on macOS and Linux. Version : 2.148.0 Author : Microsoft Corporation Help : [More Information](https://go.microsoft.com/fwlink/?LinkID=613735) ============================================================================== Generating script. ========================== Starting Command Output =========================== ##[command]"C:\windows\system32\cmd.exe" /D /E:ON /V:OFF /S /C "CALL "D:\a\_temp\8b19361b-8f47-4d31-834d-132fedb0b386.cmd"" HEAD detached at e7a1479d Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: ../../../Properties/AssemblyInfo.cs .. (more files modified) SOURCE BRANCH IS refs/heads/master ADDING MODIFIED FILES CREATING COMMIT [detached HEAD 5c1bf6dc] Update version numbers for Build myBuildNumber_5.1.001 2 files changed, 2 insertions(+), 2 deletions(-) error: src refspec master does not match any error: failed to push some refs to 'https://{org}@dev.azure.com/{projectName}/_git/{reponame}' ##[error]Cmd.exe exited with code '1'. ##[section]Finishing: Commit/Push Changes To Git Repo
Voici les résultats:
git config --global user.email "my@email.address.com" git config --global user.name "VSTS Admin" git status ECHO SOURCE BRANCH IS %BUILD_SOURCEBRANCH% ECHO ADDING MODIFIED FILES git add *.cs git add *.build git add *.wxs ECHO CREATING COMMIT git commit -m "Update version numbers for Build %BUILD_BUILDNUMBER%" git push origin master
3 Réponses :
" src refspec master does not match any
" signifie que le re n'est pas une branche maître locale à pousser.
C'est parce que le commit a été créé dans un HEAD détaché (pas de branche)
Vous devez d'abord créer la branche master avec git checkout -b master
avant d'ajouter et de valider.
Plus précisément, comme je l'ai mentionné ici :
git checkout master 2>/dev/null || git checkout -b master;
L' OP dan confirme dans les commentaires :
quand il a obtenu des sources à l'étape précédente, il a été extrait dans une branche différente de celle de master (
git checkout --progress --force e7a1479dc5d2139be5247a027721e2a88b44a890
)
Une extraction d'un commit aboutit directement par définition à un HEAD détaché.
Merci. ça a marché. quand il a obtenu des sources à l'étape précédente, il a été extrait dans une branche différente de celle de master (git checkout --progress --force e7a1479dc5d2139be5247a027721e2a88b44a890)
@dan Super! J'ai inclus votre commentaire dans la réponse pour plus de visibilité.
erreur: src refspec master ne correspond à aucun
erreur: échec de l'envoi de certaines références vers "https: // {org} @ dev.azure.com / {projectName} / _git / {reponame}"
Supposons d'abord que le référentiel que vous exploitez est A et que le référentiel vers lequel vous voulez pousser est B. La raison de cette erreur est que vos référentiels A et B ne sont pas synchronisés. Avant de pousser la branche A, vous devez vous assurer que la branche B est synchronisée, vous devez donc d'abord tirer la branche B vers la branche A, puis pousser la branche A, ou essayer une autre méthode: créer un nouveau référentiel (aucun nouveau commit n'est généré ), puis poussez une branche vers le nouveau dépôt.
git pull origin master git push origin master
J'apprécie la réponse mais cela n'a pas fonctionné. J'ai dû payer au lieu de tirer selon la réponse ci-dessus.
Les choses à noter sont:
git checkout <commit-hash-SHA1>
git push <remote-repo-url> HEAD:refs/heads/<target-branch>
pourrait être origin ou repo-url completgit push url_with_pat HEAD:refs/heads/<target-branch>
(l'url peut également contenir le PAT (jeton d'accès personnel à Github - avec accès en écriture au repo cible) de format:https://<username>:<PAT>@github.com/<username>/<repo>.git
environment variable $(Build.SourceBranch)
qui est de format /refs/head/<branch>
car elle est en mode d'état détaché ( uses refs-heads
)Ceci est particulièrement utile si, pour une raison quelconque, vous essayez de ne pas extraire une branche
Si la méthode ci-dessus n'est pas requise, alors une extraction directe d'une branche spécifique peut être effectuée en utilisant git checkout -b <branch>
classique git checkout -b <branch>
REMARQUE : peut être remplacé par trimmed $ (Build.SourceBranch) où le préfixe /refs/heads/
peut être supprimé avant d'utiliser