tanihito’s blog

デジタル・新規事業開発・健康など、興味のあることについてつらつらと書いてきます。

A successful Git branching modelの初期設定をする

バージョン管理システムSubversionからGitに移行しました。Gitではブランチの使い方が重要になってきますが、A successful Git branching modelがいいみたいです。このモデルではリモートにmaster・developブランチを作る必要があるので、設定方法を記録しておきます。今回はxxx.xxx.xxx.xxxというIPアドレスにtanakaというアカウントを持っていると仮定し、そこにprojectという名前のリモートリポジトリを作成する場合を想定します。

リモートリポジトリを作る

$ ssh tanaka@xxx.xxx.xxx.xxx
$ mkdir ~/git/project.git
$ cd ~/git/project.git
$ git init --bare
Initialized empty Git repository in /home/tanaka/git/project.git/
$ ls
HEAD  branches  config  description  hooks  info  objects  refs
$ exit

ローカルリポジトリを作る

$ mkdir ~/project
$ cd ~/project
$ git init
Initialized empty Git repository in /home/tanaka/project/.git/
$ touch .gitignore
$ git add .
$ git commit -m "Initial commit" -a
[master (root-commit) 5d8998b] Initial commit
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 .gitignore
$ git push tanaka@xxx.xxx.xxx.xxx:git/project.git master
Counting objects: 3, done.
Writing objects: 100% (3/3), 224 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To tanaka@xxx.xxx.xxx.xxx:git/project.git
 * [new branch]      master -> master
$ cd
$ rm -rf ~/project
$ git clone tanaka@xxx.xxx.xxx.xxx:/home/tanaka/git/project.git ~/project
Initialized empty Git repository in /home/tanaka/project/.git/
remote: Counting objects: 3, done.
Receiving objects: 100% (3/3), 223 bytes, done.
remote: Total 3 (delta 0), reused 0 (delta 0)

developブランチを作る

$ cd ~/project
$ git checkout -b develop
Switched to a new branch 'develop'
$ git push origin develop
Total 0 (delta 0), reused 0 (delta 0)
To tanaka@xxx.xxx.xxx.xxx:/home/tanaka/git/project.git
 * [new branch]      develop -> develop
$ git checkout master
Switched to branch 'master'
$ git branch -d develop
Deleted branch develop (was 5d8998b).
$ git checkout -t origin/develop
Branch develop set up to track remote branch develop from origin.
Switched to a new branch 'develop'
$ git branch -a
* develop
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/master