Git學習筆記
Git 初始化
git config
Git配置文件采用的是INI文件格式,git config用于讀取和更改INI配置文件的內容
git config [<file-option>] name value
git config [<file-option>] --unset name
-
例:初始化姓名和郵件地址
git config --system user.name "codenot" git config --system user.email codenot@qq.com
-
例:別名設置
git config --system alias.ci commit // 設置 git config --unset --system alias.ci // 刪除
-
例:命令輸出開啟顏色顯示
git config --global color.ui true
--global 和 --system 表示配置的位置。
--global代表用戶主目錄下配置, --system代表系統級配置文件, 如果不加表示版本庫級別配置文件。
暫存區相關操作
Git 的許多命令都是圍繞著工作區、暫存區、版本庫來執行的。
文件.git/index實際上就是一個包含文件索引的目錄樹,就是一個虛擬的工作區。這個虛擬工作區的目錄樹中,記錄了文件名和文件的狀態信息。.git/refs/head/master就是指向版本庫的目錄樹.
文件的內容保存在Git對象庫.git/objects目錄中。
1. git add
工作區 --> 暫存區
表示把指定文件的內容寫入到對象庫中的一個新的對象中,然后更新暫存區目錄樹,記錄到暫存區文件索引中。
2. git commit
暫存區 --> 版本庫
表示把暫存區的目錄樹寫到版本庫中,master得到更新,讓其指向新的目錄樹(即原來暫存區的目錄樹)。
3. git reset
-
格式1:
git reset [<commit>] -- <paths> ...
此用法在命令中包含路徑
<paths>
,這不會重置引用,更不會更改工作區,而是用指定的提交<commit>
(省略則表示使用HEAD)下的文件<paths>
替換掉暫存區的文件。解釋下引用的意思: HEAD會指向
refs/head/<branch>
,修改引用就是修改refs/head/<branch>
里面指向的值。-
例:
git reset HEAD <paths> // 相當于取消之前執行的git add <paths>
-
-
格式2:
git reset [--soft | --mixed | --hard] [<commit>]
此用法會重置引用,根據不同的選項,可以對暫存區或工作區進行重置。省略
<commit>
則表示使用HEAD-
例:替換工作區、暫存區、引用
git reset --hard <commit>
-
例:只更改引用的指向
git reset --soft <commit>
-
例:更改引用指向、重置暫存區。
git reset --mixed <commit> // 默認就為 --mixed
-
例:
git reset HEAD // 表示把暫存區目錄數替換成HEAD指向的目錄樹,工作區不受到影響。 git reset // 同上
-
4. git checkout
-
格式1:
git checkout [<commit>] [--] <paths> ...
表示用commit指向的目錄樹替換暫存區以及工作區,commit省略則相當于從暫存區檢出
-
例:
git checkout -- <file> // 用暫存區的file替換工作區的 git checkout . // 用暫存區所有文件替換工作區 git checkout HEAD <file> // 表示用master指向的目錄樹文件替換暫存區以及工作區文件
-
-
格式2:
git checkout [<bracnch>]
-
例:
git checkout branch // 更新HEAD指向到branch分支,用branch指向的目錄樹更新暫存區和工作區 git checkout // 匯總顯示工作區、暫存區與HEAD的差異.
-
-
格式3:
git checkout -b <new_branch> <start_point>
-
相當于
git branch <branchname> // 創建分支 git checkout <branchname> // 切換到新的分支,新的分支從start_point指向的提交開始創建
-
5. git diff
git diff // 工作區比較暫存區
git diff --cached // 暫存區比較HEAD
git diff HEAD // 工作區比較HEAD
Git對象
git cat-file -p sha1值 // 查看sha1對象內容
遠程版本庫
git checkout -b <new_branch> <remote-branch> // 從遠程分支中創建本地分支,自動建立跟蹤。
git remote add <remotename> <url> // 注冊遠程版本庫
git remote -v // 查看已經注冊的遠程版本庫
1. git push 命令解釋:
1. 如果為當前分支設置了<remote>, 則等于git push <remote>
2. 沒有設置<remote>,等于 git push origin
3. 如果在遠程版本庫中創建分支,執行 git push <remote> <new_breanch>