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

More than 1 year has passed since last update.

無知な新人がGitに入門したときの備忘録

Last updated at Posted at 2022-11-25

(※2020年に書いた記事です)

はじめに

この記事は、無知な新人(私)がGitを使うことになったときの記録です。
自分用の備忘録としてここにおいておきます。

参考にさせていただいた記事

0歩目:リポジトリ管理の流れ(GitHub Flow)をざっくり知る

変更の樹形図

commit は、ある状態と、それに対する変更(差分)を保存します。
commit の履歴は、最初の状態から commit の連なりとして、樹形図のような構造で保存されます。
この樹形図をたどることで、任意の状態まで遡ることができます。
樹形図の枝をbranchといいます。

ざっくり GitHub Flow

こんな感じでしょうか...

  1. リモートの master ブランチの状態をローカルに反映(cloneまたはpull = fetch + merge)
  2. ローカルの hoge ブランチで編集して変更を保存(commit)
  3. ローカルの hoge ブランチをリモートの hoge ブランチに反映(push)
  4. リモートの hoge ブランチを master に merge する許可を乞う(pull request)
  5. 許可が出ない → コメントや指摘をもらって2に戻る
  6. 許可が出た → リモートの hoge ブランチをリモートの master ブランチに merge する
  7. 1に戻る

大事なこと

  • リモートとローカルは常に同じブランチ構造を保つ
  • リモートのmasterブランチに直接pushしない(できない設定にする)
  • ローカルのいろんなブランチからpushしない
  • コミットの粒度はできるだけ小さく

1歩目:ローカルにリポジトリを作る

ここから、練習で一連の流れをやってみましょう。
練習用にローカルにディレクトリを作ります。

$ mkdir gittest
$ cd gittest

このディレクトリをGitリポジトリにします。

$ git init

管理するテキストファイル(sample.txtとする)を作ります。

$ echo "Hello Git" >> sample.txt

変更を登録します。(commit するものを選択)

$ git add sample.txt

git status で状態を確認できます。

$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
	new file:   sample.txt

コミットします。-mはコミットメッセージ( "my first commit"とする)を追加するオプションです。

$ git commit -m "my first commit"

ローカルのmasterブランチができているのを確認します。 *は現在のブランチを表しています。

$ git branch -a
* master

変更はすべて保存されました。

$ git status
On branch master
nothing to commit, working tree clean

2歩目:リモートにリポジトリを作る

準備

リモートのリポジトリを準備しておきます。今回はGitHubでリモートリポジトリを作りました。

  1. GitHub.comで、サインインまたはサインアップして、"Create Repository" から適当な名前をつけてリポジトリを作ります。
  2. リポジトリの "Setting" タブの "Deploy keys" にSSH接続のための公開鍵を追加します。公開鍵生成などの設定の仕方は「GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~」を参考にしました。

リモートのリポジトリを追加します。ちなみに、originはリモートリポジトリを指すラベルのようなものですが、origin でなくても好きな名前をつけて大丈夫です。

$ git remote add origin git@github.com:[ユーザー名]/[リポジトリ名].git

リモートのリポジトリが追加されているのを確認します。

$ git remote -v
origin	git@github.com:[ユーザー名]/[リポジトリ名].git (fetch)
origin	git@github.[ユーザー名]/[リポジトリ名].git (push)

3歩目:ローカルの変更をリモートに反映する

ローカルでブランチの生成と切り替え、コミットまではできるようになりました。


$ git push origin [push元(ローカル)のブランチ名] : [push先(リモート)のブランチ名(master以外)]
  • :以下を省略すると、push元と同じ名前のリモートのブランチにmergeされる。
  • 同じ名前のブランチがない場合は、自動で同じ名前のブランチが生成される。

4歩目:プルリクエスト

というわけで、「プルリクエスト」をやってみます。
3歩目でリモートのmaster以外のブランチに反映させた変更を、リモートの mastermergeする際にプルリクエストを作成します。プルリクエストが承認されれば、mergeできます。「create pull request」からプルリクエストの投稿を行います。変更がリモートのmasterに無事mergeされれば、一時的にできていたブランチを消すことができます(と言われます)。

注意事項

※ローカルでmergeはしない!!
ローカルの(masterでない)作業用ブランチからリモートにpushする。

※ローカルと違う名前でpushしない!!
同じ樹形図を保てない。

※リモートの設定によってはいきなりmasterにpushしようとするとはじくことができる。
「ブランチのアクセス権」を設定しておくことでmasterへのやらかしを防げる。
できればCI環境を整えたい。

おまけ(もっとわかりたいときのためのメモ)

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