git的相關知識
工作區和暫存區
工作區
例如我們建立一個本地倉庫 名字gitProject 如圖,這個gitProject就是一個工作區
版本庫
上圖我們看到工作區裡面還有一個目錄.git
,而它並不算是工作區,而是git的版本庫。
git的版本庫裡存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有git為我們自動建立的第一個分支master
,以及指向master
的一個指標叫HEAD
。
我們知道把修改的內容提交到git 分兩步執行的 git add 和git commit
git add
把檔案新增進去,就是把檔案修改新增到暫存區;
git commit
在我們建立git版本庫時,git自動為我們建立了唯一一個master
分支,git commit
就是往master
分支上提交更改。
現在我們操作一下
下面我們在ViewController.m 中加入一個NSLog(@"!!!!!!!!!!!!!");
檢視下狀態 git status
git add . 下 然後檢視下狀態
git add . 就是將你想要提交的內容放到暫存區中
然後git commit 下 然後檢視下狀態
清空了暫存區 提交到了分支上面
我們對git的管理實際上就是修改,不管你做什麼樣的操作就是一個修改 。
下面我們看下 git checkout --
gitProject/gitProject/ViewController.m
cat gitProject/gitProject/ViewController.m
檢視ViewController.m 內容 如圖
檢視ViewController.m 內容 如圖
然後我們新增一行 NSLog(@"?????????");
cat gitProject/gitProject/ViewController.m 檢視檔案內容如圖
git checkout --
gitProject/gitProject/ViewController.m 就是把
檔案在工作區的修改全部撤銷,讓這個檔案回到最近一次git commit
或git add
時的狀態。
然後我們看看git checkout -- 之後的檔案內容
檔案內容果然復原了。
git checkout -- file 是撤銷
,如果沒有--
,就變成了切換到另一個分支的命令了
然後 我們看下 git reset HEAD <file> 這個命令可以把你add 到暫存區的修改撤銷掉
git add . 之後 執行 git reset HEAD /gitProject/gitProject/ViewController.m
然後git commit 後會提示沒有可提交的內容
下面講講刪除檔案
例如 現在建立一個ssss.h 和ssss.c 檔案 然後提交到倉庫
1 我們可以直接去倉庫目錄下吧你想刪除的檔案給刪除了 然後 提交下
2 或者用命令列 git rm 檔名 然後提交
但是如果你發現刪錯了,只要咱們版本庫裡面還有,我們就可以把誤刪的檔案恢復到最新版本:使用
git checkout -- gitProject/gitProject/ViewController.m
參考
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013758392816224cafd33c44b4451887cc941e6716805c000