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...