Git的日常使用總結

2021-08-28 12:23:46 字數 4312 閱讀 1978

git是乙個分布式的版本控制系統,可以用於管理專案。使用git的操作主要有從資源庫中轉殖資源,對轉殖的專案作新增或修改,並且可以檢視改動了哪些內容,最後可以將這些修改通過推送操作提交到資源庫中。此外,提交的修改可以撤消並重新提交。

工作區:即電腦中能看到的目錄。

版本庫:工作區的隱藏目錄.git,是git的版本庫,且不屬於工作區,包含了index和head等重要檔案。

暫存區:存放於.git目錄下的index檔案中,包含有一棵目錄樹。用於儲存修改過但未正式提交的檔案。

物件庫:位於.git/objects目錄中,裡面包含了建立的各種物件及內容。

分支:專案的每一次提交串起來可以形成一條時間線,這條線可能會在某個節點出現分岔,而這些每乙個分岔都是乙個分支,乙個專案可能存在多個分支。其中最早建立的時間線叫主分支(master分支)。master指向該時間線上的最新一次提交,每次提交時master都會向前移動。每一條分支都可以由該分支上最新的那次提交來確定。

head:head相當於乙個指標,指向專案當前的版本,也即指向當前分支。

git init

$ git init

或$ git init [target]

這個命令用來建立並初始化乙個git倉庫。進入所選的資料夾,執行git init命令即可建立。或者在執行git init 時加上目標目錄的路徑來在該目錄進行建立。建立之後該資料夾中會生成乙個.git子目錄,這個目錄用於跟蹤版本管理庫,包含了資源的所有源資料,之後的許多操作都依賴此目錄中的內容。

git clone

$ git clone [url]
這個命令用於將乙個已有的git倉庫拷貝到本地,即用於複製乙個專案。

比如對於github上的專案,使用其clone的url來執行git clone即可將該項目的所有內容拷貝到本地目錄中。

另外轉殖時可以自己重新定義專案的名稱,在指令中url後面加上該名稱即可。

git status

可以用於檢視專案的當前狀態,也可以檢視自上次提交後專案是否有修改。

git diff

可以檢視git status的結果的詳細資訊

$ git diff                   (檢視工作區中的改動)

$ git diff --cached (檢視暫存區中已快取的改動)

$ git diff head (檢視工作區與版本庫中最新版本的區別)

$ git diff --stat (顯示摘要)

git add
$ git add (新增指定檔案)

$ git add . (新增所有檔案)

可以用於向專案中新增指定的檔案,或新增當前專案的所有檔案。執行git add後,暫存區的目錄樹被更新,同時物件庫也會更新。其中物件庫中會產生乙個新的物件,其內容即為git add命令的目標檔案的內容,且這個物件的id會被記錄到暫存區的檔案索引中。因此暫存區中會包含有工作區中專案的改動的資訊。

git commit

用於提交更改,執行後暫存區的目錄樹會寫到版本庫(物件庫)中,master分支會相應地更新。

在進行提交之前,需要先配置使用者名稱和郵箱,因為每次提交都要記錄名字和郵箱位址。

$ git config --global user.name 'drawspirit'

$ git config --global user.email [email protected]

提交時加上-m可以直接在命令列中進行注釋,否則會進入vim編輯器介面編寫提交資訊。

$ git commit -m "add a new ......"
使用commit進行提交是從暫存區寫到版本庫中,因此只有修改並且add過的內容才會被提交。

git push

$ git push
可以將本地的提交推送到相應的遠端庫上(比如github專案)。

git reset head

$ git reset head
執行此命令時暫存區的目錄樹會被master分支指向的目錄樹替換。也就是將暫存區中的修改全部撤銷。

git rm

可以用於刪除檔案。

$ git rm
直接使用rm刪除或在檔案管理器中手動刪除檔案時,檔案將從工作區中刪除,git status指令會告知哪些檔案被刪除。如果此時執行git commit,則版本庫中的相應檔案也會被刪除。

如果想要將檔案從暫存區刪除而工作區仍保留,則在指令後加上–cached。

$ git rm --cached
git mv
$ git mv [file_name] [target_name]
可以用於移動或重新命名乙個檔案或目錄。

git checkout

$ git checkout .

$ git checkout --

此命令可以用暫存區中全部或指定的檔案替換工作區中對應的檔案。也就是將該檔案在工作區中的修改全部撤銷,即使其回到最近一次add或commit後的狀態。此外checkout還能用於切換當前分支,加上引數-b還能用於建立分支。

git log

此命令可以顯示提交日誌,即提交的各個歷史版本。列出來的資訊包括commit_id,即版本號,可以用於版本回退,使用git reset --head就能回退到這些版本中的某乙個。

git reset --hard commit_id
進行該操作時,實際上是改變head的指向。

建立分支

$ git checkout -b branch_name
該命令會建立乙個名為branch_name的新分支,然後顯示switch to a new branch 'branch_name'表示當前以切換到該分支上。(實際上加上引數-b相當於git branch branch_name加上git checkout branch_name

檢視分支

$ git branch
此命令列出所有分支,並且當前所在分支的前面會有*號。如果你的git bash有高亮的話當前分支還會顯示不同的顏色。

合併分支

$ git merge branch_name
此命令可以將指定的分支合併到當前分支上。

使用git log時加上–graph引數可以檢視分支合併圖。

刪除分支

$ git branch -d branch_name
這條命令會刪除指定的分支。要注意的是不能用這條命令刪除當前分支,否則會報錯,因此想要刪除某個分支時先要切換到別的分支上。

衝突當在兩個分支上對同一內容做了不同的修改時,若要將二者合併,就會產生衝突。此時git無法自動合併分支,需要手動解決衝突。

當在工作區中對專案進行了修改並確認後,先使用git add儲存修改到暫存區,然後用git commit提交到版本庫以更新版本,最後用git push將本地提交推送到遠端庫中。

當想要放棄當前在工作區中的修改時,使用git checkout --可以撤銷該修改,使工作區回到之前的狀態。

當已經git add之後想放棄修改時,可以先git reset head然後再git checkout --

當已經git commit之後想放棄修改時,則使用git log列出歷史版本,找到想要回到的版本的commit_id,然後git reset --hard commit_id即可回退到該版本。

當想要工作的過程更加安全時,可以選擇新建分支,在新的分支上進行操作,這樣就不會對主分支造成影響,當確認了新分支的內容之後,就可以將其合併到主分支,再將該新分支刪除。

當兩個分支出現衝突時,將無法自動合併,這時需要將合併失敗的檔案手動修改為新的內容後再提交,才能合併。

Git 日常使用總結

git遠端倉庫 分支管理 安裝git 設定機器的使用者名稱和郵箱位址 git config global user.name username git config global user.email email 其中 global引數表示該台機器所有git倉庫都會使用這個配置。新建個檔案 通過gi...

git日常使用總結

1.提交 git add 代表新增所有檔案到本地。如只新增特定檔案則指定需新增的特定檔案 git commit git commit m 備註 提交到本地 git push git push origin 本地分支名 遠端分支名 提交到遠端 git pull rebase 從遠端拉下 與push功能...

git的日常使用

1 新建乙個資料夾 2 初始化 git init 3 與遠端origin master建立聯絡 git remote add origin 表示位址 4 把遠端分支拉到本地 git fetch origin dev dev是遠端倉庫分支名 5 在本地建立分支dev並且切換到該分支 git check...