LoginSignup
1
0

Git 入門

Last updated at Posted at 2019-09-23

Git 入門

1. 基本

以下のサイトで基本的な使用方法を学んでください。
※ 入門編・発展編・プルリクエスト編を学修してください。
サルでもわかるGit入門

2. 練習問題

問題1

  1. GitHub に新規リポジトリを作成してください。名前を git-training とします。

  2. a_workb_work というディレクトリを任意の場所に作成する。(Aさん・Bさんの2名が同じリポジトリで作業すると仮定)

  3. a_work 配下に git-training というディレクトリを作成する。

  4. git-training に移動。 git コマンドを使用し リポジトリを新規作成 する。
    ※ 以降、a_work/git-training 配下で作業する

  5. ファイル README.md を追加し、コミットする。

  6. GitHub のリモートリポジトリをローカルに追加する。※ ヒント: git remote add origin

  7. ローカルの master ブランチをリモートブランチに反映し、合わせて上流ブランチに指定する。※ ヒント: git push -u

  8. developブランチを作成 する。以降 develop ブランチで作業する。

  9. test.txt ファイルを追加。内容は1行 aaabbbaaa を追加する。

  10. text.txt を コミットする。

  11. 直前のコミットのコードやコメント修正する。text.txtcccbbbccc に変更する。

  12. develop をリモートリポジトリに反映する。

  13. b_work/git-training 配下で リモートリポジトリ を ローカルに取得する。※ 以降 b_work/git-training で作業する。

  14. develop ブランチに切り替える

  15. develop ブランチを元に 新規ブランチ task/new_function を作成する。

  16. test.txtaaacccaaaに変更しコミットする。

  17. task/new_function をリモートリポジトリに反映する。

  18. test.txt に任意の1行を追加し、コミットしプッシュする。

  19. もう一度、test.txt に任意の1行を追加し、コミットしプッシュする。

  20. 複数のコミットを一つにまとめたい。今追加した2つのコミットを1つにまとめてリモートリポジトリに反映する。ヒント)rebase

    • ここで、rebase する際に reword, fixup, squashなど、それぞれの使い方を学ぶ
    • オススメとしては、fixupでコミットを結合しつつ最上部で reword によりコミットメッセージを変更する手法
  21. リモートリポジトリに反映する。ただし、ローカルとリモートでコミットの差分ができていているため強制的に反映する。
    補足)本来、複数人で作業するブランチの場合、強制的に反映してはいけないが練習なので行う。

  22. a_work/git-trainingに移動し test.txt を修正(aaagggaaa)して develop をリモートリポジトリへ反映する。

  23. b_work/git-training に移動し、develop ブランチに切り替える。※ 以降 b_work/git-training で作業

  24. リモートの状態をローカルへ反映(fetch)しリモートの履歴を取得(pull)する。

  25. develop ブランチに task/new_function をマージする。ただし、マージコミット が必ずできるように merge にオプションをつける。

  26. コンフリクトが発生。差分を解決して リモートに反映する。(今回差分については developの内容(HEAD)が不要という扱いで削除する)

問題2

  1. a_work/git-training に移動し、develop から task/new_branch1 というブランチを作成する。

  2. test2.txt というファイルを追加し、コミット・プッシュする。

  3. b_work/git-training に移動し、fetch する。※以降 b_work/git-training で作業する

  4. develop から task/new_branch2 というブランチを作成する。

  5. 先程 a_work/git-training で追加したコミットを、 b_work/git-training に取り込み、コミットする。※ ヒント: cherry-pick -n

  6. 今コミットした内容をステージに戻す。※ ヒント: reset --soft

  7. ステージ上の変更内容を、一時保存する。※ ヒント: stash

  8. 一時保存した変更内容をステージに戻す。 さらにコミットする。

  9. 今コミットした内容は不要なので削除する。※ ヒント: reset --hard

  10. 間違ってコミットを削除してしまったので元に戻す。※ ヒント: reflog

  11. 最後に develop へマージして。タグ をつける。タグの名称は 2019xxxx の形式で本日の日付とする。

問題3

問題1、問題2を SourceTree のみで行う。

3. Tips

コマンド 説明
git fetch --prune リモートで削除されたブランチがローカルの origin に残っているとき、ローカルからゴミブランチを消す
git reset --hard origin/branch_name 差分の問題で pullできなとき、強制的にリモートをローカルへ反映する
git rm --cached [削除したいファイル] ファイルを残してgitの監視対象から外す
git bisect どのコミットで問題を混入させてしまったのかを特定する
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