git初始化git
git初始化有兩種模式,一種是git init 這種模式會記錄當前庫提交的版本以及顯示項目文件,一種是git init --bare,稱爲裸倉庫,當前倉庫是沒法提交的,由於不包含項目文件,只包含版本庫,所以這種模式多用於遠程倉庫的核心倉庫(很像SVN中的中央倉庫)服務器
若是遠程庫是一個git init庫,則在第一次push到遠程庫時會提示'receive.denyCurrentBranch' Configuration variable to 'refuse',即拒絕合併到當前分支,需進行以下配置:git config receive.denyCurrentBranch=ignore便可。push成功後,還須要在遠程庫執行git reset --hard,回滾到最新的提交歷史才能夠顯示最新的提交spa
因此強烈建議先使用git init --bare設置箇中央遠程庫,再從中央遠程庫拉取ci
還有就是push失敗頗有多是權限問題,git用戶沒有建立目錄的權限,因此須要在服務器上受權,要麼修改擁有者或組,要麼修改權限rem
問題:git push或git pull的時出現以下錯誤:it
$ git push
fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use
git push origin HEAD:<name-of-remote-branch>io
說明:根據上面的提示,直接git push origin master實際並不能解決問題ast
或配置
$ git pull
You are not currently on a branch, so I cannot use any
'branch.<branchname>.merge' in your configuration file.
Please specify which remote branch you want to use on the command
line and try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.file
解決方案:
第一步:git checkout -b temp 切換到一個臨時的分支
第二步:git checkout master 再切換回主分支
就能夠恢復到master repository的狀態,而後就能夠push和pull了