Edited at

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. ソースを実行してみる。以後ソースを修正したら1度は実行してからcommitする。

    ./ku_source.sh




  1. track対象に追加

    作成したファイルをコミットの対象にする。

    下部のタブの[ファイルステータス] → 対象ファイルを選択 → 中央あたりの[選択をインデックスに追加]

    git add ku_source.sh



  2. commit

    コミットコメントを記載してコミットを行う。これでローカルのgitにソースが入る。

    下部のテキストエリアにメッセージを追加する。(ルールがある場合にはそれに従う。) → [コミット]


  3. push

    ローカルのブランチをリモートにpush。

    メニューの[プッシュ] → pushしたいブランチにチェックを付ける → [プッシュ]


  4. 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 ハッシュ値


commit履歴をまとめたい

git commit --amend


参考

https://git-scm.com/book/ja/v2

https://github.com/Shinpeim/introduction-to-git