「Git」カテゴリーアーカイブ

ブランチの名前を変更する

ブランチの名前を変更するには、-m オプションを使う。

oldbranchをnewbranchに変更する

$ git branch -m <oldbranch> <newbranch>

現在のブランチをnewbranchに変更する

$ git branch -m <newbranch>

newbranchがすでに存在している場合に上書きするには、-m の代わりに -M オプションを使う。

追跡ブランチを作成する

リモートブランチを追跡するブランチ(tracking branch)を作成する

git branch [branch] [remotename]/[branch]
git checkout -b [branch] [remotename]/[branch]

例:origin/serverfix を追跡するローカルブランチsfを作成してチェックアウト。

$ git checkout -b sf origin/serverfix

既存のローカルブランチにリモートブランチを追跡させる。

(現在のブランチ)

git branch -u [remotename]/[branch]

(ローカルブランチを指定)

git branch -u [remotename]/[branch] [branch]

例:現在のローカルブランチにorigin/masterを追跡させる。

$ git branch -u origin/master

例:ローカルブランチsfにorigin/serverfixを追跡させる。

$ git branch -u origin/serverfix sf

Git Book - Tracking Branches
3.5 Git のブランチ機能 - リモートブランチ

gitolite

gitosisを使っていたが、gitosisではブランチごとにパーミッションを設定できない。
gitoliteではブランチごとにパーミッションを設定できるらしいので、インストール、設定してみた。
sitaramc/gitolite - GitHub

インストール

http://sitaramc.github.com/gitolite/install.html の、root methodで行った。

設定

http://sitaramc.github.com/gitolite/admin.html
ユーザ、レポジトリの追加方法、パーミッションの設定など。

感想

gitoliteはよい!
gitosisではできないブランチごとのパーミッション設定が可能だし、設定ファイルもgitosisよりきれいで分かりやすい。(特にレポジトリが多くなった場合。)
また、ドキュメントも充実していて分かりやすいので、インストールや設定が楽だった。

その他

  • /etc/ssh/sshd_config にAllowUsersを設定している場合は、gitoliteユーザを追加すること。
  • gitoliteで管理しているレポジトリを Redmineのレポジトリブラウザで使用する場合、パーミッションに注意。
    gitoliteのデフォルトでは、push時にファイルのパーミッションが600になるので、Redmineの実行ユーザがgitoliteユーザと異なると、

    redmine fatal: Failed to resolve HEAD as a valid ref.
    

    というエラーになる。
    push時に作成されるファイルのパーミッションを変更するには、 gitoliteユーザの.gitolite.rcを以下のように編集する。

    #$REPO_UMASK = 0077; # gets you 'rwx------'
    #$REPO_UMASK = 0027; # gets you 'rwxr-x---'
    $REPO_UMASK = 0022; # gets you 'rwxr-xr-x'
    

    Redmine - redmine read git repo without having to reset - Redmine

CentOSにbash-completionをインストール

CentOSのyumにはbash-completionがないので、ソースからインストールした。
Bash-Completion
から、最新のソースをダウンロードしてインストール。

$ tar xjvf bash-completion-2.0.tar.bz2
$ cd bash-completion-2.0
$ ./configure
$ make
$ sudo make install

~/.bashrc

# Use bash-completion, if available
[[ $PS1 && -f /usr/local/share/bash-completion/bash_completion ]] && \
    . /usr/local/share/bash-completion/bash_completion

Gitのbash_completionは、Gitのソースの/contrib/completion/git-completion.bash、
Subversionのbash_completionは、Subversionのソースの/tools/client-side/bash_completion
にあるので、/usr/local/share/bash-completion/completions/ にそれぞれgit、svnという名前で保存すればよい。