4
2

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で最低限必要な開発フローをまとめてみた

Last updated at Posted at 2021-06-25

#概要

実務開始前にGitの基本的なフロー/コマンドを復習し、備忘録として書き残す。

###前置き
記載する用語によって混乱してしまうのを防ぐため、本記事では

追跡ブランチ = ローカルリポジトリで作成/保持し、リモートリポジトリとデータのやりとりを行う際に仲介役として使用するブランチ
上流ブランチ = 追跡ブランチと紐づいているリモートリポジトリ側のブランチ
メインブランチ = ローカルリポジトリで一番メインとなるブランチ(デフォルトだとmain)
作業ブランチ = メインブランチから分岐する各作業用のブランチ

として記載する

##開発作業の事前準備

Githubのリモートリポジトリからファイルを取得する

git clone https://github.com/アカウント名/リポジトリ名.git

プロジェクトでforkを使用する場合、githubブラウザ上でforkに必要な作業を行ってからcloneする(割愛)

git clone = リモートリポジトリをローカルリポジトリに複製すること

git fork = 他人のリポジトリを自分のアカウントのリモートリポジトリにコピーすること

つまり、forkは誰かのリポジトリに対して、何らかの追加機能の実装やバグ改修を行いたい場合使用するもの

####プロジェクト全体のリポジトリを確認

git branch -a        <-- -a オプションでローカル/リモートリポジトリ全て表示させ、プロジェクト全体の構成を確認 -->

####作業ブランチを切る

git checkout -b 作業ブランチ名

その後開発作業を開始する

##作業内容をリモートリポジトリにmergeするまで

ファイルの差分を確認する

git diff HEAD <-- 最新のコミット地点との差分を表示 -->

差分をステージ(インデックス)に追加する

git add ファイル名         <!-- 指定したファイルのみ追加 -->

or

git add .               <!-- ワーキングツリーのファイル全て(カレントディレクトリ配下のファイルのみ) -->

or

git add -u              <!-- ワーキングツリーのファイル全て(新規作成ファイルは無視) -->

or

git add -A              <!-- ワーキングツリーのファイル全て -->

ステージングされているファイルの差分を確認(commit前の2重チェック)

git diff --cached

差分をcommit

git commit -m "コメント"

コミットが正しく出来ているかログで確認

git log

or

git log --oneline (推奨)   <-- コミットを1行に縮小して表示 -->

####commit後に作業内容の間違いが見つかった場合
commit内容を訂正(push済みの場合は厳禁!)
push済みの場合はgit revertを使用

ログでコミットを確認し、どこまで修正するかを確認する
必要に応じ、戻したい地点のコミットID(or タグ名等)を控える

####git reset

git reset オプション名 HEAD^     <-- 直前のコミットまで戻す -->

or

git log  <--  --onelineオプションではコミットIDが一部省略されてしまうためここでは使用しない -->
git reset オプション名 戻したい地点のコミットID(タグ名)

オプション
--soft : commitのみ削除
--mixed : commitとaddした内容を削除
--hard : commit,addに加え作業内容も削除する(指定したコミットの状態に戻す)

最後にリモートリポジトリへpush

git push リモートリポジトリ名 HEAD              <-- 最新のコミットをpush -->

or

git push リモートリポジトリ名 pushするローカルブランチ名    <-- リポジトリ、ブランチ名を明示してpush -->

その後Githubブラウザ上でPullRequestを作成し、確認者のOKが出たら変更内容をローカルのメインブランチへ取り込む(デフォルトの場合mainブランチ)

git checkout メインブランチ名 
git merge 取り込みたい作業ブランチ名

補足: 任意のブランチに『 git push 』出来る設定をかける方法
リモートリポジトリに追跡ブランチがあるか確認

git branch -vv
--------------
feature/first-task  [追跡ブランチ名] ec41dd3 変更完了 <-- ない場合[...]の部分は表示されない -->
--------------
git push --set-upstream リモートリポジトリ名 作業ブランチ名 <-- ローカルブランチ名をもとに、リモートリポジトリに同名のブランチを作成しデフォルトの上流ブランチとして設定する -->

以後『 git push 』でpush出来る

git revert

git revert  戻したい地点のコミットID(タグ名)

コミットIDの地点まで戻しコミットし直す処理が走る。
新しく作るコミットのコミットメッセージを入力したら、必要な修正作業を行う
完了後、リモートリポジトリへpushする

##リモートの最新情報を取り込む

追跡ブランチへ、リモートリポジトリの内容を取り込む

ローカルのメインディレクトリ
git fetch リモートリポジトリ名 取得する上流ブランチ名

or

git fetch -p リモートリポジトリ名 取得する上流ブランチ名 (推奨)     <-- ローカルリポジトリ と fetchしたリモートリポジトリの情報を比較し、ローカルリポジトリにしかないブランチを削除 -->

git merge リモートリポジトリ名 取り込む追跡ブランチ名

その後作業ブランチを切って作業開始

以上、基本的な開発フローをまとめた記事でした。
実務に入ったら実務ベースで再度書き直していきたいと思います。

4
2
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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?