目錄
1. 添加文件&add操作和commit操作
2. .git樹狀目錄的變化
3. git其他操作?
4. 修改文件
4.1 git status?
4.2 git diff
1. 添加文件&add操作和commit操作
- add操作:將工作區中所有文件的修改內容 添加進版本庫的暫存區中。
- commit操作:將暫存區的內容 提交到master分支下。此步完成之后,才能真正意義上說將修改的內容放到版本庫中(本地倉庫)。
- add對應命令:git add命令
- commit對應命令:git commit命令
add操作:
- 寫法1:git add 文件的名稱(當然后面也可以跟上多個文件)
- 寫法2:git add . (當前目錄下所有內容的修改全部添加到暫存區)
commit操作
- git commit -m " " (引號里是本次提交的細節,盡量詳細的描述,請描述直接語言,不可修改的)(git 版本控制器 管理文件的版本 就是依據版本提交的細節)
- 回車之后,就可以看到你提交成功的信息。
- 第一行是提交的細節或備注。
- 第二行是有幾個文件改變,改變的內容是什么。(此例子是有4個文件改變,改變的內容是1行)
git add
git commitgit add ReadMe//文件名,后面可以跟多個文件名
git add . //當前目錄下所有文件修改的內容全部添加到暫存區git commit -m " "
?
2. .git樹狀目錄的變化
- add操作之后,index暫存區新增內容的git對象的索引。
- add操作同時在對象區創建了git對象,內容在這里面。
- head指針指向master
- commit操作之后,master新增了對象庫中對象的索引。
- master里面存放的就是最新一次提交commit id
- commit id分為兩個部分:
- 前兩位是文件夾的名稱
- 剩下是后面是標識
- mastet——>最新一次提交記錄的commit id——>保存的最近一次提交記錄(里面有提交文件修改內容的commit id)——>保存的是提交文件(每個提交的文件都有單獨的commit id)——> commit id保存的是修改的內容。
【head指針指向master】cat .git/HEAD
【未操作前】?
【操作之后】?
cat .git/refs/heads/master
//master的內容,里面存放的是最新一次提交的commit id
git cat-file -p 跟commit id //查看maseter索引commit id的內容
【只提交了一次所以只有一次提交記錄】?
【tree后面也是一個對象,對象里面存放的是最新一次提交的commit id】
【此例子我們提交了兩次,所以有parent:?上次提交內容parent的commit id】
git cat-file -p 0de78ceec6ac9cf0502e67fc7d7dced363a7ada5//commit id是提交記錄中tree后面對象的索引
git cat-file -p ce09bf3ad4f74a39462ae54d7a75272977303c05 //查改對應文件commit id中保存的修改的內容
?
3. git其他操作?
git log?
- git log :可以幫助我們打印時間從近到遠的提交記錄。
每次提交都會有一個commit id(通過哈希計算出來的一個數字,不是遞增的數字。十六進制表示。)
這個id可以定位到我們每次的提交的文件內容。定位到是誰提交和提交時間以及提交的詳細信息。
下面例子:清晰的知道commit id和配置的姓名和郵箱。
?git log --pretty=oneline
- git log --pretty=oneline:簡化上面的內容(打印一行漂亮的日志)
4. 修改文件
前提:對工作區的文件的修改包括以下幾個方面:
- 新增一個文件
- 刪除一個文件
- 修改一個文件內容(增刪改)
重點?:Git版本控制器并不是追蹤管理文件本身,而是文件的修改。對象庫中的一個git對象,里面存儲其實是工作區修改的內容。Git管理的是修改的內容而不是一整個的文件。
注意?:每次修改工作區的文件之后,提交之后,需要用git的指令查看本地倉庫的狀態和修改的具體內容。
4.1 git status?
查看當前倉庫的狀態:git status
- 用于查看上一次提交 截至到現在 是否對哪些文件做出修改,注意只是哪些文件變化了/修改了,不能查看修改的內容。
- Changes not staged for commit 沒有將要提交的文件修改內容 到暫存區內容(工作區存在修改過的文件 沒有提交到暫存區中了)
- 修改的是在工作區:modified:ReadMe修改的內容在。
【add未提交到暫存區前】?
【add提交到暫存區】??【commit 未提交到本地倉庫前】?
【commit提交到本地倉庫】
4.2 git diff
顯示暫存區和工作區之間差異的文件內容的:git diff???需要查看某個修改文件的具體內容的文件名。(顯示的是diff格式)
?