Git學習筆記

jopen 11年前發布 | 12K 次閱讀 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>

2. git pull

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!