2021-05-12 14:32:11
Git本地基礎操作
2020-06-16 17:56:37
1.Git簡介(安裝與設定)
1.Git的安裝(http://www.git-scm.com/download/)
2.Git設定【git config】
關於git命令的查詢方式:
- git安裝根目錄下/doc/index.html可以查詢,更方便的方式是在使用git時通過help進行有針對性的呼叫。(以查詢config幫助文件為例具體語法為:git config --help/git help config)
- pro git參考文件
- git的已設定資訊都會儲存在使用者目錄(例C:UsersAdministrator)下的.gitconfig檔案中
git設定的三個級別:
system(針對系統)
global (針對當前的使用者)
local (針對當前操作的倉庫)
3.git使用者名稱的增刪改查
- git增加使用者:git config --global --add user.name username
- git刪除使用者:git config --global --unset user.name username
- git查詢使用者:git config --global --list
4.git命令起別名
- git config --global alias.co "checkout"
2.Git工作流程基本操作
0.git檔案型別(檔案物件標識:40個十六進位制字元)
- blob (binary large object):文字檔案,二進位制檔案,連結檔案
- tree:目錄
- commit:歷史提交
- tag:指向一個固定的歷史提交
1.git建立倉庫
- bare_repository:工作區和工作目錄沒有區別。(git init --bare RepositoryName)
- non_bare_repository:在倉庫目錄下有單獨的.git的目錄。(git init RepositoryName)
- 在建立的倉庫目錄下(git init)建立non_bare_repository倉庫,也可以用於將已有的專案納入git的管理。
- 克隆其他倉庫(git clone SourceRepo DestinationRepo)
2.git所管理專案的檔案結構
- working directory(工作區)
- staging area(暫存區):代表需要提交的狀態。
- history repository(歷史倉庫).
3.git對專案檔案的管理
- git add:將檔案從工作區新增到暫存區。
- git commit:將暫存區中的檔案提交為歷史記錄
- git status:檢視工作區和暫存區之間的區別(紅色),暫存區和上次提交歷史記錄的區別(綠色)
- git rm:清理暫存區和工作區中的檔案。(只清楚暫存區中的檔案:git rm --cached FileName)
- git mv:修改工作區中的檔案(重新命名,移動)
- git checkout:從暫存區中將已刪除檔案檢出到工作區;
- gitignore:標明工作區中的指定檔案不被新增到暫存區或歷史記錄中,
對於向暫存區中新增檔案且需要忽略多個檔案的情況,採取的方法是在工作目錄下建立名為.gitignore的檔案,在其中宣告忽略檔案格式如下:
-
- *~:通配臨時檔案。
- *.[oa]:通配字尾名為o或a的檔案。
- *.txt:通配字尾名為txt的檔案。
- folder/:通配名為folder的資料夾。
- **/res:通配各資料夾下的名為res的檔案。
- !test:指明名為test的檔案不被忽略。
- !test1:對於忽略檔名以!開頭的檔案,需加反斜槓""進行跳脫。
4.git的暫存區
- git對於暫存區的內容維護於.git/index檔案中。
5.git的本地分支與合併
- git branch:建立分支。(一般的,分支名如主分支master一般都會指向該分支的最新的一次提交)
- git tag:標記特定打的提交;查詢所建立的tag。(tag分兩種:1.輕量級原生的:git tag "TagName" commitNo. ,2.帶注解可推播至伺服器的:git tag -a "TagName" commitNo.)
- git checkout:在分支間進行切換。(建立分支和切換分支可以融合為一條命令:git checkout -b branchName)。如果checkout至一個tag,那麼此時HEAD所處的狀態是detached,就是說如果你不對此tag建立分支並checkout至新分支,那麼你所做的任何修改及提交都不會被儲存。
- git stash:切換分支之前儲存本地修改<隱形commit>,但又不產生新的commit。(儲存:git stash save -a "stashMessage"。檢視該分支中儲存的修改記錄:git stash list。恢復儲存的記錄:git stash pop --index stash@{No.}。當恢復記錄後,stash所儲存的記錄將不存在。如果想要儲存stash記錄,可以使用:git stash apply --index stash@{No.}。清除stash中的記錄:git stash drop stash@{No.}。清除所有stash:git stash clear。)
- git merge:合併分支。分兩種:一種是fast-forward:兩個記錄是父子關係;non-fast-forward:兩個記錄有共同的父節點,需要先處理衝突後提交合併。(當要合併的分支之中,部分檔案存在衝突,想要放棄合併:git merge --abort。)
- git log:檢視git的歷史提交情況(git log --oneline --decorate --graph --all)
6.檢視和對比歷史記錄
- git show:顯示提交資訊
- git log:顯示紀錄檔
- git diff:比較差異(比較當下工作區和最近一次提交版本之間的差別)
7.復原修改
- git checkout:還原工作區(用暫存區中的記錄來還原工作區,如git status有modified記錄,此命令可復原修改)
- git reset:還原暫存區(使用某次遞交結果來還原暫存區)
- git clean:移除工作目錄中未提交和未新增至暫存區中的檔案(git clean -n顯示將要刪除的檔案,git clean -f刪除檔案,git clean -df刪除檔案和目錄。對於需要清除git工作目錄下.gitignore檔案中忽略的檔案,git clean -n -X檢視將會刪除的.gitignore中的忽略檔案)
- git revert:產生新的提交並覆蓋之前提交的修改
8.重寫歷史記錄
- git commit --amend:重寫當前所指向的歷史提交
-
- 指向某次提交前的若干版本:([版本指標]~:該版本指標所指向版本的前一個版本。[版本指標]^n:該版本指標所指向版本的前n個版本 )
- git rebase:維護線性歷史,類似於git merge。
- git reset:(git reset --hard [歷史提交]:將暫存區和工作區還原成制定的歷史提交,並移動HEAD指標。git reset --mixed:還原暫存區,並移動HEAD指標,--mixed為預設命令。git reset --soft [歷史提交]:只移動HEAD指標。)
- git reflog:列出HEAD所指向的歷史紀錄。
相關文章