一學就會的git 命令
導讀
使用git 已不知好幾年,最近想著把常用的一些git 命令做個總結,本文主要寫的是git常用的命令。
閱讀三連:點贊(?)、關注(?)、收藏(?)。
本文 github (一學就會的Git命令操作) 已上傳,更多往期文章已分類整理。
幾個常用的命令
mkdir folder_name // 建立資料夾 [folder_name: 資料夾名稱,舉個例子:git-demo]
cd folder_name // 進入資料夾
touch file_name // 建立一個檔案 [file_name:檔名稱,舉個例子:index.js]
vim file_name // 編輯一個檔案 [舉個例子:vim index.js]
rm -rf file_name // 刪除檔案或者資料夾 [rm -rf file_name]
ls // 顯示工作目錄
clear // 清除螢幕
獲取git 倉庫
1.第一種方式,將本地專案轉換成git 倉庫, 生成一個.git檔案;
mkdir git-demo //建立一個檔案
cd git-demo
git init // 建立一個名為 .git 的子目錄
2.第二種方式,拉取(克隆)遠端已存在的git倉庫;
git clone <url> // url 倉庫地址
git clone https://github.com/FishStudy520/git-demo.git
git config (配置使用者資訊)
配置使用者資訊(使用者名稱和郵箱);
git config user.name 'your name' // 配置使用者名稱
git config user.email 'your email' //配置使用者郵箱
檢視配置資訊 (顯示配置資訊);
git config --list
全域性配置使用者只需要加 --global
;
git config --global user.name 'your name' // 全域性配置使用者名稱
git help (檢視文件)
檢視常見的命令;
git help
檢視git全部的命令;
git help -a
檢視git命令某個文件, 舉個例子:
git help add
git status (檢視狀態)
檢視狀態
git status
主要用於檢視工作區與儲存區的狀態;檔案狀態如以下三種:
Untracked files: 未跟蹤的檔案,新建立的檔案 (未跟蹤的檔案);
Changes to be committed:儲存已修改的檔案,該檔案執行在git add 的版本歷史記錄中,但還沒有commit ;
Changes not staged for commit: 儲存已修改的檔案;
- 未跟蹤的檔案(Untracked)和已修改的檔案(Modified)通過
git add .
提交到暫存區區,使用git reset HEAD <file>
還原到git add .
時的狀態; - 已修改的檔案(Modified)使用
git checkout .
將以跟蹤所有已修改的檔案,還原到修改前的狀態(Unmodifed); - 以跟蹤未修改的檔案(Unodified)通過本地倉庫切換出新分支所得;
檢視狀態,簡寫引數:-s
git status -s
git add(新增到暫存區)
將檔案/資料夾提交到暫存區,新增單個或者多個;
git add file file1 ...
將當前目錄下的所有檔案新增到暫存區(包含修改的檔案以及新增檔案);
git add .
將已經監控的檔案新增到暫存區(不包含新增的檔案);
git add -u
將當前專案下的所有變化都新增到暫存區;
git add -A
git commit(提交本地倉庫)
Git commit將工作區的內容提交到本地倉庫,每次提交生成一個commit-id,在版本回退起了重要的位置。
將工作區內容提交到本地倉庫;
git commit -m 'message'
將暫存區已修改的檔案提交到本地倉庫,注:已版本控制的檔案;
git commit -a -m 'messgae'
如果我們最近一次的提交資訊寫錯了,可以使用下面命令修改;
git commit --amend
git 分支
檢視本地倉庫下的分支,標記“*”的是當前工作區分支;
git branch
檢視所有的分支(本地倉庫以及遠端倉庫分支),-a
是 --all
的簡寫;
git branch -a
建立一個新分支;
git branch <branch_name> //branch_name: 新分支名稱
切換分支,比如你現在在master分支上,切換到develop分支;
git checkout develop // 切換到develop分支
刪除某個分支,-d
是 --delete
的簡寫;
git branch -d <branch_name> // branch_name:需要刪除的分支名
// 舉個例子:刪除develop 分支
git branch -d develop
// 強制刪除某個分支,分支未合併,如果想刪除,就使用下面命令;
git branch -D develop
列印當前分支名稱;
git branch --show-current
顯示與工作區分支已合併的分支;
git branch --merged
顯示與工作區分支未合併的分支;
git branch --no-merged
git checkout (檢出)
git checkout
主要的作用是切換分支或者還原工作區檔案的變更。
切換分支;
git checkout <branch_name> // branch_name:分支名稱
git checkout develop //切換到develop 分支
建立新分支並且切換到這個分支上;
git checkout -b <branch_name> // branch_name:新增分支名稱
git checkout -b develop // 建立develop 分支並切換到develop分支上
忽略工作區的修改,切換分支;
git checkout -f <branch_name> // 忽略修改切換到 branch_name 上
git merge(合併)
git merge
的作用就是將指定的分支合併到當前分支;
合併分支;
git merge <branch_name> // branch_name: 分支名稱
在合併分支時,產生合併衝突,退回到合併前的狀態;
git merge --abort
git log(提交記錄)
檢視所有的提交記錄;
git log // 按 字母 q 退出檢視
引數
--oneline: git log 的簡寫,輸出7個commit hash 的前7個字元,以及提交說明;
git log --oneline
-p:檢視每次提交改變的差異,這個很詳細;
git log -p // 檢視每次提交改變的差異
git log -p <file> // 檢視指定檔案的提交記錄
--stat:檢視每次提交的簡略資訊,可以快速檢視每次提交的差異,比-p簡潔;
git log --stat
--pretty:這個引數用於自定義輸出格式資訊;比如:oneline[單行],format[定製時間格式]
git log --pretty=oneline
-n: n代表限制輸出的數量,最近的n條提交資訊;
git log -2 // 最近兩條的提交資訊
--graph:檢視在日誌旁以 ASCII 圖形顯示分支與合併歷史;
git log --graph
git diff(檢視差異)
檢視當前工作區與儲存區檔案修改了哪些內容(不包含新檔案);
git diff
檢視當前工作區與上一個版本的差異;
git diff HEAD
git diff commit-id // 與commit-id版本比較差異,commit-id:對應提交的版本號
檢視當前工作區與另一個分支的差異;
git diff master // 與master 分支比較差異
檢視對比兩個分支間的差異;
git diff master...develop // 對比master分支與develop 分支的差異
檢視哪些檔案改動了,有多少,可以使用--stat
引數;
git diff --stat
git tag(打標籤)
git tag
用來標記git 版本的標記;
檢視所有的tag 標記;
git tag
建立一個tag標記;
git tag v0.0.1
檢視某個tag的詳情內容;
git tag <tag_name> // tag_name: tag名稱
// 比如:檢視v0.0.1 標記
git tag v0.0.1
刪除某個tag;
git tag -d v0.0.1
推送本地tag到遠倉庫;
git push origin --tags
檢視遠端倉庫的所有tag;
git ls-remote --tags origin
以某個tag 建立新分支;
git checkout -b <branch_name> <tag_name> // branch_name:新分支名,tag_name: tag名
git 遠端倉庫
檢視遠端倉庫;
git remote -v
新增遠端倉庫;
git remote add <short_name> <url> // short_name: 簡短的名稱,url:遠端倉庫地址
// 舉個例子:
git remote add fishStudy520 https://github.com/FishStudy520/git-demo.git
從遠端倉庫拉取和抓取到本地倉庫,但未合併(同步遠端倉庫資料);
git fetch <remote> //remote: 遠端地址
從遠端倉庫拉取和抓取到本地倉庫,並且合併資料(同步遠端倉庫資料);
git pull origin master // 拉去遠端倉庫資料
刪除遠端倉庫的某個分支;
git push origin --delete <branch_name> // branch_name: 遠端分支名
推送到遠端倉庫;
git push origin master // 推送到遠端倉庫的master分支
檢視某個遠端倉庫;
git remote show origin
修改遠端倉庫名稱;
git remote rename old_name new_name
// 舉個例子:
git remote rename fishStudy520 fish001
移除遠端倉庫;
git remote remove fishStudy520 //移除遠端倉庫 fishStudy520
git pull 與 git fetch 的區別:
git pull = git fetch + git merge
貯藏與清理
執行貯藏操作,是將修改暫時儲存到堆疊中
場景:當你在專案上修改一些內容,而現在臨時線上有個緊急bug 需要修復,但是你不想這麼一會就建立一次提交,這時使用stash,將修改儲存。等Bug 修改完後,再次切回原分支,從堆疊中恢復剛剛貯藏的內容。
貯藏內容,新增備註資訊,方便以後查詢;
git stash save <message> // message:備註資訊(可選引數下)
or
git stash //不新增備註資訊
檢視貯藏列表;
git stash list
檢視貯藏的內容變更,預設顯示第一個,如果檢視其他的貯藏,在stash${num},num代表哪個貯藏;
git show stash //預設第一個,索引為0,
git show stash@{1} // 檢視第二次貯藏的內容有哪些
應用某個貯藏,但不會在堆疊列表中刪除,這裡的索引從0開始;注:0最新的一次儲存,1上一次貯藏,以此類推;
git stash apply // 預設使用最近一次的貯藏,相當於 git stash apply stash${0}
git stash apply stash${1} // 使用第二個貯藏
應用某個貯藏,並且從堆疊列表中刪除;
git stash pop stash@{2} // 使用第3個貯藏,並且刪除從快取中刪除
將之前的某次貯藏從列表中刪除;
git stash drop stash@{2} // 丟棄列表中的第3次貯藏
刪除所有貯藏的stash;
git stash clear
總結
最後
如果喜歡或對你有用,那就點個讚唄(???)! (╯ε╰)(╯ε╰)(╯ε╰)。