1. 程式人生 > >git修改提交的使用者名稱和Email

git修改提交的使用者名稱和Email

            針對一個git倉庫
2) git config --global    針對一個使用者
3) sudo git config --system    針對一個系統,因為是針對整個系統的,所以必須使用sudo


1) 第一種預設當前目錄是一個git倉庫,假設我們有一個倉庫叫git_test,它所修改配置儲存在git_test/.git/config檔案,如果當前目錄不是一個有效的git倉庫,在執行‪一些命令時會報錯,例如:
$git config -e
fatal: not in a git directory

我們來看一個簡單的例子,一般我們clone一個git倉庫,預設都是一個工作目錄,那麼對應的配置變數 bare = false。來看一個很簡單的倉庫的config檔案,cat git_test/.git/config

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true

如果我們想修改bare為false,最簡單的辦法就是直接用vim開啟git_test/.git/config檔案進行修改,另一種辦法就是使用git config來修改

$git config core.bare true
$cat .git/config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = true
        logallrefupdates = true

命令的格式就是 git config. 。需要注意的是我們沒有加--system和--global,那麼這個修改只針對於當前git倉庫,其它目錄的倉庫不受影響。

2) 第2種是適用於當前使用者,也就是說只要是這個使用者操作任何git倉庫,那麼這個配置都會生效,這種配置儲存在~/.gitconfig當中,那什麼樣的配置需要放到使用者的配置檔案裡呢,git裡一個最為重要的資訊就是提交者的個人資訊,包括提交者的名字,還有郵箱。當我們在用git提交程式碼前,這個是必須要設定的。顯而易見,這個配置需要放在使用者一級的配置檔案裡。
$git config --global user.name "I Love You"
$git config --global user.email "
[email protected]
"
$cat ~/.gitconfig
[user]
        name = I Love You
        email = [email protected]

3) 第3種是適用於一個系統中所有的使用者,也就是說這裡的配置對所有使用者都生效,那什麼樣的配置需要放在這裡呢,比如我們在執行git commit會彈出一個預設的編輯器,一般是vim,那作為系統的管理員,可以將vim設定為所有使用者預設使用的編輯器,我們來看設定的過程
$sudo git config --system core.editor vim
$cat /etc/gitconfig
[core]                                                                                                                                                                       
        editor = vim

我們可以看到它修改的是全域性的配置檔案/etc/gitconfig。

總結:

現在我們就會有一個問題,當我們在不同的配置檔案中,對同一個變數進行了設定,最終哪個會生效呢?或者說誰到底覆蓋誰呢?先來排除一種情況,就是分屬不同的兩個git倉庫的config檔案中的配置是互不影響的, 這個很好理解。那麼要討論是如果一個配置出即出現在/etc/gitconfig,~/.gitconfig以及git_test/.git /config這三個位置時,我們又恰巧要操作git倉庫git_test,那麼生效的優先順序順序是(1)git_test/.git/config,(2)~/.gitconfig,(3)/etc/gitconfig,也就是說如果同一個配置同時出現在三個檔案中時,(1)有效。



那麼為什麼會有這樣的情況發生呢,比如我們前面的有關編輯器設定,系統管理員為所有使用者設定了預設的編輯器是vim,但是並不是每個使用者都習慣用vim, 有些人更青睞於功能更炫的emacs(I hate it,我剛剛接觸linux的時候上來就是用的emacs,讓我這個新手不知所措,但是後來使了vim,覺得更容易上手,而且用的時間長了,對vim瞭解 更深,發現它功能一樣強大,而且它可以算是類unix系統中預設的編輯器),言歸正傳,如果你想用emacs,你就可以將這個配置加入到你 的~/.gitconfig中,這樣它就會覆蓋系統/etc/gitconfig的配置,當然這隻針對於你,其他使用者如果不設定還是會用vim。

$git config --global core.editor emacs
$cat ~/.gitconfig
[core]
        editor = emacs


對於git config只介紹到這,其實除了以上講解的部分,它還有很多功能。本文中主要是針對介紹不同範圍內設定的配置的有效範圍,瞭解它之後,當以後需要對 git進行環境配置時,你就明白根據當前配置的性質,明白是該放在git_test/.git/config,還是在~/.gitconfig,又或是在 /etc/gitconfig中,作為一個資深的版本管理者來說,必須要了解以上的區別。

                                                                                                                                         tenyears2022
                                                                                                                                           2012-01-16