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?

More than 3 years have passed since last update.

githubを使って最低限のgit操作をやってみよう

Last updated at Posted at 2021-05-31

社内勉強会のためのgit入門

初心者向けにgitの説明をします。

目的

  • gitの基本コマンド、clone, status, add, commit, pushを使ってみる
  • githubでのfork, pull request, mergeをやってみる
  • チーム開発をするのに必要なgit操作を最低限理解する

前提

事前作業によりgithubにアカウントを作り、公開鍵を登録して鍵を使ってgitコマンドを受け付けられるようにしておきます。

作業内容

fork

次のイメージのForkボタンより自分のリポジトリにリポジトリのコピーを作ります。

image.png

自分のアカウントにリポジトリのコピーができます。

image.png

clone

自分のリポジトリをcloneして編集してみましょう。

$ git clone https://github.com/<your_account>/flask_sv.git

status

編集されたファイルは次のコマンドで確認できます。

$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

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

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	Account.md

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

まだgitリポジトリで管理されていないファイルはUntracked files:に表示されます。

ステージ登録

編集したら次のように編集ファイルをステージに登録します。

$ git add <ファイル名>

登録した次のコマンドで登録内容が確認できます。
Changes to be committed: に表示されたファイルはstageに登録された状態となる。

$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	modified:   Readme.md

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	dummy

リポジトリ本登録(コミット)

stageに登録されるの意味は、リポジトリに登録する前の仮登録となります。編集したファイルを複数登録して、まとめて本登録することができます。
本登録する操作はコミットといい、次の操作で行います。

$ git commit

コマンドを入力するとエディタが開きコミットの内容を入力できます。あとで他の人が何の改修をしたのか解るようにコメントを残しましょう。それは修正内容だけでなく修正の理由なども記載します。また、不具合修正などで片付けずどのような不具合をどう修正したのかも書きましょう。

コミットを行うとローカル(作業PC)上のリポジトリには正式登録されますがグループで使っているリモートリポジトリには登録されていません。リモートに登録するのはpushという作業をします。

$ git push

初回または、作成したブランチを初めてリモートに登録する時は次のように入力します。

$ git push -u origin <branch>

ブランチとマージ

ブランチは何かの作業単位として作ります。例えばWebアプリの検索ボタン追加といった改修の単位で作成すると良いです。
マージは異なるブランチを統合することです。gitは優秀でマージの際に機械で判定できるところは自動的にマージすることができます。
また、githubなどのリポジトリ管理Webアプリを使うとマージを画面上で差分として確認でき、変更に対しコメントを入れることができます。変更者以外もマージを行うことができるのでレビューとして使うことができます。

githubでのpull requestの送り方

forkして作った自分のリポジトリにpushします。

user:flask_sv/ (main✗) $ git push                                                                                                                         [0:06:08]
Username for 'https://github.com': <your_account>
Password for 'https://<your_account>@github.com': 
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 4 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 985 bytes | 985.00 KiB/s, done.
Total 6 (delta 4), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (4/4), completed with 3 local objects.
To https://github.com/creist-Kaoru-Sato/flask_sv.git
   e6591cd..aad74e3  main -> main
user:flask_sv/ (main✗) $ 

pushしたブランチをマージ先としてリポジトリの所有者のリポジトリとブランチを選び[Create pull request]ボタンを押下します。

image.png

プルリクエストの題名とコメントを入力して[Create pull request]ボタンを押下します。
プルリクエストが作成されました。

image.png

githubでのpull requestのマージ方法

リポジトリの所有者側の画面より[Pull requests]リンクを押下しプルリクエストの確認画面に遷移します。

image.png

画面下の[Merge pull request]

image.png

[Confirm merge]を押下することでマージされます。

image.png

image.png

元のリポジトリの変更の取り込み

元のリポジトリで変更があった場合、forkしている場合、次のように表示される。

This branch is ? commit behind <リポジトリオーナー>:main

右側のFetch upstreamをクリックするとダイアログが開くので[Fetch and merge]を押下すれば変更が自分のリポジトリに反映される。

image.png

This branch is even with <リポジトリオーナー>:main

と表示されると元のリポジトリと同期が取れている状態となる。

image.png

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?