1. 程式人生 > 實用技巧 >git日常操作

git日常操作

git工作流

圖片來源忘記哪裡截的了,不好意思

公眾號 知識追尋者,領取配套視訊教程,原創PDF,面試題集

配置賬號

第一次使用git需要配置賬號郵箱用於提交程式碼

$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"

示例

$ git config --global user.name "zszxz"
$ git config --global user.email "[email protected]"

忽略提交檔案

.gitignore

.gitignore檔案是配置忽略提交的資訊

初始化倉庫

當使用 git init 命令時會初始化一個git倉庫,其中有個隱藏目錄 .git 記錄了git版本資訊,它被稱為版本倉庫,;

當然也可以在 git init 命令後面加上目錄名稱,初始化的時候會自動建立目錄

示例

git init demo

進入 demo 目錄就可以看見 .git 隱藏目錄

demo 目錄所在的地方就被稱為工作區

新增檔案

此時在demo目錄下新建一個檔案為 zszxz.txt, 內容為:你好啊; 此時的檔案在工作區,未新增到暫存區

執行 新增命令 , 將 檔案新增至暫存區

# 新增指定檔案到暫存區
$ git add [file1] [file2] ...

# 新增指定目錄到暫存區,包括子目錄
$ git add [dir]

# 添加當前目錄的所有檔案到暫存區
$ git add .

示例

git add  zszxz.txt

當然要添加當前目錄所有檔案可以使用如下命令

git add .

提交檔案

執行提交命令,將內容提交到本地倉庫,此時檔案的狀態會從 已暫存 轉到 已提交;

-m 表示提交的資訊

$ git commit -m [message]

示例

git commit -m "introduction file"

提交後,預設會建立一個分支名未master的主分支;

修改檔案

如果 對 zszxz.txt 檔案再次進行修改內容為 : 你好知識追尋者,檔案則會從已提交狀態 變為已修改;

當修改完成後,我們還需要對修改過的檔案重新提交;

git add .
git commit -m "update file"

新增遠端倉庫

新增遠端倉庫用於程式碼從本地倉庫推送至遠端倉庫

# 增加一個新的遠端倉庫,並命名
$ git remote add [shortname] [url]

示例

git remote add origin [email protected]:lsc180/git-demo.git

程式碼推送

將程式碼推送至遠端倉庫

# 上傳本地指定分支到遠端倉庫
$ git push [remote] [branch]

# 強行推送當前分支到遠端倉庫,即使有衝突
$ git push [remote] --force

# 推送所有分支到遠端倉庫
$ git push [remote] --all

示例

git push origin master

遠端倉庫變化

程式碼拉取

當遠端倉庫程式碼發生變化時,我們使用拉取命名拉取程式碼會和本地的程式碼合併;

# 取回遠端倉庫的變化,並與本地分支合併
$ git pull [remote] [branch]

示例

手動在碼雲新增檔案test

使用拉取命令拉取程式碼

$ git pull origin master

本地檔案變化

程式碼克隆

拉去別人程式碼時 就需要 克隆命令

# 下載一個專案和它的整個程式碼歷史
$ git clone [url]

示例

刪除整個demo目錄下的檔案

拉去程式碼

$ git clone https://gitee.com/lsc180/git-demo.git

檢視提交日誌

命令

# 從最新提交開始,顯示所有的提交記錄(顯示hash, 作者資訊,提交的標題和時間)
$ git log
# 顯示某個使用者的所有提交
$ git log --author="username"

# 顯示某個檔案的所有修改
$ git log -p <file>

示例

檢視所有提交的歷史記錄日誌資訊

git log

檢視檔案狀態

在工作區新建一個 kk.txt檔案使用檢視狀態命令

$ git status

會提示你該檔案使用add命令新增至暫存區

新增檔案後 紅色字型檔名會變綠色

提交檔案後會顯示一個檔案已經提交,工作區很乾淨;

顯示差異

對kk.txt 檔案新增 內容使用 檢視差異命令可以顯示出 檔案的變動

# 顯示暫存區和工作區的差異
$ git diff

# 顯示暫存區和上一個commit的差異
$ git diff --cached [file]

# 顯示工作區與當前分支最新commit之間的差異
$ git diff HEAD

示例

git diff

使用git status 命令 顯示檔案已經修改

撤銷

撤銷本地工作區修改

放棄某個檔案的所有本地修改

$ git checkout HEAD <file>

示例

剛剛我們對 kk.txt 添加了內容,還未將修改提交,此時我們不想修改kk.txt檔案內容了就可以使用如下命令

$ git checkout kk.txt

如果放棄對整個工作區的修改就可以使用如下命令

# 恢復暫存區的所有檔案到工作區
$ git checkout .

撤銷提交內容

我們對kk.txt 檔案新增內容並且提交

然後執行撤銷命令

# 重置暫存區與工作區,與上一次commit保持一致
$ git reset --hard

示例

檢視版本命令

$ git reflog

撤銷kk提交內容,即回退到版本 2629fd8

git reset --hard 2629fd8 

回退到上一個版本命令如下,也能達到這個效果;

// 回到過去
git reset --hard HEAD^

重新檢視,我們移動了版本,說明我們可以使用這種方式進行任何版本的跳躍

撤銷暫存區內容

當我們對kk檔案進行修改並且新增至暫存區,未提交;

然後我們想撤銷此次修改

# 重置暫存區的指定檔案,與上一次commit保持一致,但工作區不變
$ git reset [file]

示例

git reset HEAD kk.txt

git add 的反向操作

分支操作

列出分支

# 列出所有本地分支
$ git branch

# 列出所有遠端分支
$ git branch -r

# 列出所有本地分支和遠端分支
$ git branch -a

示例

$ git branch

新建分支

# 新建一個分支,但依然停留在當前分支
$ git branch [branch-name]
# 新建一個分支,並切換到該分支
$ git checkout -b [branch]

示例

$ git checkout -b develop

切換分支

我們現在develop 分支建立檔案 dev.txt,並新增至暫存區,提交檔案

切換到master分支

$ git checkout master

合併分支

當我們切到 master分支檢視日誌後,develop分支修改的內容並沒有顯示到master分支上

所以我們需要進行分支合併操作,將develop分支的內容合併到主分支

命令

# 合併指定分支到當前分支
$ git merge [branch]

示例

git merge develop

合併分支後就可以進行程式碼推送

刪除分支

# 刪除分支
$ git branch -d [branch-name]

# 刪除遠端分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

標籤

# 列出所有tag
$ git tag

# 新建一個tag在當前commit
$ git tag [tag]

# 新建一個tag在指定commit
$ git tag [tag] [commit]

# 刪除本地tag
$ git tag -d [tag]

# 刪除遠端tag
$ git push origin :refs/tags/[tagName]

# 檢視tag資訊
$ git show [tag]

# 提交指定tag
$ git push [remote] [tag]

# 提交所有tag
$ git push [remote] --tags

# 新建一個分支,指向某個tag
$ git checkout -b [branch] [tag]

檔案刪除

# 刪除工作區檔案,並且將這次刪除放入暫存區
$ git rm [file1] [file2] ...

# 停止追蹤指定檔案,但該檔案會保留在工作區
$ git rm --cached [file]

# 改名檔案,並且將這個改名放入暫存區
$ git mv [file-original] [file-renamed]