原因
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 }}