Git 日常使用總結

2021-09-24 21:10:28 字數 4266 閱讀 9840

git遠端倉庫

分支管理

安裝git

設定機器的使用者名稱和郵箱位址

$ git config --global user.name "username"

$ git config --global user.email "email"

其中–global引數表示該台機器所有git倉庫都會使用這個配置。

新建個檔案

通過git init該目錄變成git可以管理的倉庫

##git檔案管理

本地建立乙個檔案,如test.txt

$ git add test.txt //將檔案要提交的所有修改放到暫存區,準備提交,如果不新增到暫存區,檔案就是untracked狀態, git就無法跟蹤檔案的修改

$ git commit -m "explanation" //將所有檔案提交到分支,其中-m指的是後面的輸入是本次提交的說明

假如新建了多個檔案,可以多次使用add指令,再commit一次,如

$ git add file1.txt

$ git add file2.txt file3.txt

$ git commit -m "add 3 files."

由於git跟蹤並管理的是修改,所以在修改檔案時,修改完成需要先使用add,再使用commit,否則修改無法提交。

如第一次修改–>add–>第二次修改–>commit,第二次修改並不會被提交,同步到git的只有第一次修改

$ git status //檢視倉庫當前狀態,獲取檔案增刪改資訊(只能知道哪個檔案被修改了,但不知道修改了什麼)

$ git diff test.txt //檢視test.txt檔案與上次修改的不同在哪

常用兩者來避免錯誤的修改,檢查無誤之後就可以通過add和commit指令新增到git上

$ git log //檢視修改日誌

$ git log --pretty=oneline //只看版本號和提交說明(簡略版日誌)

在git中,用head表示當前版本,head^表示上乙個版本,head^^表示上上個版本,head~100表示上100個版本

$ git reset --hard head^ //回退到上乙個版本

$ git reset --hard ***xx //回到未來的版本,其中***x為該版本版本號(commit id)的前幾位

$ git reflog //檢視歷史所有版本,通過該命令即使回到了歷史版本也能找到未來版本的版本號,方便回到未來版本

$ git checkout -- test.txt //把test.txt檔案在工作區的修改全部撤銷(使用commit提交前)
如果檔案test.txt修改後沒有放到暫存區,即還沒有使用add指令,撤銷修改就回到和版本庫一模一樣的狀態;

如果檔案test.txt已經放到了暫存區,又作了修改,撤銷修改就回到新增到暫存區後的狀態。

$ git reset head test.txt //把暫存區的修改撤銷掉,重新放回工作區
前者是丟棄工作區修改,後者是丟棄暫存區修改

在本地刪除檔案test.txt

$ git rm test.txt //在版本庫中刪除檔案

$ git commit //提交

倘若在本地誤刪了檔案,可以通過指令

$ git checkout -- test.txt  //還原誤刪檔案
遠端倉庫,即讓github充當伺服器免費託管git倉庫。可以讓本地和github上的git倉庫遠端同步,這樣既能讓github上的倉庫作為備份,又可以讓其他人通過該倉庫來協作。

用於本地庫已存在,要新建個遠端庫

在github上選擇create repository建立新的git倉庫

在本地相應的git倉庫上執行命令:

$ git remote add origin [email protected]:username/projectname.git  //將本地已有倉庫與github上新建的git倉庫相關聯,username是github賬戶名,projectname是倉庫名

$ git push -u origin master //將當前分支master推送到遠端庫中,加上-u使git在將本地master分支內容推送到遠端新的master分支的同時,將本地和遠端的master分支關聯起來,以後推送拉取時刻簡化命令

今後本地做了提交,只需通過命令:

$ git push origin master //把本地master分支的最新修改推送到github

用於遠端庫已存在,要新建個本地庫

$ git clone [email protected]:username/projectname.git //方法一

$ git clone //方法二

$ git branch name		//建立新的分支,name為分支名稱

$ git checkout name //切換到分支name

$ git checkout -b name //建立並切換到分支name,即前兩條指令的合併

$ git branch //檢視分支,其中當前分支前面會標上*號

$ git merge name //將分支name合併到當前分支

$ git branch -d name //將分支name刪除

合併分支時,git會盡可能用fast forward模式,即更換指標指向,該模式下,刪除分支會丟掉分支資訊。但是可以用指令$ git merge --no--ff name強制禁用fast forward模式

衝突的出現是因為兩個分支提交內容不一致且不能通過改變指標指向解決,此時git會告訴我們發生了衝突,使用$ git status可以檢視衝突檔案,cat test.txt可以檢視衝突位置,手動修改解決衝突之後,再提交就能完成合併。

$ git log --graph --pretty=oneline --abbrev-commit	//檢視分支合併情況,分支合併圖
當然,通過視覺化git管理軟體如sourcetree等解決衝突會方便得多

master分支是非常穩定的,也就是僅用來發布新版本,平時不能在上面幹活;

dev分支是不穩定的,幹活都在dev分支上,到版本發布時,再把dev分支合併到master上,在master分支發布;

團隊每個人都在dev分支上幹活,每個人都有自己的分支,時不時地往dev分支上合併就可以了。

$ git stash			//儲藏工作現場

$ git stash list //檢視儲藏的工作現場列表

$ git stash drop //刪除stash內容

$ git stash pop //恢復工作現場的同時刪除stash內容

修復bug時,我們會通過建立新的bug分支進行修復,然後合併,最後刪除;

當手頭工作沒有完成時,可以通過指令$ git stash把當前工作現場「儲藏」起來,然後去修復bug,修復後,再通過指令$ git stash pop,恢復工作現場。

新增新功能時,最好新建乙個分支。

丟棄乙個沒有被合併過的分支,可以通過指令$ git branch -d name實現(注意是大寫d)。

$ git remote				//檢視遠端倉庫的資訊

$ git remote -v //檢視遠端倉庫的詳細資訊

$ git push origin master //推送分支,就是把該分支上的所有本地提交推送到遠端庫。推送時,要指定本 //地分支,如master,git會把該分支推送到遠端庫對應的遠端分支上

$ git pull //從遠端抓取分支

$ git checkout -b name origin/name //在本地建立和遠端分支對應的分支,name為分支名

$ git branch --set-upstream name origin/name //建立本地分支和遠端分支的關聯

git日常使用總結

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

Git的日常使用總結

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

git使用日常

1.關於git手動刪除檔案如何處理 執行命令 git add a 或者git add all 進行全文新增,然後commit 2.關於git首次使用新增使用者命令 git config global user.name yangchuan git config global user.email y...