0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者向け】Gitでコマンドを打つとフォルダの中で何が起きているのか確認してみた

0
Posted at

はじめに

Git、こういう状態で使っていませんでしたか?

  • add → commit → push は使えている
  • でも中で何が起きているかは分からない
  • ブランチ切り替えでファイルが変わる理由が分からない
  • Gitって結局どこで何してるの?

私はまさにこの状態でした。

今回、リポジトリ移行をきっかけに
**「フォルダの中で何が起きているか」**が理解できたのでまとめます。


結論

Gitはこの3つで考えると一気に分かります。

  • 作業フォルダ(自分が編集する場所)
  • .git(履歴を管理している本体)
  • GitHub(保存・共有先)
作業フォルダ
    ↓ commit
.git(履歴)
    ↓ push
GitHub

Gitはフォルダの中で動いている

まずは何もしていない状態です。

project/
 └ app.py
print("Hello")

この時点では、Gitはまだ何も管理していません。


git addgit commit の違い

ここが一番混乱していました。


git add

git add .

フォルダの見た目

project/
 ├ app.py
 └ .git

中で起きていること

  • 変更を「commit候補」に登録しているだけ
  • まだ履歴にはなっていない

git commit

git commit -m "初期作成"

フォルダの見た目

project/
 ├ app.py
 └ .git

見た目は変わりません。

中で起きていること

.git
 └ 「print("Hello") の状態」が保存される

👉 この瞬間、履歴が作られる


ファイルを変更するとどうなるか

print("Hello world")

この時点ではまだ commit していません。


状態

作業フォルダ
 └ print("Hello world")

.git
 └ print("Hello")

👉 ファイルと履歴がズレる


もう一度 commit すると

git add .
git commit -m "変更"
.git
 ├ print("Hello")
 └ print("Hello world")

👉 過去と現在が両方残る


ブランチ切り替えで何が起きるか

ここが一番「なるほど」となった部分です。


main の状態

print("main")

feature の状態

print("feature")

切り替え

git switch main
print("main")
git switch feature
print("feature")

何が起きているか

👉 .git の状態を切り替えて
👉 フォルダの中身を書き換えている


つまり

👉 フォルダの中身が変わるのは正常な動き


commitしないで切り替えると?

print("途中変更")
git switch main

👉 変更が消える可能性あり


push すると何が起きるか

git push

push前

ローカル
 ├ 作業フォルダ
 └ .git(履歴あり)

GitHub
 └ 何もない or 古い

push後

GitHub
 └ .gitの内容が反映される

👉 履歴がGitHubにコピーされる


originとは何か

git remote -v
origin https://github.com/user/repo.git

👉 GitHubの場所の名前


originを変えるとどうなるか

git remote set-url origin 新URL

中で起きていること

変更前
.git → old GitHub

変更後
.git → new GitHub

👉 送信先が変わるだけ


リポジトリ移行の本質

git remote set-url origin 新URL
git push -u origin main

フォルダの中では

ローカル(履歴あり)
        ↓
送信先変更
        ↓
新GitHubへpush

👉 履歴ごと移行される


空フォルダが出ない理由

empty/

👉 GitHubに表示されない


解決

empty/
 └ .gitkeep

👉 ファイルがあれば管理される


まとめ

  • Gitはフォルダ+.gitで動く
  • .git が履歴の本体
  • commitで履歴保存
  • pushでGitHubへ反映
  • ブランチは状態の切り替え
  • origin変更でリポジトリ移行できる

最後に

Gitはコマンドを覚えるよりも、

👉 フォルダの中で何が起きているかを理解すること

これが一番重要だと感じました。

同じように「なんとなく使っている」状態の方の助けになれば嬉しいです。

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?