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]