LoginSignup
0
0

More than 1 year has passed since last update.

【備忘録】Githubへプッシュするまでに使用するコマンドまとめ

Last updated at Posted at 2021-07-25

はじめに

gitのコマンドについて、自分の理解度を確認する意味も含めて、まとめたいと思います。
git初心者のため、内容に誤りや補足事項等ございましたら、お気軽にご指摘お願いします。

リポジトリ作成からコミットするまで

1. リポジトリを初期化する

リポジトリ(repository)とは、ソースコードや変更履歴、コメントなどを一括して保管する場所のこと。
リポジトリには、自分のPC上に作る「ローカルリポジトリ」と、GithubなどのWebサービス上に作る「リモートリポジトリ」がある。
まず、ローカルリポジトリを初期化(initialize)する。
必ずとも実行が必須ではないが、実行する癖をつけておくと良い。

$git init

2. プロジェクトのファイルをステージングエリアに追加する。

ファイルに何かしらの変更を加えたら、まずはそのファイルをステージングエリアへ追加する。
ステージングエリアとは、リポジトリにコミットするファイルを、一時的に置いておくためのエリアのこと。
基本的に、git addするときは常に-Aオプションをつけるようにする。
-A : untracked状態のファイルをすべてステージングエリアに追加するオプション

ただし、.gitignoreに記載されているパターンにファイル名がマッチする場合、
そのファイルは追加されない。

$git add -A

3. ステージングエリアのファイルをローカルリポジトリに反映させる(コミットする)

変更したファイルを一旦ステージングエリアに追加後、自身のローカルリポジトリに変更を反映させる。
-mフラグを使うと、コミットメッセージをコマンドラインで直接指定できる。

$git commit -m "コメント”

4. リモートレポジトリ(github)に変更を反映させる

自身のローカルリポジトリの変更を、リモートリポジトリへ反映させる。

最初のコマンドは、GithubをリポジトリのoriginとしてGitの設定ファイルに追加するためのもの。
実行する前に、予めGithubでリポジトリを作成しておく必要があり、
リポジトリを作成した後、最初の1回のみ、このコマンドを実行する必要がある。

次のコマンドで、ローカルのリポジトリをリモートのoriginにプッシュしている。
2回目以降は、git pushでコミットできる。

git remote add origin https://github.com/<Githubのアカウント名>/<リポジトリ名>.git
git push -u origin master

以上がローカルリポジトリを作成してから、リモートリポジトリにプッシュするまでの一連の流れとなる。
2回目以降は、git add -Aから始めればよい。

branchを作成してからプッシュするまで

1. branch(ブランチ)を作成する

branchとは、元のリポジトリのコピーを作成し、元のファイルを変更せず、プログラムの編集や追加を行うことができる機能のこと。
ここでは、ローカルリポジトリのmasterブランチからtestブランチを作成し、
リモートリポジトリにプッシュするまでをやってみる。

方法1では、最初のコマンドで指定の名前のブランチを作成する。その後、指定したブランチに移動する。
方法2では、git checkout -b ブランチ名を用いることで、新しくブランチを作成し、そのブランチへ移動することを同時に行う。

方法1
$git branch test
$git checkout test
方法2
$git checkout -b test

2. 全てのローカルブランチを一覧表示する

現在のローカルリポジトリの全てのブランチを表示させる。
*がついているブランチが、現在使用中のブランチであることを表します。

$git branch
* test
  master

ブランチが切り替わっていることを確認したので、作業を実施する。
今回は、testブランチでREADME.mdを変更してみました。

3. ブランチの状態を確認する

変更が加えられたファイルを表示する。

$git status
On branch test
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")

4. 変更点を確認する

編集した箇所と直前にコミットした内容の差分を表示する。

$git diff
diff --git a/README.md b/README.md
index 7f6ced6..c20cc1c 100644
--- a/README.md
+++ b/README.md
~途中省略~
(END)

5. 変更点をローカルリポジトリにコミットする

変更に問題なければ、コミットする。
その際、git add -Agit commit -m "コメント"でコミットしても良いが、
git commitには、現存する全てのファイルの変更点を一括でコミットする-aオプションがある。
今回はこれを使って、コミットしてみる。
ただし、最後にコミットした後に新しくファイルを追加した場合は、
git addでバージョン管理下に置く必要がある。

$git commit -a -m "Improve the README file"

6. リモートリポジトリにプッシュする

コミットした内容を、Githubへプッシュする。
共同開発の場合、masterを不用意に変更しない方がいいため、
リモートリポジトリのtestブランチへプッシュします。

$git push origin test

以上がローカルリポジトリでブランチを作成し、リモートリポジトリにプッシュするまで一連の流れになる。

リモートリポジトリのmasterへプッシュするまで

1. リモートリポジトとローカルリポジトリを同期する

共同開発している場合、リモートリポジトリが共通で使われるため、
自分が作業中に他の人がリモートリポジトリのmasterブランチを更新している可能性がある。
そのため、リモートリポジトリのmasterブランチとローカルリポジトリのmasterブランチを同期し、
ローカルリポジトリのmasterを最新の状態にしておく必要がある。

方法1では、git fetchでリモートリポジトリのmasterブランチの最新状態を取得して、
git mergeで取得した状態をローカルリポジトリのmasterブランチに反映させる。
なお、方法2のgit pullは、git fetchgit mergeを同時に行ってくれるが、
予期せぬ動作をする可能性もあるため、初心者は分けて行うのが良いかも。

$git checkout master
方法1
$git fetch origin master
$git merge origin/master
方法2
$git pull origin master

(追記)ここでgit mergeでローカルリポジトリのmasterを更新した場合、commitする。
commitし忘れると、エラーが発生してmergeに失敗する。

E325: ATTENTION
Found a swap file by the name ...

2. ブランチで変更した内容を、masterに反映させる

ブランチで変更した内容をmasterブランチにmergeする。

$git merge test

3. ブランチを削除する

mergeした後、ブランチが不要になった場合には、ブランチを削除する。削除が必須ではない。
また、ブランチの変更を保存せず、ブランチごと削除するには、git branch -D ブランチ名を用いる。

$git branch -d test

4. リモートリポジトリへプッシュする

ローカルリポジトリのmasterブランチの内容をリモートブランチにプッシュする。

$git push

以上、リモートリポジトリのmasterへプッシュするまでの一連の流れになります。

参考

Ruby on Rails チュートリアル
https://qiita.com/yukibe/items/9ef9d54f2e7d53cfb51c
https://git-scm.com/book/ja/v2

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