25.0 本課內(nèi)容
- 如何將 Git 用于自己計算機(jī)上的單獨項目
- 如何新建倉庫(repository)并進(jìn)行提交(commit)
- 在 Git 進(jìn)行合并和分支以及使用上述工具追蹤項目的更改
25.1 練習(xí)初始化倉庫
初始化./創(chuàng)建新的 Git 代碼庫:git init
當(dāng)初始化 Git 代碼庫的時候, Git并不會自動進(jìn)行 commit
當(dāng) Git 要進(jìn)行提交的時候,并不需要將整個 Git 倉庫進(jìn)行提交,而可以選擇性的將文件添加到存儲區(qū)域,該命令為:git add
如果你意外地將某個文件添加到暫存區(qū)中,可以使用
git reset刪除它。例如,如果你意外地添加了 lesson_2_reflections.txt,但不想提交它,請運(yùn)行git reset lesson_2_reflections.txt,此命令會從暫存區(qū)中刪除該文件,但它仍在你的工作目錄中。
自我們上次再次查看概念圖以來,我們引入了一些新概念。
git init(git 初始化)
git add(git 添加)
git status(git 狀態(tài))
staging area(暫存區(qū))
working directory(工作目錄)
[//]: #()image.png
[//]: # (This may be the most platform independent comment)
25.2 寫好提交信息
在將倉庫進(jìn)行提交的時候,需要編寫提交信息,以說明所做的更改。可以通過命令行指定提交信息,git commit -m "Commit message"。
設(shè)置編輯器仍然是一種好的做法,因為這可更輕松地編寫較長的提交信息,以全面說明所做的更改。
提交信息的風(fēng)格
雖然提交信息的風(fēng)格因人而異,但此風(fēng)格指南介紹了在編寫提交信息時的一些常見最佳做法。
25.3 再次學(xué)習(xí) git diff
git diff 有了新功能,如下:
git diff:比較 working directory 以及 staging area
git diff --staged:比較 staging area 以及 repository 中最新的 commit
git diff commit1 commit2:比較 repository 中的 commit1 和 commit2
25.4 分支 Branch
branch 實際就是 Git 為了操作方便而對 commit 添加的標(biāo)簽(label)。使用 git branch 創(chuàng)建和查看分支。
直接
git branch可以顯示當(dāng)前的分支
而給 git branch 后賦一個參數(shù)后,則會新建一個與參數(shù)同名的分支:git branch easy-mode
- 使用
git branch branch_name創(chuàng)建以 branch_name 命名的 branch。 - 使用
git checkout branch_name檢出以 branch_name 命名的 branch。
上述兩條命令可以簡單表示成:
git checkout -b branch_name
- 使用
git commit以提交添加到存儲區(qū)域的內(nèi)容。 - 使用
git log --graph --oneline branch1_name branch2_name以查看branch1_name和branch2_name分支的提交記錄。
25.5 練習(xí)合并簡單文件(將多個分支中的更改合并到單一版本)
Git 創(chuàng)建單一版本將多個分支的所有更改包含在內(nèi)的合并策略。
Git 根據(jù)當(dāng)前兩個 branch 最新的 commit,以及它們 fork 之前的 commit 的記錄(即形成分支的時候所具有的原始文件)來創(chuàng)建者兩個分支的合并提交。當(dāng)前兩個分支的最新提交均為該合并提交(merged commit)的父提交。

使用 git merge master new-branch 合并 master 與 new-branch 并且將合并后的提交作為 master 的新頂點。
使用 git show commit_id 通過該命令查看 commit_id 與其父級 commit 當(dāng)中的更改,而無需了解父級 commit 到底是哪個
使用 git branch dash -d branch-name 將標(biāo)簽 branch-name 刪除,但并不會刪除分支中的提交。-d 指代 delete
25.6 練習(xí)合并沖突 & 檢測沖突
合并沖突(merge conflict):意味著 master 和 branch_name 更改了某文件的同一部分。Git 自身無法判斷哪些更改需要保留,因此會提示作者進(jìn)行抉擇。
25.7 概念圖:分支和合并
分支與合并都需進(jìn)行提交,但提交與分支/合并之間到底有什么關(guān)系?
分支實際上就是提交的標(biāo)簽(label)

