Makio Tsukamoto tumblelogging in the mood of sinkin' in the rain.
Gitのブランチを使いましょう。
ブランチを作成しましょう。
まずブランチを作成してみます。
C:\>git branch lesson-branch
ブランチが作成されたことを確認します。
C:\>git branch
lesson-branch
* master
lesson-branchというブランチが追加されました。現在のブランチ(先頭に * が表示されているもの)は、masterのままです。
ブランチを切り替えましょう。
まずブランチを切り替えます。
C:\>git checkout lesson-branch
ブランチが切り替わったことを確認します。
C:\>git branch
* lesson-branch
master
ブランチで作業しましょう。
「about-branch.txt」というファイルを作ることにします。適当な内容で構いません。
C:\>notepad about-branch.txt
次の内容で保存します。
Hi, I'm writing about branch.
gitの監視対象に追加し、コミットします。
C:\>git add about-branch.txt
C:\>git commit -m "Writing about-branch.txt"
[lesson-branch 2de4877] Writing about-branch.txt
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 about-branch.txt
ブランチをmasterに戻しましょう。
ブランチをマスターに戻します。
C:\>git checkout master
Switched to branch 'master'
ファイルを一覧してみます。
C:\>dir /b
readme.txt
lesson-branchブランチで「about-branch.txt」を作成しましたが、masterブランチに戻ると、こちらには「about-branch.txt」はないままになっています。
ブランチをマージしましょう。
lesson-branchブランチでの変更点を、masterに反映します。
C:\>git merge lesson-branch
Updating 6c5f993..2de4877
Fast forward
about-branch.txt | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 about-branch.txt
ファイルを一覧してみます。
C:\>dir /b
about-branch.txt
readme.txt
lesson-branchブランチでの変更点である「about-branch.txtの追加」が、masterブランチに反映されました。
ブランチを削除しましょう。
lesson-branchブランチを削除します。
C:\>git branch -d lesson-branch
error: The branch 'lesson-branch' is not an ancestor of your current HEAD.
If you are sure you want to delete it, run 'git branch -D lesson-branch'.
ブランチでの変更で、masterに反映されていない分があるので、削除できませんでした。まずマージして、それから削除します。
C:\>git merge lesson-branch
C:\>git branch -d lesson-branch
Deleted branch lesson-branch (was 944166d).
lesson-branchブランチがなくなっていることを確認します。
C:\>git branch
* master
ブランチを強制削除しましょう。
もう一度ブランチを作り「masterに反映されていない分がある」状態まで進めます。
C:\>git branch lesson-branch
C:\>git checkout lesson-branch
Switched to branch 'lesson-branch'
C:\>echo Lesson again. > lesson.txt
C:\>git add lesson.txt
C:\>git commit -m "Create lesson.txt"
[lesson-branch 210995d] Create lesson.txt
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 lesson.txtC:\>git checkout master
Switched to branch 'master'
同じ状態になっていることを確認します。
C:\>git branch -d lesson-branch
error: The branch 'lesson-branch' is not an ancestor of your current HEAD.
If you are sure you want to delete it, run 'git branch -D lesson-branch'.
強制削除します。小文字の -d オプションの代わりに、大文字の -D オプションを指定します。
C:\>git branch -D lesson-branch
Deleted branch lesson-branch (was 210995d).
lesson-branchブランチがなくなっていることを確認します。
C:\>git branch
* master
まとめ
Gitのブランチの一覧、追加、削除は、以下のコマンドで行います。
git branch [option]
Gitのブランチの切替は、以下のコマンドで行います。
git checkout <ブランチ名>
Gitのブランチのマージは、以下のコマンドで行います。
git merge <ブランチ名>
ブランチは、並行していくつかの作業を行う時に役立ちます。例えば、ある人が昨日の追加を行い、ある人はバグの修正を行い、ある人はドキュメントの更新を行うと言ったときに、それぞれにブランチを作って作業をすれば、終わったものから「master」に反映してリリースすることができます。
メモ:ブランチはコミットしてから切り替えましょう。
ブランチを切り替える時に、次のようなエラーが出ることがありました。
C:\>git checkout master
error: You have local changes to 'about-branch.txt'; cannot switch branches.
現在のブランチにコミットしていない変更があるので、ブランチを切り替えられなかったようです。コミットをします。
C:\>git commit -a -m "Append merit description."
ブランチをマスターに戻します。
C:\>git checkout master
Switched to branch 'master'
今度はきりかえられました。こうならず「M about-branch.txt」のように表示されるだけで、切り替わることもありました。違いがよく分かっていません。