一、簡單認識:
1、初始化文件夾為版本控制文件夾,首先建立一個文件夾,進入這個文件夾以后輸入git init初始化這個文件夾。
2、Git幾種位置概念
1、本地代碼:本地更改完代碼以后,雖然是存放在git的文件夾里面,但是沒有添加到待提交列表里面。
2、待提交列表:執行完git add 文件名,但是未執行git commit -m ‘說明’命令的狀態。
3、本地倉庫:git會在本地建立一個本地的倉庫,執行完git commit以后會提交到本地倉庫里面。
4、遠程倉庫:例如Github、coding.net之類的遠程倉庫。
1、本地代碼狀態:
2、待提交列表(需要提交的改動):
3、本地倉庫(將待提交列表的文件提交到本地倉庫)
4、查看本地倉庫的文件,
commit:是當前提交改動的唯一值,這個值是隨機生成的。
Author:前一篇博文中講到的全局配置或者本地目錄配置里面的用戶參數。
Date:提交更改的詳細時間。
底下的就是提交時候-m寫的改動描述,這個越詳細越好,方便其他人閱讀。
5、流轉過程:
二、詳細使用
1、初始化當前目錄為版本控制文件夾
#git init(如果誤操作想撤回初始化,rm -rf .git,直接刪除當前目錄的.git文件夾即可)
2、git add /git commit(添加到待提交列表或提交到本地倉庫)
#git commit -m '描述‘ 必須要有這個參數,寫什么都行,不寫不讓提交。
3、文件每次更改都需要重新提交一次。
4、查看狀態
#git status
當我們看到一個新的git的倉庫的時候,第一步要做的是查看當前倉庫的狀態,下面這個圖例是告訴我們,暫時沒有需要提交或者待提交的更改或有沒有被版本控制的文件。
5、查看日志
#git log(j:向上翻,k:向下翻。Ctrl+f下一頁,Ctrl+b上有一頁,q:退出)
6、查看某一條提交的詳細信息
#git show commit后面的號
我們對redeme這個文件里面的內容做一次更改,提交后用git log查,我們能看到這次查看的基本信息。
然后只要commit號前面的4位或者6位就行(前提是沒有重復的,基本沒有重復的)
紅色字體:前面有個減號,說明是我們刪掉的內容,加號表示是我們新增的內容。
7、撤銷(reset)
從左到右是走上面的命令,從右邊到左邊的話走下面的命令。
這里有兩種撤銷方法:
1、從本地倉庫撤銷到待提交列表。
我們將已經提交到本地倉庫的更改,撤銷的待提交列表。
#git reset --soft HEAD~1(表示撤銷最近的一次改動,并且放到待提交列表里面)
2、從本地倉庫直接撤銷到本地代碼狀態。
#git reset HEAD~1
從上面的命令來看,相比加上--soft軟撤銷,硬撤銷更利索一點。
注意:撤銷命令盡量少用,團隊在開發過程中你也不知道你的隊友更改過什么東西。
8、撤銷(checkout)
說明:
#git checkout -- 文件名
當我們更改了文件內容的時候,還未執行git add 命令的時候,如果想撤銷編輯,就可以使用git checkout -- 文件名的命令。如果已經執行了git add命令,就只能執行git reset命令,細心的同學會發現其實下面截圖有系統提示。
執行撤銷后,新增的內容沒有了。
9、刪除
#git rm/commit
說明:使用git rm 刪除文件,前提是你已經執行了git add和git commit命令,提交到了本地倉庫里面,然后才能執行刪除命令,如果你還未執行git add(添加到待提交列表),這樣的話只是本地文件(還受版本控制約束,直接執行命令刪除即可),如果已經執行了git add想撤回的話可以使用git reset命令(下面截圖系統是有提示的),只有提交到本地倉庫以后的文件,執行git rm才是有效的,一定要記得任何更改都必須提交。
刪除提交以后,提示沒有需要提交的改動。
如果我們用git show 命令的話,就能看到具體細節,告訴我們刪除了該文件。
10、忽略文件
部分不想提交的內容(例如數據庫密碼或者一些無關的文件,相當于過濾)
#gitigonre
首先我們在和.git同級目錄下建立一個.gitigonre文件(前面還有個點),然后我們建立一個database.yml文件
打開.gitigonre文件,輸入*yml(過濾所有后綴是yml的文件)
但是.gitigonre文件是需要提交的,每次更改了.gitigore文件內容,也都需要提交。
11、分支
下圖中每個點都是一次提交,從左往右第二個點開始往下分開了一個分支,到從左往右第六個點后又合并成一個起。下面這個線就是一個分支。
11.1 創建和切換
現在master和brother進度都是一樣的。
切換到brother分支以后,更改redeme文件內容。
切換到master分支,查看redeme文件并沒有任何更改。
git log也沒有任何更改。
11.2刪除分支
11.3合并分支
準備合并前的環境
準備開始合并
首先先切換到要合并到的那個分支上,我這里是要把brother合并到master分支上,所以首先應該先切換到master上。
合并:
告訴我們redeme文件增加了一行,
細心的同學呢會發現合并的時候就連commit號都原封不動的合并過去了。