Git
入門
SourceTree

git操作チュートリアル

この記事はなにか

gitをとりあえず使えるようになるチュートリアルを目指してます。書き途中。
SES系IT戦士ということもあり、各所でGitの操作を教えるの資料起こすの面倒になったのでQiitaに。
基本的にはsouceTreeを使うことを想定しています。できたらコマンドも併記していきたい気持ち。

準備

gitで開発を行うための準備の手順

  1. git設定変更
    必要であれば。
    git config --global autocrlf false

  2. clone
    ローカルにリモートのdevelopをclone。
    タブの+ボタン → メニューの[Clone]

    git clone -b develop https://リポジトリのアドレス

  3. ブランチの確認
    今のブランチがdevelopであることを確認。
    左側のブランチ一覧の中の"develop"の左に○が付いていて太字になっていることを確認。

    git branch -vv

  4. ブランチの作成
    developから個人用のdevelopブランチdevelop-xxxを作成。(xxxは自分の名前)※developを壊さないための仮のdevelop
    メニューの[ブランチ] → 新規ブランチに「develop-xxx」を入力 → [ブランチを作成]

    git branch develop-xxx

  5. checkout
    個人用のdevelopブランチに切り替え。
    左側のブランチ一覧の中のブランチ名ダブルクリックで切り替え。(作成の時点でチェックアウトにチェックが入ってればすでに切り替わっている)

    git checkout

ソースの新規作成

新しいソースをgitに加えるための手順

  1. ブランチの作成
    developブランチから「feature-001」を作成する。

  2. checkout
    feature-001に切り替え。

  3. ファイルを新規作成

    ku_source.sh
    #/bin/bash
    bs=("bbb" "bbbb" "bb" "bb" "bbbbb")
    echo "bbb is 3 char";
    echo "bbbb is 4 char";
    echo "bb is 2 char";
    echo "bb is 2 char";
    echo "bbbbb is 5 char";
    
  4. track対象に追加
    作成したファイルをコミットの対象にする。
    下部のタブの[ファイルステータス] → 対象ファイルを選択 → 中央あたりの[選択をインデックスに追加]

    git add ku_source.sh

  5. commit
    コミットコメントを記載してコミットを行う。これでローカルのgitにソースが入る。
    下部のテキストエリアにメッセージを追加する。(ルールがある場合にはそれに従う。) → [コミット]

  6. push
    ローカルのブランチをリモートにpush。
    メニューの[プッシュ] → pushしたいブランチにチェックを付ける → [プッシュ]

  7. PR/MR作成
    GitHub/GitLabでの操作。
    マージしてほしいブランチのリクエストを作成する。(コメントやアサインにルールがある場合にはそれに従う。)
    リクエストを作った際には他人のコミットが含まれていないことや、自分の修正していない差分がないことをブラウザで確認してからレビュー依頼を行うこと。

ソースの修正

すでにあるソースを修正するための手順

  1. ブランチの作成
    developブランチから「feature-002」を作成する。

  2. checkout
    featureブランチに切り替え。
    左側のブランチ一覧の中のブランチ名ダブルクリックで切り替え。(作成の時点でチェックアウトにチェックが入ってればすでに切り替わっている)

  3. ソースの修正を行う。
    ku_source.shをforを使うように直す。

    ku_source.sh
    #/bin/bash
    bs=("bbb" "bbbb" "bb" "bb" "bbbbb")
    for a in ${bs[@]};
    do
    echo "$a is `echo -n $a | wc -c` char";
    done
    
  4. commit・push・PR/MR作成
    上と同様

バックマージ

最新のソースに修正を加えるための手順

  1. checkout
    feature-001に切り替え。

  2. 作業用ブランチにdevelop-xxxをマージ
    左側のブランチ一覧の中の「develop-xxx」を右クリック → [現在のブランチにdevelop-xxxをマージ]
    その後、feature-002で行ったku_source.shに対する修正が適用されていることを確認。

コンフリクト解消

他のメンバーの修正と衝突した際の解決の手順

  1. ブランチの作成
    今回は一人二役となるので開発用にfeatureブランチを2つ作成する
    メニューの[ブランチ] → 新規ブランチに「feature-003」を入力 → [ブランチを作成]
    メニューの[ブランチ] → 新規ブランチに「feature-004」を入力 → [ブランチを作成]

  2. checkout
    feature-003に切り替え。

  3. ソースの修正を行う。
    ku_source.shの変数「bs」の修正する。

    ku_source.sh
    #/bin/bash
    array=("bbb" "bbbb" "bb" "bb" "bbbbb")
    for a in ${array[@]};
    do
    echo "$a is `echo -n $a | wc -c` char";
    done
    
  4. commit・push・PR/MR作成
    上と同様

  5. checkout
    feature-004に切り替え。

  6. ソースの修正を行う。
    ku_source.shの変数「a」の修正する。

    ku_source.sh
    #/bin/bash
    bs=("bbb" "bbbb" "bb" "bb" "bbbbb")
    for value in ${bs[@]};
    do
    echo "$value is `echo -n $value | wc -c` char";
    done
    
  7. commit・push・PR/MR作成
    上と同様

  8. コンフリクト発生
    PR/MRでコンフリクト発生の文言が表示される

  9. バックマージ

  10. コンフリクト修正

  11. 修正済みとしてマーク

  12. commit・push

ファイル名/ディレクトリ名の変更

ソース修正と移動を一緒にやってはいけないらしい(?)
git mv aaa.txt bbb.txt
git log --oneline --follow bbb.txt

誤ってcommitした

git reset --hard ハッシュ値
git push -f

commit履歴をまとめたい

git commit --amend

参考

https://git-scm.com/book/ja/v2
https://github.com/Shinpeim/introduction-to-git