我想停止自己意外地將任何東西交給主分支,除非我確定。所以我試了這個腳本來確定我在哪個分支上,但是有問題。當我創建一個新的分支git name-rev即使我在另一個分支上返回主設備如何使用git鉤子預先提交來停止提交主人
$ git branch
ignore
master
* set_support
$ git name-rev --name-only HEAD
master
這是我的腳本。
#!/bin/sh
# Check to see if we are on master branch. Stop accidental commits
if [ "`git name-rev --name-only HEAD`" == "master" ]
then
if [ -f i_want_to_commit_to_master ]
then
rm i_want_to_commit_to_master
exit 0
else
echo "Cannot commit to master branch Adrian"
echo "Remember to create file 'touch i_want_to_commit_to_master' to commit to master"
fi
exit 1
fi
exit 0
對於馬克:我重建了最新的穩定標籤和相同的結果git。它僅在對新分支進行提交後才起作用。
$ mkdir gittest
$ cd gittest
$ git init
Initialized empty Git repository in /home/adrian/gittest/.git/
$ touch file1
$ git add file1
$ git commit
[master (root-commit) 7c56424] New file
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file1
$ git branch
* master
$ git checkout -b new_branch
Switched to a new branch 'new_branch'
$ git name-rev --name-only HEAD
master
$ git --version
git version 1.7.7.1
$ git branch
master
* new_branch
$ touch file2
$ git add file2
$ git commit
[new_branch 1e038fb] new file
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file2
$ git name-rev --name-only HEAD
new_branch
您使用的是哪個版本的git,以及哪種操作系統?如果你真的複製並粘貼了,'git branch'和'git name-rev HEAD'的結果看起來像一個(令人驚訝的)錯誤。 –
我從源代碼構建混帳 - 最後構建了$ git的描述 v1.7.7-RC3 $ git的--version Git版本1.7.7-RC3 $ UNAME -a Linux的iceweasel.bluedreamer 2.6.40.3-0.fc15 .x86_64#1 SMP星期二8月16日04:10:59 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux –