git 速查筆記
阿新 • • 發佈:2021-02-08
理念 & 技巧 & 提示
-
git 關鍵詞 & 特性
分散式 交換 版本控制 可離線 分支 基於修改
-
程式碼位置
倉庫外 - 工作區(
Working Directory
) - 暫存區(stage
) - 版本庫(Repository
) - 遠端庫(origin
)
-
缺點
- 只能跟蹤管理文字檔案
-
指標 - (
HEAD
->master
->a commit
)HEAD
- 當前的commit
版本HEAD^
- 前一個commit
版本HEAD^^
- 前兩個commit
版本HEAD~n
- 前n
個commit
版本 -
.git
ls -ah
命令可以看見 -
origin
- 遠端庫的預設名字
命令
命令 | 命令作用 | 引數 | 引數作用 |
---|---|---|---|
add | 把檔案放到Git倉庫/暫存區 | <file> | 要提交的檔案及路徑 |
commit | 提交修改到本地的Git 倉庫 | -m <mesage> | 提交的描述 |
init | 初始化目錄為Git倉庫 | ||
status | 檢視工作區 和暫存區 的檔案更改狀態 | ||
diff | 檢視工作區 檔案的修改 | ``<HEAD~n/commitId> – | 檢視 工作區和 版本庫`裡檔案的區別 | |
log | 顯示從近到遠的commit 記錄 | --pretty=oneline | 縮減log 資訊到一行 |
--graph | 顯示分支圖 | ||
--abbrev-commit | 顯示短commitId | ||
reset | 回退commit | --hard | |
<HEAD~n/commitId> | 回退版本到某個commit 之前 | ||
<file> | 把暫存區的修改回退到工作區 | ||
reflog | 檢視產生修改的命令歷史(不包括修改暫存區的) | ||
checkout | 檢出 | -- <file> | 根據版本庫(commit )恢復工作區 |
<branch-name> | 切換到已有分支 | ||
-b <branch-name> | 建立並切換到(和當前分支一樣的)新的分支 | ||
-b <branch> origin/<遠端分支名> | 將遠端分支建立到本地 | ||
switch | 切換分支 | <branch-name> | 切換到已有分支 |
-c <branch-name> | 建立並切換到(和當前分支一樣的)新的分支 | ||
branch | 分支操作 | 檢視所有分支以及當前分支 | |
<branch-name> | 建立(和當前分支一樣的)新分支(不切換) | ||
-d/-D <branch-name> | 刪除(已合併/未合併)分支 | ||
--set-upstream-to=origin/遠端分支名 本地分支名 | 指定本地分支 與遠端分支 的連線,可以簡化命令 | ||
merge | 合併分支 | <branch-name> | 合併某分支到當前分支 |
--no-ff -m "comment of merge commit <branch-name>" | 強制禁用Fast forward 模式,使用一個新的 commit 提交合並,保留合併歷史 | ||
rm | 從版本庫刪除檔案 | <file> | 從版本庫中刪除檔案 |
remote | 遠端庫操作 | 檢視遠端庫名稱 | |
-v | 檢視遠端庫資訊 | ||
add <遠端庫名> 遠端庫[SSH/HTTP]地址 | 為本地倉庫 新增關聯的遠端倉庫 | ||
rm <遠端庫名字> | 刪除已有的遠端庫 | ||
push | 把分支推送到遠端庫 | origin <要推送的本地分支名> | 選擇要推送的分支 |
-u | 把推送的本地分支與遠端庫中對應的分支關聯起來,在以後push/pull 時簡化命令,直接用git push/pull ,省略origin <branchname> | ||
origin <tag-name> | 推送某個標籤到遠端庫 | ||
origin --tags | 推送所有標籤到遠端庫 | ||
origin :refs/tags/<tag-name> | 刪除遠端標籤(已刪除本地標籤) | ||
clone | 把遠端庫拷貝到本地 | git[SSH/HTTP]地址 | 遠端庫地址,(github/gitlab 會提供) |
stash | 把當前工作區 的修改暫時"儲藏"起來,以清空工作區 | ||
list | 檢視所有的stash | ||
apply [[email protected]{0}] | 恢復但不刪除stash ,(可指定版本) | ||
drop [[email protected]{0}] | 刪除stash ,(可指定版本) | ||
pop [[email protected]{0}] | 恢復並刪除stash ,(可指定版本) | ||
cherry-pick | 把某個分支某次提交的修改應用到當前分支 | <commitId> | 應用commitId 對應的commit |
rebase | 在一個分支的commit 末尾commit 另一個分支 | ||
tag | commit 的標籤,別名,標籤可以跟隨commit 出現多次 | 檢視所有tag ,結果不是按時間順序而是按字母順序 | |
<tag-name> | 給當前分支最新提交的commit 打上標籤 | ||
<tag-name> <commitId> | 給某次commit 打標籤 | ||
-a <tag-name> -m "comment message" | 給某次commit 打帶有說明的標籤 | ||
-d <tag-name> | 刪除一個標籤 | ||
show | 檢視標籤資訊 | 檢視當前commit 資訊 | |
<tag-name> | 檢視某個tag 對應commit 的資訊 | ||
config | 配置git 倉庫 | --global | 為電腦的所有倉庫進行配置 |
color.ui true | 讓git 顯示顏色 | ||
user.name "username" | 設定Git倉庫 的使用者名稱 | ||
user.email "email" | 設定Git倉庫 的郵箱 | ||
alias.別名 全稱 | 為命令配置別名 |
場景
提交一個檔案
git add readme.txt
geit commit -m "can't ignore this commit"
遇到衝突
先把有衝突的分支pull
下來,在本地解決衝突然後再push
優化配置
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.unstage 'reset HEAD'
git config --global alias.last 'log -1'
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
cat .git/config
安裝 & 配置 & 使用(mac
)
本地使用
-
安裝
- 通過 homebrew
- 從AppStore安裝Xcode -> 執行Xcode -> Xcode -> Preferences -> Downloads -> Command Line Tools -> Install
-
配置
[ - - global ] 意思是為這臺電腦的所有使用者設定
git config --global user.name "Your Name" git config --global user.email "[email protected]"
-
初始化一個 git 目錄
git init
連線遠端庫
-
建立SSH Key, 一臺電腦對應一個
ssh key
檢查使用者主目錄下有沒有
.ssh
目錄,.ssh
裡有沒有id_rsa
和id_rsa.pub
兩個檔案,如果沒有,執行以下命令ssh-keygen -t rsa -C "[email protected]"
-
在
遠端Git倉庫
裡配置上一步得到的祕鑰id_rsa.pub
-
在
遠端Git倉庫
中建立需要的倉庫 -
開始
-
為
本地倉庫
新增關聯的遠端倉庫
git remote add origin git[SSH/HTTP]地址
-
從
遠端倉庫
拷貝倉庫到本地git clone git[SSH/HTTP]地址
-