Git理論基礎
1.1、工作區域
Git本地有三個工作區域:工作目錄(Working Directory)、暫存區(Stage/Index)、資源庫(Repository或Git Directory)。如果在加上遠程的git倉庫(Remote Directory)就可以分為四個工作區域。文件在這四個區域之間的轉換關系如下:
- Workspace:工作區,就是你平時存放項目代碼的地方
- Index / Stage:暫存區,用於臨時存放你的改動,事實上它只是一個文件,保存即將提交到文件列表信息
- Repository:倉庫區(或本地倉庫),就是安全存放數據的位置,這里面有你提交到所有版本的數據。其中HEAD指向最新放入倉庫的版本
- Remote:遠程倉庫,托管代碼的服務器,可以簡單的認為是你項目組中的一台電腦用於遠程數據交換
1.2、工作流程
git的工作流程一般是這樣的:
1、在工作目錄中添加、修改文件;
2、將需要進行版本管理的文件放入暫存區域;
3、將暫存區域的文件提交到git倉庫。
因此,git管理的文件有三種狀態:已修改(modified),已暫存(staged),已提交(committed)
Git操作
2.1:創建工作目錄與常用指令
工作目錄(WorkSpace)一般就是你希望Git幫助你管理的文件夾,可以是你項目的目錄,也可以是一個空目錄,建議不要有中文。
日常使用只要記住下圖6個命令:
2.2:git clone或git init(獲得GIT倉庫)
創建本地倉庫的方法有兩種:一種是創建全新的倉庫,另一種是克隆遠程倉庫。
方法一:獲取遠程倉庫,clone代碼
把遠程倉庫的代碼clone到本地:
git clone https://......
查看當前的git倉庫狀態,可以使用git status:
git status
如果是在剛才新建的文件夾輸入git status會出現下圖1所示,git目錄不對;先用cd 命令切換到yoyoketang這個repository目錄,再輸入git status可以看到On branch master,這個說明已經在master分支上了
方法二:創建全新倉庫
# 在當前目錄新建一個Git代碼庫 git init
執行后可以看到,僅僅在項目目錄多出了一個.git目錄,關於版本等的所有信息都在這個目錄里面。
新建一個目錄,將其初始化為Git代碼庫:
git init [project-name]
2.3、add(把文件添加到暫存區)
2.3.1、添加文件與目錄
工作區(Working Directory)就是你在電腦里能看到的目錄。
版本庫(Repository)工作區有一個隱藏目錄.git
,這個不算工作區,而是Git的版本庫。
Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有Git為我們自動創建的第一個分支master
,以及指向master
的一個指針叫HEAD
。
將untracked狀態的文件添加到暫存區,語法格式如下:
# 添加指定文件到暫存區 $ git add [file1] [file2] ... # 添加指定目錄到暫存區,包括子目錄 $ git add [dir] # 添加當前目錄的所有文件到暫存區 $ git add .
2.3.2、移除文件與目錄(撤銷add)
當執行如下命令時,會直接從暫存區刪除文件,工作區則不做出改變
#直接從暫存區刪除文件,工作區則不做出改變 git rm --cached <file>
2.4、commit(提交)
git commit 主要是將暫存區里的改動給提交到本地的版本庫,即使用 git commit 命令對暫存的內容進行提交;
通過add只是將文件或目錄添加到了index暫存區,使用commit可以實現將暫存區的文件提交到本地倉庫:
git commit -m "更新說明“
2.5、pull(拉取),注:這步可選
如果是多人同時開發維護代碼,得先git pull ,拉取當前分支最新代碼:
git pull
2.6、push(推送)
添加遠程主機,主機名為origin 地址為https://.....
git remote add origin https://.....
下一步,就可以把本地庫的所有內容推送到遠程庫上
git push -u origin master
由於遠程庫是空的,我們第一次推送master
分支時,加上了-u
參數,Git不但會把本地的master
分支內容推送的遠程新的master
分支,還會把本地的master
分支和遠程的master
分支關聯起來,在以后的推送或者拉取時就可以簡化命令
從現在起,只要本地作了提交,就可以通過命令:
git push origin master
如果已經創建則只需要這步就好了。
總結
首次提交代碼到git倉庫:
第一步:git init 初始化項目文件夾
第二步:git add . 鍵所有文件添加到暫存區
第三步:git commit -m "first commit" 提交到本地倉庫
第四步:git remote add origin XXX(XXX就是你github或者碼雲等遠程倉庫的地址,git branch這個命令可以看到你所在的分支,刪除某個倉庫地址使用git remote rm origin)
第五步:git pull 拉取遠程分支信息,首次拉取合並信息
第六步:git push -u -f origin master 提交到遠程倉庫,這個命令中的 -f 是強制推送,因為遠程倉庫只有初始化的文件,所以強制推送上去就行了,不加-f 會報當前分支沒有遠程分支,強制推送可以覆蓋master,這樣就完成了第一次提交的步驟)
如果不是首次提交,就執行以下幾步:
第一步:git add . 鍵所有文件添加到暫存區
第二步:git commit -m "first commit" 提交到本地倉庫
第三步:git pull 拉取遠程分支信息,首次拉取合並信息(可選)
第四步:git push origin master 提交到遠程倉庫