使用 git branch 指令建立 branch 有個小缺點,就是branch name 不可以摻雜空格。e.g.
git branch branchname can not contain space
就會出現以下提示
usage: git branch [options] [-r | -a] [--merged | --no-merged] or: git branch [options] [-l] [-f] <branchname> [<start-point>] or: git branch [options] [-r] (-d | -D) <branchname>... or: git branch [options] (-m | -M) [<oldbranch>] <newbranch> Generic options -v, --verbose show hash and subject, give twice for upstream branch -t, --track set up tracking mode (see git-pull(1)) --set-upstream change upstream info --color[=<when>] use colored output -r, --remotes act on remote-tracking branches --contains <commit> print only branches that contain the commit --abbrev[=<n>] use <n> digits to display SHA-1s Specific git-branch actions: -a, --all list both remote-tracking and local branches -d, --delete delete fully merged branch -D delete branch (even if not merged) -m, --move move/rename a branch and its reflog -M move/rename a branch, even if target exists --list list branch names -l, --create-reflog create the branch's reflog --edit-description edit the description for the branch -f, --force force creation (when already exists) --no-merged <commit> print only not merged branches --merged <commit> print only merged branches
搜尋了一下似乎沒有很直觀的解決方式。決定使用客製化 git 指令的方式來解決。
客製化指令其實相當簡單。
只有2個步驟,
1.建立指令檔案。
2.將指令檔案加到PATH環境變數中。
我的目標為自動把branch name的空格轉換為底線。e.g.
當我輸入(xxx為 git 自定義指令名稱)
git xxx branchname can not contain space
該指令會建立一個branch轉換為 branchname_can_not_contain_space,等同於輸入
git branch branchname_can_not_contain_space
首先
1.建立指令檔案,使用shell script來完成。
這裡要注意命名規則,指令檔案必須以 git- 開頭,後面接上你想取的名字,不需要副檔名。
以本範例來說我把它命名為 git-branchbaseline
#!/bin/bash concat_parameters_with_baseline() { finalName=$@ for var in "$@" do finalName=${finalName/ /_} done echo create new branch, name:$finalName git branch $finalName } concat_parameters_with_baseline $@
然後需要開放git-branchbaseline 的權限。
輸入
sudo chmod /complete/path/of/git-branchbaseline 777
2.考慮到之後可能會建立其他客製化指令,建立專門存放指令的資料夾在 /complete/path/of/git_customize_commands,並放入剛剛的git-branchbaseline。
將資料夾加到環境變數PATH
export PATH=$PATH:/complete/path/of/git_customize_commands
Update 20160622!!!
export 方式只能對目前開啟的的 Terminal 有作用,如果希望環境變數維持有效可以考慮修改 ~/.bashrc (使用bash的情況)。
因為我用的是zsh,所以需要修改 ~/.zshrc,開啟~/.zshrc 並加入
export PATH=$PATH:/complete/path/of/git_customize_commands
完成!!!
接著只要到 git repo 測試新指令即可。
git branchbaseline branchname can not contain space