002.Git日常基礎使用
阿新 • • 發佈:2018-11-05
一 獲取git倉庫
1.1 初始化倉庫
1 [[email protected] ~]# cd /mystudy/ 2 [[email protected] mystudy]# git init 3 [[email protected] mystudy]# git remote add origin https://gitee.com/imxhy/mystudy
1.2 克隆現有倉庫
1 [[email protected] mystudy]# git clone https://gitee.com/xiyouMc/pornhubbot2 [[email protected] mystudy]# git clone https://gitee.com/xiyouMc/pornhubbot mystudy #clone專案,同時本地建立mystudy目錄。
二 倉庫相關
2.1 檢查狀態
工作目錄下的檔案只有兩種狀態:已跟蹤和未跟蹤。 已跟蹤:指檔案在上一次快照中有對應的記錄,當前狀態可能處於未修改,已修改或已放入暫存區。 未跟蹤:目錄中的除已跟蹤的其他檔案都屬於未跟蹤檔案,既不存在於上次快照的記錄中,也沒有放入暫存區。 未跟蹤——>已跟蹤未修改——>暫存區(修改後暫存)——>git倉庫(提交更新)1 [[email protected] mystudy]# echo 'My Project' > README 2 [[email protected] mystudy]# git status提示:Untracked files:未跟蹤檔案列表,即之前快照(提交)中沒有此檔案,git預設不會自動納入跟蹤範圍。
2.2 跟蹤新檔案
1 [[email protected] mystudy]# git add README 2 [[email protected]提示:Changes to be committed:已暫存狀態的檔案。mystudy]# git status
2.3 暫存已修改檔案
1 [[email protected] mystudy]# echo "This is my test file">>README 2 [[email protected] mystudy]# git status提示:Changes not staged for commit:跟蹤的檔案內容發生變化,此次變更未放入暫存區。 git add:此命令可以用它開始跟蹤新檔案,或者把已跟蹤的檔案放到暫存區,還能用於合併時把有衝突的檔案標記為已解決狀態等。即“新增內容到下一次提交中”,而不是“將一個檔案新增到專案中”。
1 [[email protected] mystudy]# git add README #新增至暫存區提示:若使用git add新增至暫存區之後再次進行修改,檔案會處於暫存區和非暫存區。暫存區儲存上一次add後的版本,非暫存區標記最後一次修改版本,建議進行提交之前add一次。
2.4 狀態簡覽
1 [[email protected] mystudy]# git status -s提示: ??:新新增暫未跟蹤檔案; A:新新增到暫存區中的檔案; M:已修改過的檔案,若出現在右邊,則表示該檔案被修改了但是還沒放入暫存區,若出現在左邊,則表示該檔案被修改了並放入了暫存區。
2.5 忽略檔案
1 [[email protected] mystudy]# cat .gitignore*.[oa] #忽略所有以.o或.a結尾的檔案; *~ #忽略所有以波浪符結尾的檔案; *.log #忽略所有以.log結尾的檔案。 附1:.gitignore 的格式規範如下:
- 所有空行或者以 # 開頭的行都會被 Git 忽略。
- 可以使用標準的 glob 模式匹配,即簡化正則表示式。
- 匹配模式可以以(/)開頭防止遞迴。
- 匹配模式可以以(/)結尾指定目錄。
- 要忽略指定模式以外的檔案或目錄,可以在模式前加上驚歎號(!)取反。
- 星號(*):匹配零個或多個任意字元;
- [abc] :匹配任何一個列在方括號中的字元;
- 問號(?):只匹配一個任意字元;
- [0-9]:匹配0至9範圍內的任意數字;
- **: 使用兩個星號(*) 表示匹配任意中間目錄,比如`a/**/z` 可以匹配 a/z, a/b/z 或 `a/b/c/z`等。
2.6 檢視已暫存和未暫存修改
1 [[email protected] mystudy]# echo "Hello" > README 2 [[email protected] mystudy]# echo "Hello" > CONTRIBUTING.md 3 [[email protected] mystudy]# git add README 4 [[email protected] mystudy]# git status解釋:修改以上兩個問題,但對CONTRIBUTING.md檔案未暫存,然後檢視狀態,是已修改未暫存。
1 [[email protected] mystudy]# git diff #通過git diff檢視具體做了哪些修改。提示:git diff命令比較的是工作目錄中當前檔案和暫存區域快照之間的差異, 也就是修改之後還沒有暫存起來的變化內容。 注意:git diff本身只顯示尚未暫存的改動,而不是自上次提交以來所做的所有改動。
2.7 提交更新
1 [[email protected] mystudy]# git status提示:提交之前建議檢查是否所有需要提交的檔案都已處於暫存區,否則提交的時候不會記錄這些還沒暫存起來的變化。
1 [[email protected] mystudy]# git commit解釋:此種方式會啟動文字編輯器以便輸入本次提交的說明,說明通常位於開頭空行位置。
2.8 跳過暫存區
預設git只會將所有暫存區的檔案進行提交,但可通過git commit -a選項,git會自動把所有已經跟蹤過的檔案暫存起來一併提交,從而跳過 git add 步驟。2.9 移除檔案
- 正常git刪除操作:即從git移除同時從工作目錄刪除使用git rm。
- rm刪除後的git移除:rm檔案後,再使用git rm [檔案]。
- 放入暫存區之後rm刪除檔案的git移除:git rm -f [檔案]。
- 從git倉庫刪除但保留在本地目錄:git rm --cached [檔案]。
2.10 移動檔案
1 [[email protected] mystudy]# git mv README README.md相當於以下三條命令:
1 $ mv README README.md 2 $ git rm README 3 $ git add README.md
三 檢視提交歷史
1 [[email protected] mystudy]# git log
四 撤銷操作
4.1 重新提交
有時候我們提交完了才發現漏掉了幾個檔案沒有新增,或者提交資訊寫錯了。 此時,可以執行帶有 --amend 選項的提交命令嘗試重新提交。1 [[email protected] mystudy]# git commit -m 'first commit' 2 [[email protected] mystudy]# echo "This is my test 3 file" > README3.md 3 [[email protected] mystudy]# git add README3.md 4 [[email protected] mystudy]# git commit --amend -m 'second commit'解釋:第一次提交後,發現我們需要再新增一個檔案進行提交,可通過以上方式,會使用第二次提交代替第一次提交結果。
4.2 取消暫存區檔案
1 [[email protected] mystudy]# echo "This is my test 4 file" > README4.md 2 [[email protected] mystudy]# echo "This is my test 5 file" > README5.md 3 [[email protected] mystudy]# git add * 4 [[email protected] mystudy]# git status 5 [[email protected] mystudy]# git reset HEAD README5.md #從暫存區取消特定檔案
4.3 撤銷對檔案的修改
1 [[email protected] mystudy]# echo "version 1.1" > version.md 2 [[email protected] mystudy]# git add version.md 3 [[email protected] mystudy]# git commit -m 'version commit' 4 [[email protected] mystudy]# echo "version 2.2" > version.md 5 [[email protected] mystudy]# git status
1 [[email protected] mystudy]# cat version.md 2 version 2.2 3 [[email protected] mystudy]# git checkout -- version.md 4 [[email protected] mystudy]# git status解釋:建立一個檔案,提交之後再次修改,然後撤銷此次修改,回滾至上一次提交的版本。
五 遠端倉庫的使用
為了能在任意 Git 專案上協作,管理自己的遠端倉庫非要有必要。遠端倉庫是指託管在因特網或其他網路中的你的專案的版本庫。通常有些倉庫對你只讀,有些則可以讀寫。與他人協作涉及管理遠端倉庫以及根據需要推送或拉取資料。管理遠端倉庫包括瞭解如何新增遠端倉庫、移除無效的遠端倉庫、管理不同的遠端分支並定義它們是否被跟蹤等等。5.1 檢視遠端倉庫
1 [[email protected] mystudy]# git remote -v
5.2 新增遠端倉庫
1 [[email protected] mystudy]# mkdir /mystudy2 2 [[email protected] mystudy]# cd /mystudy2 3 [[email protected] mystudy2]# git init 4 [[email protected] mystudy2]# git remote add mystudy2 https://gitee.com/imxhy/mystudy2 5 [[email protected] mystudy2]# git fetch mystudy2 #使用別名拉取倉庫存在但本地沒有的檔案解釋:git remote add <shortname> <url> 新增一個遠端Git倉庫,同時指定一個你可以輕鬆引用的簡寫。
5.3 從倉庫抓取與拉取
git fetch [remote-name]:從倉庫中拉取所有本地沒有的資料。 執行完成後,你將會擁有那個遠端倉庫中所有分支的引用,可以隨時合併或檢視。 注意:必須注意 git fetch 命令會將資料拉取到你的本地倉庫 - 它並不會自動合併或修改你當前的工作。5.4 推送至遠端倉庫
1 [[email protected] mystudy2]# git push mystudy2 mystudy2/master
5.5 檢視遠端倉庫
1 [[email protected] mystudy2]# git remote show mystudy2解釋:會列出遠端倉庫的URL與跟蹤分支的資訊。顯示當前正處於master分支,並且如果執行git pull,則會抓取所有的遠端引用,然後將遠端master分支合併到本地master分支。它也會列出拉取到的所有遠端引用。
5.6 遠端倉庫移除與重新命名
1 [[email protected] mystudy2]# git remote rename mystudy2 study2 2 [[email protected] mystudy2]# git remote 3 study2提示:修改遠端倉庫名字後會同時修改分支名,如mystudy2/aaa會變味study2/aaa。
1 [[email protected] mystudy2]# git remote rm study2 2 [[email protected] mystudy2]# git remote
六 git別名
6.1 設定別名
1 [[email protected] mystudy]# git config --global alias.co checkout 2 [[email protected] mystudy]# git config --global alias.br branch 3 [[email protected] mystudy]# git config --global alias.ci commit 4 [[email protected] mystudy]# git config --global alias.st status解釋:如上所示,使用別名後,在執行git commit 時,只需要輸入 git ci。