Git使用筆記

柏丁發表於2024-05-30

全域性Git配置

  1. 檢視使用者名稱和郵箱
git config user.name 
git config user.email
  1. 修改使用者名稱和郵箱
git config --global user.name "username" 
git config --global user.email "email"
  1. 生成SSH公鑰
ssh-keygen -trsa -C"郵箱"
  1. 重置git本地密碼
git config --system--unsetcredential.helper

新建程式碼庫

# 在當前目錄新建一個Git程式碼庫     
git init     
# 新建一個目錄,將其初始化為Git程式碼庫 git init [project-name]     
# 下載一個專案和它的整個程式碼歷史     
git clone [url]    

分支管理

  1. 檢視遠端分支
使用如下命令檢視所有遠端分支: git fetch git branch -r
  1. 拉取遠端分支並建立本地分支
# - 方法一
# 使用如下命令: 
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

分支檔案對比

  1. 顯示出branch1和branch2中差異的部分
git diff branch1 branch2 --stat
  1. 顯示指定檔案的詳細差異
git diff branch1 branch2 具體檔案路徑
  1. 顯示出所有有差異的檔案的詳細差異
git diff branch1 branch2
  1. 檢視branch1分支有,而branch2中沒有的log
git log branch1 ^branch2
  1. 檢視branch2中比branch1中多提交了哪些內容
git log branch1..branch2

注意,列出來的是兩個點後邊(此處即dev)多提交的內容。

  1. 不知道誰提交的多誰提交的少,單純想知道有什麼不一樣
git log branch1...branch2
  1. 在上述情況下,在顯示出每個提交是在哪個分支上
git log -lefg-right branch1...branch2

注意 commit 後面的箭頭,根據我們在 –left-right branch1…branch2 的順序,左箭頭 < 表示是 branch1 的,右箭頭 > 表示是branch2的。

檔案撤銷操作

  1. 未使用 git add 快取程式碼時

可以使用 git checkout -- filepathname (比如: git checkout -- readme.md ,不要忘記中間的 “--” ,不寫就成了檢出分支了!!)。放棄所有的檔案修改可以使用 git checkout . 命令。此命令用來放棄掉所有還沒有加入到快取區(就是 git add 命令)的修改:內容修改與整個檔案刪除。但是此命令不會刪除掉剛新建的檔案。因為剛新建的檔案還沒已有加入到 git 的管理系統中。所以對於git是未知的。自己手動刪除就好了。

  1. 已經使用了 git add 快取了程式碼

可以使用 git reset HEAD filepathname (比如: git reset HEAD readme.md)來放棄指定檔案的快取,放棄所以的快取可以使用 git reset HEAD . 命令。

此命令用來清除 git 對於檔案修改的快取。相當於撤銷 git add 命令所在的工作。在使用本命令後,本地的修改並不會消失,而是回到瞭如(一)所示的狀態。繼續用(一)中的操作,就可以放棄本地的修改。

  1. 已經用 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. 生成賬戶1的公鑰:
ssh-keygen -trsa -C"zhangsan@email.com" 
# 生成過程中記得給ssh公鑰檔案起個名字,如:id_rsa1
  1. 將ssh key新增到SSH agent中,
ssh-add ~/.ssh/id_rsa1
  1. 生成賬戶2的公鑰:
ssh-keygen -trsa -C"lisi@qq.com" 
# 生成過程中記得給ssh公鑰檔案起個名字,如:id_rsa2
  1. 將ssh key新增到SSH agent中,
ssh-add ~/.ssh/id_rsa2
  1. 配置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

問題記錄:

  1. 執行****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_*
  1. 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

相關文章