{"id":8344,"date":"2022-04-24T18:20:18","date_gmt":"2022-04-24T16:20:18","guid":{"rendered":"https:\/\/via-internet.de\/blog\/?p=8344"},"modified":"2024-04-28T11:27:04","modified_gmt":"2024-04-28T09:27:04","slug":"git-arbeiten-mit-der-github-kommandozeile","status":"publish","type":"post","link":"https:\/\/via-internet.de\/blog\/2022\/04\/24\/git-arbeiten-mit-der-github-kommandozeile\/","title":{"rendered":"Git | Arbeiten mit der GitHub Kommandozeile"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Installation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Laden Sie das Tool von <a aria-label=\"dieser  (opens in a new tab)\" class=\"ek-link\" href=\"https:\/\/cli.github.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">dieser <\/a>Seite und installieren Sie es. Das Tool besteht aus einer Datei: gh<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.blog\/2021-03-11-scripting-with-github-cli\/\">Hier<\/a> gibt es einen passenden Blog-Eintrag dazu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stellen Sich sicher, dass sich der Installationsordner in ihrem PATH Variable befindet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Danach einfach das Tool mal aufrufen<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"528\" src=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2021\/08\/image-1024x528.png\" alt=\"\" class=\"wp-image-8348\" srcset=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2021\/08\/image-1024x528.png 1024w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2021\/08\/image-300x155.png 300w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2021\/08\/image-768x396.png 768w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2021\/08\/image.png 1430w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Authentifizierung<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Anmelden<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh auth login --hostname github.com<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Default Protokoll einstellen<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"> gh config set -h github.com git_protocol ssh<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Credentials aktualisieren<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh auth status<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Aktualisieren der Credentials:<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh auth refresh<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Konfiguration<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Editor setzen<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh config set editor editorName<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Repositories<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Erstellen<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh repo create &lt;user>\/&lt;reponame>\ngh repo create &lt;user>\/&lt;reponame> --private --enable-issues=false<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Clonen<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh repo clone &lt;user>\/&lt;reponame><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Fork<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh repo clone &lt;user>\/&lt;reponame>\ngh repo clone &lt;user>\/&lt;reponame> --clone=true --remote=true<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">L\u00f6schen<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh alias set delete 'api -X DELETE repos\/$1'\ngh auth refresh -h github.com -s delete_repo<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"2\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># usage (WARNING: no confirmation!)\ngh delete user\/myrepo<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Informationen <\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Liste der Repositorynamen<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh repo list --limit 1000 --json name --jq '.[].name'<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">List der Repository-URLs<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh repo list microsoft --json url --jq '.[].url'<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Liste filtern (in PowerShell)<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh repo list microsoft --limit 3000 --json url --jq '.[].url'  |\nSelect-String PowerBI -NoEmphasis                              |\n\n\n\n\n<h2 class=\"wp-block-heading\">Suchen nach Repositorynamen<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh repo list --limit 1000 --json name --jq '.[].name | match(\".*Angular.*\") | .string'<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Issues<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh issue list<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Alle &#8220;issues&#8221; mit dem Status &#8220;all&#8221;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh issue list --state \"all\"<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh issue list -s \"all\"<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh issue list --assignee \"n8ebel\"<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh issue list -a \"n8ebel\"<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Check Issue Status<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh issue status<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh issue list --state \"closed\"<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh issue list -s \"closed\"<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh issue list --label \"bug\"gh issue list -l \"bug\"<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh issue list<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh issue list -l \"enhancement\"<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Issues anzeigen<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh issue view \"15\"<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh issue list -a \"n8bel\" -l \"bug\"<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Issues erstellen<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh issue create -t \"Sample Issue Title\" -b \"Sample issue description\"<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh issue create --web<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Hilfreiche CLI Aliases<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh issue list --label \"bug\"<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">alias listbugs='gh issue list --label \"bug\"'<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">alias listmybugs='gh issue list -a \"&lt;username>\" -l \"bug\"'<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Pull Requests verwalten<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">List Pull Requests<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh pr list\ngh pr list --state \"all\"\ngh pr list  -s     \"all\"<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh pr list --assignee \"n8ebel\"\ngh pr list  -a        \"n8ebel\"<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Check Pull Request Status<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh pr list --state \"closed\"\ngh pr list -s \"closed\"\ngh pr list --label \"bug\"\ngh pr list -l \"bug\"\ngh pr list\ngh pr list -l \"enhancement\"<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Pull Request anzeigen<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh pr view \"14\"\ngh pr list -a \"n8bel\" -l \"bug\"<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Pull Request erstellen<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh pr create\ngh pr create -t \"Sample Issue Title\" -b \"Sample issue description\"\ngh pr create --web<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Praktische Beispiele<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Alle Repositories clonen, deren Namen einem bestimmte Suchmuster entspricht<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh repo list microsoft --limit 3000 --json url --jq '.[].url' |\nSelect-String PowerBI -NoEmphasis |\n\n\n\n\n<h3 class=\"wp-block-heading\">Repositories suchen und clonen<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gh search repos zola+theme --limit 200 --json url | jq .[].url | cut -d'\"' -f2  >list-of-repositories\nexit\n\ncat list-of-repositories | while read REPO\ndo\n   REP=$(basename $REPO .git)\n   USR=$(basename $(dirname $REPO) )\n\n   FOLDER=${USR}_${REP}\n\n   if [ -d $FOLDER ]; then\n      echo \"$FOLDER already exists\"\n   else\n      git clone $REPO ${USR}_${REP} 2>&amp;-\n      echo \"$FOLDER cloned\"\n   fi\ndone<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Installation Laden Sie das Tool von dieser Seite und installieren Sie es. Das Tool besteht aus einer Datei: gh Hier gibt es einen passenden Blog-Eintrag dazu. Stellen Sich sicher, dass sich der Installationsordner in ihrem PATH Variable befindet. Danach einfach das Tool mal aufrufen Authentifizierung Anmelden Default Protokoll einstellen Credentials aktualisieren Aktualisieren der Credentials: Konfiguration Editor setzen Repositories Erstellen Clonen Fork L\u00f6schen Informationen Liste der Repositorynamen List der Repository-URLs Liste filtern (in PowerShell) Suchen nach Repositorynamen Issues Alle &#8220;issues&#8221; mit dem Status &#8220;all&#8221; Check Issue Status Issues anzeigen Issues erstellen Hilfreiche CLI Aliases Pull Requests verwalten List Pull Requests Check Pull [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":8346,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[28],"tags":[],"class_list":["post-8344","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-git_github"],"jetpack_featured_media_url":"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2021\/08\/beitragsbild-1.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/8344","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/comments?post=8344"}],"version-history":[{"count":14,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/8344\/revisions"}],"predecessor-version":[{"id":10156,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/8344\/revisions\/10156"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/media\/8346"}],"wp:attachment":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/media?parent=8344"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/categories?post=8344"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/tags?post=8344"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}