0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHubを使っちゃいけないとき、Git管理どうする?

Last updated at Posted at 2026-01-11

プログラミングに触れる人はかなり増えたと思う。
自分もその一人。

コードを書いて、試して、壊して、直して、また試す。
ツールや環境の進化もあり開発や学習のスピードは、確実に加速していると感じる。

一方で、会社の開発環境や運用ルールは、必ずしもこのスピード感を前提に整備されていない
という側面もある。

たとえば、社外SaaSの利用が制限されていて GitHub が使えないケース。
これは情報セキュリティの観点では、ごく普通に起こりうる制約だと思う。

それでも、開発する側の欲求は変わらない。

  • 履歴を残したい
  • 何をしたか確認したい
  • やらかしたら戻したい

「じゃあ、GitHubが使えないときに Git 管理ってどうする?」

GitHub前提で覚えてきた Git の使い方を、一度分解して考え直すことになった。

結論から言うと、
GitHubが使えなくても、Git管理はできる。
Gitはそもそも、ローカルで完結できるツール。


Gitでやりたかったことはこの3つ

GitHubが使えない環境でも、やりたかったことはシンプルだった。

  1. 履歴を保存したい
  2. 履歴を確認したい
  3. 前のバージョンに戻したい

この3つができていれば、
Git管理としては十分成立する


① 履歴を保存したいとき(変更を残したい)

ここでいう「保存」は、
ファイルの上書き保存ではなく 作業の節目を履歴として残す という意味。

自分が実際にやっているのは、この流れ。

git status
git add .
git commit -m "message"

実際に使ってみて感じたポイントは、

  • commitは細かくていい
  • 途中経過でも問題ない
  • ローカル管理なので、誰にも迷惑がかからない

GitHub前提で覚えていると
「最初から綺麗なcommitを作らなきゃ」と思いがちだけど、
ローカル運用では あとで整えればいい と割り切れるのが楽だった。


② 履歴を確認したいとき(何をしたか知りたい)

まずはこれ。

git log --oneline

これで、

  • いつ
  • どんな変更を
  • どんな単位で

やったかが一目で分かる。

作業中の差分確認には、

git diff

を使えば、「何が変わったか分からない」状態がかなり減る。


③ 前のバージョンに戻したいとき(やらかした時)

ローカルGit運用の一番の安心材料は、
自分しか触っていない範囲なら、比較的安全に巻き戻せること

直前のcommitをなかったことにしたい(変更は残す)

git reset --soft HEAD~1

commitだけ消えて、変更内容は残るので、やり直しやすい。


commitも変更内容も全部戻したい(注意)

git reset --hard HEAD~1

※ これは commitだけでなく作業中の変更も消える
※ ローカル運用前提でのみ使う操作。

自分は実行前に、必ず git status を見て
「本当に消していいか」を確認するようにしている。


過去の状態を一時的に見たいだけ

git checkout <commit-id>

これは「過去を見に行く」用途で使っている。
この操作をすると、いわゆる detached HEAD 状態になるらしいが、
見るだけであれば特に問題は感じなかった。

確認が終わったら、

git checkout main

で元に戻す。


迷子になったときの保険

git reflog

これは
「HEADがどこを辿ってきたか」を確認できるコマンド。
rebase や reset で不安になったときに、
「戻れる場所がある」と分かるだけで安心感がある。


補足①:コミットIDは「先頭の数桁」で指定できる

コミットIDは本来かなり長い文字列で、
一般的には40桁のSHA-1が多いらしい。

ただ、実際に使うときは、

git log --oneline

に表示されている 短いID をそのまま指定できた。

git checkout c1369a5
git reset --soft c1369a5

自分の環境では、これで問題なかった。


補足②:IDは何桁以上必要?

自分の環境では、
6桁くらいのIDで fatal エラーが出たことがあった。

調べた範囲では、

  • コミットIDの省略は
    「そのリポジトリ内で一意に特定できればOK」
  • 固定の桁数ルールはない
  • 被った場合にエラーになる

という挙動らしい。

実務的には、

まず短いIDを使う
エラーが出たら、先頭を1〜2文字足す

で困ることはなかった。


補足③:未pushの履歴をまとめたい(squash)

試行錯誤を重ねていると、
commit の数が増えてしまう場面がある。

ローカル運用では、

  • 作業ログは細かく残したい
  • でも、あとから見たときに分かりやすい単位にまとめたい

という気持ちになることが多かった。

そんなときに使ったのが squash。

git rebase -i HEAD~2

ここからは「ターミナルでテキスト編集」

このコマンドを実行すると、
ターミナル上でテキストエディタが開く

追加のコマンドを打つわけではなく、
表示された内容を書き換える操作になる。

例:

pick AAAAAAA first
pick BBBBBBB second

これを、

pick AAAAAAA first
squash BBBBBBB second

に書き換える。

保存して閉じると、
次にコミットメッセージを1本にまとめる画面が出る。


エディタが出てきたとき(自分が一番詰まった)

自分の環境では、このとき
vim というエディタが起動していたようだった

vim を使ったことがなかったため、

  • どこに入力していいか分からない
  • そもそも閉じ方が分からない

という状態になって、かなり戸惑った。

結果的に、最低限これだけ分かれば抜けられると分かった。

  • Esc:編集モードを抜ける
  • :wq → Enter:保存して終了

注意点(ローカル運用前提)

  • reset --hard は「ローカルで試して戻したいとき」に使う
    (commit だけでなく作業中の変更も消えるので、実行前に git status を確認する)
  • rebase / squash は「自分の作業ログを整理するための操作」と割り切る
    (履歴をきれいに“見せる”ためではなく、自分が分かりやすくするため)
  • checkoutで過去を見るのは「状態確認のための一時的な操作」に留める

まとめ

試行錯誤が増えても、制約の中で開発を回す方法はある。

GitHubが使えなくても、

  • 履歴を保存する
  • 履歴を確認する
  • 戻せるようにする

この3つをローカルGitで押さえておくだけで、
「とりあえず詰まらない」状態にはできた。

squashも、
「ターミナルでテキストを書き換える操作」と分かれば、
意外と難しいものではなかった。

GitHubが使えないローカル環境でも、git があればちゃんと回せる。
gitって本当にすごい。


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?