原因
Gitコマンドでnot a git repository (or any of the parent directories)が表示される場合、カレントディレクトリがGitリポジトリではないことが原因。
カレントディレクトリか上位のディレクトリに.gitディレクトリがない場合に発生する。
対処
現在のディレクトリを間違えている場合 → Gitリポジトリに移動する
単純にディレクトリを間違えている場合が多い。
現在のディレクトリを確認して、意図しない場所にいる場合は
cdコマンドでリポジトリのディレクトリに移動すればよい。
$ pwd
/home/user
# ↑もし意図しない場所であれば cd コマンドで作業する
$ cd <Gitリポジトリのディレクトリ>
$ git status
# ↑Gitリポジトリであれば正常に実行できる
新規に始める場合 → Gitリポジトリを作成(init)する
作業中のディレクトリがまだGitリポジトリになっていない場合はinitコマンドでリポジトリを作成する。cdコマンドで作業中のディレクトリに移動し、initコマンドを実行する。
$ git init
もしuser.nameやuser.emailが設定されていない場合はあらかじめ設定しておく。
$ git config --global user.name "xxxx"
$ git config --global user.email "xxxxxx@gmail.com"
既存のリモートのリポジトリの場合 → Gitリポジトリをcloneする
GitHubやGitLabなどリモートリポジトリからcloneしていないだけであればcloneする。
$ git clone <URL>
GitHub Actionsでghコマンドを使用したときにnot a git repository
以下のようなWorkflowを実行するとエラーになる。
name: Release
on:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Create release
run: gh release create ${{ github.ref_name }} --generate-notes
env:
GITHUB_TOKEN: ${{ github.token }}
エラーの内容は以下の通り。
failed to run git: fatal: not a git repository (or any of the parent directories): .git
原因
上記ワークフローの場合もリポジトリをcloneしていないため、リポジトリが見つからずにエラーとなる。ghコマンドもカレントディレクトリがGitリポジトリでないと実行できない。
対処法は以下の通り。
対処法①: Gitリポジトリをチェックアウトする
actions/checkoutアクションを使ってGitリポジトリをチェックアウトする。
name: Release
on:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+"
jobs:
build:
runs-on: ubuntu-latest
steps:
# 以下を追加
- uses: actions/checkout@v4
- name: Create release
run: gh release create ${{ github.ref_name }} --generate-notes
env:
GITHUB_TOKEN: ${{ github.token }}
対処法②: –repoオプションを使ってリポジトリを指定する
ghコマンドの--repoオプションを使ってリポジトリを指定するとリポジトリがなくても実行できる。
name: Release
on:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Create release
# 以下を修正(--repoオプションの追加)
run: gh release create ${{ github.ref_name }} --generate-notes --repo ${{ github.repository }}
env:
GITHUB_TOKEN: ${{ github.token }}
