以前書いたメモだと分からなかったので、使う流れに合わせて書いてみました
すでにブランチがある場合
まず、clone する
$ git clone https://ikuboh@dev.azure.com/ikuboh/Rework/_git/Rework
Cloning into 'Rework'...
remote: Azure Repos
remote: Found 3 objects to send. (27 ms)
Unpacking objects: 100% (3/3), 751 bytes | 8.00 KiB/s, done.
ファイルが一式クローンされている。ディレクトリ内に移動する。
$ ls
Rework/
$ cd Rework/
ブランチの確認。まずローカル。続いて全部。
$ git branch
* main
$ git branch -a
* main
remotes/origin/HEAD -> origin/main
remotes/origin/main
remotes/origin/test001
目的のブランチ(test001) に移動する。
$ git checkout test001
branch 'test001' set up to track 'origin/test001'.
Switched to a new branch 'test001'
ディレクトリを作成したり、いくつかファイルを置く。
$ mkdir demo
$ touch demo/main_csv.py
追加したファイルを STAGE に上げる
$ git add .
状態を確認する
$ git status
On branch test001
Your branch is up to date with 'origin/test001'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: demo/main_csv.py
new file: demo/main_excel.py
new file: demo/main_v01.py
new file: demo/requirements.txt
コミットする。-m はメッセージなので、本来はきちんと書くべき
$ git commit -m test
[test001 8107c7b] test
4 files changed, 317 insertions(+)
create mode 100644 demo/main_csv.py
create mode 100644 demo/main_excel.py
create mode 100644 demo/main_v01.py
create mode 100644 demo/requirements.txt
再度、状態を確認。
$ git status
On branch test001
Your branch is ahead of 'origin/test001' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
プッシュする
$ git push
Enumerating objects: 8, done.
Counting objects: 100% (8/8), done.
Delta compression using up to 20 threads
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 2.55 KiB | 2.55 MiB/s, done.
Total 7 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0)
remote: Analyzing objects... (7/7) (7 ms)
remote: Validating commits... (1/1) done (0 ms)
remote: Storing packfile... done (27 ms)
remote: Storing index... done (82 ms)
To https://dev.azure.com/ikuboh/Rework/_git/Rework
25750dc..8107c7b test001 -> test001
$
ブランチを事前に作らずに開始する場合
同様に、まず clone する
$ git clone https://ikuboh@dev.azure.com/ikuboh/Rework/_git/Rework
Cloning into 'Rework'...
remote: Azure Repos
remote: Found 3 objects to send. (27 ms)
Unpacking objects: 100% (3/3), 751 bytes | 8.00 KiB/s, done.
ファイルが一式クローンされている。ディレクトリ内に移動する。
$ ls
Rework/
$ cd Rework/
先にブランチを作っていない場合はここで作る
git branch -b newbranch
-b は、ブランチを作成後、そのブランチに checkout するオプション。
-b をつけ忘れたら git checkout newbranch
を実行すればよい
ディレクトリを作成したり、いくつかファイルを置く。
$ mkdir demo
$ touch demo/main.py
追加したファイルを STAGE に上げる
$ git add .
コミットする。-m はメッセージ。
$ git commit -m "test commit: add new files"
状態を確認。
$ git status
プッシュする
$ git push origin newbranch
これで、リモートに newbranch というブランチが作成されプッシュされる
マージ
master なり develop なりマージ先をチェックアウトして、マージを実施する。
git checkout develop
git merge test001
コンフリクトしたら対応する。
対応が終わったらファイルをコミットして、push
git checkout test001 # <-- 必要?
git add <filename> # 修正したファイル
git commit
git push
あとは、プルリクを作ってレビューしてもらい、マージする。
競合の解消に Winmerge を使う
以下の設定を .gitconfig に追記することで、Winmerge を競合の解消に使用できます。
[diff]
tool = WinMerge
[difftool "WinMerge"]
cmd = "C:/Program Files/WinMerge/WinMergeU.exe" -f "*.*" -e -u -r "$LOCAL" "$REMOTE"
[merge]
tool = WinMerge
[mergetool "WinMerge"]
cmd = "C:/Program Files/WinMerge/WinMergeU.exe" -e -u "$LOCAL" "$REMOTE" "$MERGED"