原因

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.nameuser.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 }}