全域性Git配置
- 檢視使用者名稱和郵箱
git config user.name
git config user.email
- 修改使用者名稱和郵箱
git config --global user.name "username"
git config --global user.email "email"
- 生成SSH公鑰
ssh-keygen -trsa -C"郵箱"
- 重置git本地密碼
git config --system--unsetcredential.helper
新建程式碼庫
# 在當前目錄新建一個Git程式碼庫
git init
# 新建一個目錄,將其初始化為Git程式碼庫 git init [project-name]
# 下載一個專案和它的整個程式碼歷史
git clone [url]
分支管理
- 檢視遠端分支
使用如下命令檢視所有遠端分支: git fetch git branch -r
- 拉取遠端分支並建立本地分支
# - 方法一
# 使用如下命令:
git checkout -b 本地分支branch_x origin/遠端分支名name
# 使用該方式會在本地新建分支branch_x,並自動切換到該本地分支branch_x。
# - 方式二
# 使用如下命令:
git fetch origin 遠端分支名name:本地分支branch_x
# 使用該方式會在本地新建分支branch_x,但是不會自動切換到該本地分支branch_x,需要手動checkout。
stash
git stash
git pull
git stash pop
分支檔案對比
- 顯示出branch1和branch2中差異的部分
git diff branch1 branch2 --stat
- 顯示指定檔案的詳細差異
git diff branch1 branch2 具體檔案路徑
- 顯示出所有有差異的檔案的詳細差異
git diff branch1 branch2
- 檢視branch1分支有,而branch2中沒有的log
git log branch1 ^branch2
- 檢視branch2中比branch1中多提交了哪些內容
git log branch1..branch2
注意,列出來的是兩個點後邊(此處即dev)多提交的內容。
- 不知道誰提交的多誰提交的少,單純想知道有什麼不一樣
git log branch1...branch2
- 在上述情況下,在顯示出每個提交是在哪個分支上
git log -lefg-right branch1...branch2
注意 commit 後面的箭頭,根據我們在 –left-right branch1…branch2 的順序,左箭頭 < 表示是 branch1 的,右箭頭 > 表示是branch2的。
檔案撤銷操作
- 未使用 git add 快取程式碼時
可以使用 git checkout -- filepathname (比如: git checkout -- readme.md ,不要忘記中間的 “--” ,不寫就成了檢出分支了!!)。放棄所有的檔案修改可以使用 git checkout . 命令。此命令用來放棄掉所有還沒有加入到快取區(就是 git add 命令)的修改:內容修改與整個檔案刪除。但是此命令不會刪除掉剛新建的檔案。因為剛新建的檔案還沒已有加入到 git 的管理系統中。所以對於git是未知的。自己手動刪除就好了。
- 已經使用了 git add 快取了程式碼
可以使用 git reset HEAD filepathname (比如: git reset HEAD readme.md)來放棄指定檔案的快取,放棄所以的快取可以使用 git reset HEAD . 命令。
此命令用來清除 git 對於檔案修改的快取。相當於撤銷 git add 命令所在的工作。在使用本命令後,本地的修改並不會消失,而是回到瞭如(一)所示的狀態。繼續用(一)中的操作,就可以放棄本地的修改。
- 已經用 git commit 提交了程式碼
可以使用 git reset --hard HEAD^ 來回退到上一次commit的狀態。此命令可以用來回退到任意版本:git reset --hard commitid
git log 可以檢視請交歷史記錄
cherry-pick
使用場景:對於多分支的程式碼庫,將程式碼從一個分支轉移到另一個分支是常見需求。
這時分兩種情況。一種情況是,你需要另一個分支的所有程式碼變動,那麼就採用合併(git merge)。另一種情況是,你只需要部分程式碼變動(某幾個提交),這時可以採用 Cherry pick。
Git提交規範
https://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html
Git同機器配置多個Git賬戶,做到公私分離
- 生成賬戶1的公鑰:
ssh-keygen -trsa -C"zhangsan@email.com"
# 生成過程中記得給ssh公鑰檔案起個名字,如:id_rsa1
- 將ssh key新增到SSH agent中,
ssh-add ~/.ssh/id_rsa1
- 生成賬戶2的公鑰:
ssh-keygen -trsa -C"lisi@qq.com"
# 生成過程中記得給ssh公鑰檔案起個名字,如:id_rsa2
- 將ssh key新增到SSH agent中,
ssh-add ~/.ssh/id_rsa2
- 配置ssh
vim ~/.ssh/config
# 配置如下內容:
# 貼上到config檔案中
#公司的git地址
Host git.***.com
User git
Hostname git.***.com #公司的git地址
IdentityFile ~/.ssh/id_rsa1 #訪問公司git的SSH KEY
Port *** #公司的git埠
Host gitee.com
User git
Hostname gitee.com #github的地址
IdentityFile ~/.ssh/id_rsa2 #訪問github的SSH KEY
問題記錄:
- 執行****git命令時提示秘鑰許可權太開放Permissions 0644 for '/Users/liuml/.ssh/id_rsa_tz' are too open.** **錯誤資訊如下:
Update failed
Warning: Permanently added 'gitee.com,..*.' (ECDSA) to the list of known hosts.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/home/lisi/.ssh/id_rsa_tz' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/home/lisi/.ssh/id_rsa_tz": bad permissions
git@gitee.com: Permission denied (publickey).
Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
解決方式:
可以執行以下命令將秘鑰檔案的許可權設定為700。
chmod -R 700 ~/.ssh/config ~/.ssh/id_rsa_*
- git****客戶端 提示Load key "/home/xxx/.ssh/id_rsa.pub": invalid format
解決方式:
vim ~/.ssh.config
Host x.x.x.x
User git
IdentityFile /home/xxx/.ssh/id_rsa1 # 此處沒有.pub
IdentitiesOnly yes
Git常用命令筆記
轉載地: https://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html
映象配置
替換設定
可以直接在配置檔案中動態替換 Github 的地址,這樣不用每次克隆的時候都修改地址
git config --global url."https://kgithub.com/".insteadOf "https://github.com/"
測試
git clone https://github.com/kubernetes/kubernetes.git
取消設定
git config --global --unset url.https://github.com/.insteadof
檢視 Git 配置資訊
git config --global --list
no matching host key type found. Their offer: ssh-rsa 問題解決
修改ssh配置檔案 ~/.ssh/config, 增加配置項,一勞永逸
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
上面配置預設對所有連線的伺服器生效,也可以透過制定伺服器使部分伺服器生效
Host 172.16.x.x
HostName k8s-node001
User root
Port 22
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa