Git命令使用大全

2022-02-26 03:43:22 字數 4880 閱讀 7724

一前言

最近公司在使用vue和webapi前後端分離的專案開發,使用的**管理工具是git,剛開始使用的時候前端的vue檔案還比較好處理,但是後端的c#檔案在每一次自己編譯之後上傳都會和其他小夥伴的**衝突,有幾次甚至覆蓋了他們本地的**。中間想著要不要把專案分開管理呢,後來老大說讓我們試著接受,慢慢的去學著使用。後來學著將c#的一些編譯檔案忽略掉,這樣每次就不會將它們提交到伺服器上了。然後就是,將git的命令總結整理如下。

另外,推薦兩個相輔的git使用工具

1.初始化乙個git倉庫,使用git init命令。

新增檔案到git倉庫,分兩步:

使用命令git add ,注意,可反覆多次使用,新增多個檔案;

使用命令git commit -m ,完成。

(git add命令實際上就是把要提交的所有修改放到暫存區(stage),

然後,執行git commit就可以一次性把暫存區的所有修改提交到分支。

git跟蹤的是修改,每次修改,如果不用git add到暫存區,那就不會加入到commit中。)

2.檢視工作區檔案具體內容

要隨時掌握工作區的狀態,使用git status命令。

如果git status告訴你有檔案被修改過,用git diff可以檢視修改內容。

git diff head -- readme.txt命令可以檢視工作區和版本庫裡面最新版本的區別

3.版本回退

git必須知道當前版本是哪個版本,在git中,用head表示當前版本,上乙個版本就是head^,上上乙個版本就是head^^,

當然往上100個版本寫100個^比較容易數不過來,所以寫成head~100。git reset --hard head^

或者,head指向的版本就是當前版本,因此,git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id。

穿梭前,用git log可以檢視提交歷史,以便確定要回退到哪個版本。

(如果嫌輸出資訊太多,看得眼花繚亂的,可以試試加上--pretty=oneline引數:$ git log --pretty=oneline)

要重返以前,用git reflog檢視命令歷史,以便確定要回到之前的哪個版本。

git跟蹤的是修改,每次修改,如果不用git add到暫存區,那就不會加入到commit中。

4.修改

命令git checkout -- readme.txt意思就是,把readme.txt檔案在工作區的修改全部撤銷

(git checkout -- readme.txt命令中的--很重要,沒有--,就變成了「切換到另乙個分支」的命令)

git reset head readme.txt可以把暫存區的修改撤銷掉(unstage),重新放回工作區

場景1:當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout -- file。

場景2:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,

第一步用命令git reset head ,就回到了場景1,第二步按場景1操作。

場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退git reset --hard 1094a,

不過前提是沒有推送到遠端庫。

5.刪除6.建立分支

使用命令:git checkout -b dev 建立名為dev的分支,然後切換到dev分支

git checkout命令加上-b引數表示建立並切換,相當於以下兩條命令:

$ git branch dev

$ git checkout dev

使用git branch命令可以檢視當前分支,git branch命令會列出所有分支,當前分支前面會標乙個*號。

然後,我們就可以在dev分支上正常提交

切換回master分支:$ git checkout master

git merge命令用於合併指定分支到當前分支:把dev分支的工作成果合併到master分支上:$ git merge dev

合併完成後,就可以放心地刪除dev分支了:$ git branch -d dev

7.解決衝突

用帶引數的git log也可以看到分支的合併情況:

$ git log --graph --pretty=oneline --abbrev-commit (後面的引數表示一行簡寫內容)

當git無法自動合併分支時,就必須首先解決衝突。解決衝突後,再提交,合併完成。

解決衝突就是把git合併失敗的檔案手動編輯為我們希望的內容,再提交。

用git log --graph命令可以看到分支合併圖。

8.分支管理策略

通常,合併分支時,如果可能,git會用fast forward模式,但這種模式下,刪除分支後,會丟掉分支資訊。

如果要強制禁用fast forward模式,git就會在merge時生成乙個新的commit,這樣,從分支歷史上就可以看出分支資訊。

合併dev分支,請注意--no-ff引數,表示禁用fast forward:$ git merge --no-ff -m "merge with no-ff" dev

因為本次合併要建立乙個新的commit,所以加上-m引數,把commit描述寫進去。

合併分支時,加上--no-ff引數就可以用普通模式合併,合併後的歷史有分支,能看出來曾經做過合併,

而fast forward合併就看不出來曾經做過合併。

9.bug分支10.推送分支

就是把該分支上的所有本地提交推送到遠端庫。

推送時,要指定本地分支,這樣,git就會把該分支推送到遠端庫對應的遠端分支上:$ git push origin master

如果要推送其他分支,比如dev,就改成:$ git push origin dev

並不是一定要把本地分支往遠端推送,那麼,哪些分支需要推送,哪些不需要呢?

master分支是主分支,因此要時刻與遠端同步;

dev分支是開發分支,團隊所有成員都需要在上面工作,所以也需要與遠端同步;

bug分支只用於在本地修復bug,就沒必要推到遠端了,除非老闆要看看你每週到底修復了幾個bug;

feature分支是否推到遠端,取決於你是否和你的小夥伴合作在上面開發。

總之,就是在git中,分支完全可以在本地自己藏著玩,是否推送,視你的心情而定!

11.抓取分支

檢視遠端庫資訊,使用git remote -v;

本地新建的分支如果不推送到遠端,對其他人就是不可見的;

從本地推送分支,使用git push origin branch-name,如果推送失敗,先用git pull抓取遠端的新提交;

在本地建立和遠端分支對應的分支,使用git checkout -b branch-name origin/branch-name,

本地和遠端分支的名稱最好一致;

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

從遠端抓取分支,使用git pull,如果有衝突,要先處理衝突。

rebase

rebase操作的特點:把分叉的提交歷史「整理」成一條直線,看上去更直觀。缺點是本地的分叉提交已經被修改過了。

rebase操作可以把本地未push的分叉提交歷史整理成直線;

rebase的目的是使得我們在檢視歷史提交的變化時更容易,因為分叉的提交需要三方對比。

13.建立標籤

在git中打標籤非常簡單,首先,切換到需要打標籤的分支上:

$ git branch

$ git checkout master

然後,敲命令git tag 就可以打乙個新標籤:

$ git tag v1.0

還可以建立帶有說明的標籤,用-a指定標籤名,-m指定說明文字:

$ git tag -a v0.1 -m "version 0.1 released" 1094adb

可以用命令git tag檢視所有標籤:$ git tag

預設標籤是打在最新提交的commit上的。

有時候,如果忘了打標籤,比如,現在已經是周五了,但應該在周一打的標籤沒有打,怎麼辦?

方法是找到歷史提交的commit id,然後打上就可以了,先查詢commit id:$ git log --pretty=oneline --abbrev-commit

比方說要對備註說明為add merge這次提交打標籤,它對應的commit id是f52c633,敲入命令:

$ git tag v0.9 f52c633

注意,標籤不是按時間順序列出,而是按字母排序的。可以用git show 檢視標籤資訊:

$ git show v0.9

注意:標籤總是和某個commit掛鉤。如果這個commit既出現在master分支,又出現在dev分支,

那麼在這兩個分支上都可以看到這個標籤。

操作標籤

如果標籤打錯了,也可以刪除:

$ git tag -d v0.1

如果要推送某個標籤到遠端,使用命令git push origin :

$ git push origin v1.0

或者,一次性推送全部尚未推送到遠端的本地標籤:

$ git push origin --tags

如果標籤已經推送到遠端,要刪除遠端標籤就麻煩一點,先從本地刪除:

$ git tag -d v0.9

然後,從遠端刪除。刪除命令也是push,但是格式如下:

$ git push origin :refs/tags/v0.9

Git 命令大全

git 的特點 1.關注檔案的整體變化 2.git 更像是把變化的檔案作快照後,記錄在乙個微型的檔案系統中。每次提交更新時,它會縱覽一遍所有檔案的指紋資訊並對檔案作一快照,然後儲存乙個指向這次快照 的索引。為提高效能,若檔案沒有變化,git 不會再次儲存,而只對上次儲存的快照作一鏈結。基本的 git...

git命令大全

公司使用了github 特意從網上總結下常用的git命令,備用 1 遠端倉庫相關命令 檢出倉庫 git clone git 首次開發必用 檢視遠端倉庫 git remote v 新增遠端倉庫 git remote add name url 刪除遠端倉庫 git remote rm name 修改遠端...

git命令大全

git 是乙個很強大的分布式版本控制系統。它不但適用於管理大型開源軟體的源 管理私人的文件和源 也有很多優勢。git常用操作命令 1 遠端倉庫相關命令 檢出倉庫 git clone git 檢視遠端倉庫 git remote v 新增遠端倉庫 git remote add name url 刪除遠端...