Git-基礎配置與常用命令

專欄原創出處:github-源筆記文件 ,歡迎 Star,轉載請附上原文出處鏈接和本聲明。

使用前的配置

檢查你的配置

git config --list --show-origin
# 查看所有的配置以及它們所在的文件

git config --list
# 所有 Git 當時能找到的配置

全局配置
配置文件在git config --list --show-origin 命令中可查看

git config --global user.name "[name]"
# 對你的 commit 操作設置關聯的用戶名

git config --global user.email "[email address]"
# 對你的 commit 操作設置關聯的郵箱地址

git config --global color.ui auto
# 啓用有幫助的彩色命令行輸出。

本地工程配置
配置文件在當前工程目錄/.git/config 文件中

git config --local user.name xxx
git config --local user.email [email protected]

創建倉庫

當着手於一個新的倉庫時,你只需創建一次。要麼在本地創建,然後推送到 GitHub;要麼通過 clone 一個現有倉庫。

git init
# 將現有目錄轉換爲一個 Git 倉庫

git clone [url]
# Clone(下載)一個已存在於 GitHub 上的倉庫,包括所有的文件、分支和提交 (commits)

進行更改

瀏覽並檢查項目文件的發展。

git add [file]
# 將文件進行快照處理內容寫入緩存區,用於版本控制

git commit -m"[descriptive message]"
# 將緩存區內容添加到倉庫中,永久地記錄在版本歷史中

git rm -rf [file]
# 從工作區和索引中刪除文件

檢查歷史和狀態

git log
# 列出當前分支的版本歷史

git log --graph --decorate --oneline
# 用以展示經過修飾的提交歷史

git log --grep apples --oneline
# 如果只想要看包含關鍵字“apple”的提交

git log HEAD~5..HEAD^ --oneline
# 查看歷史提交記錄中兩個點之間的提交歷史

git log branch_name..master --oneline
# 對於分支可以使用該命令

git log --follow [file]
# 列出文件的版本歷史,包括重命名

git blame path/to/file
# 瞭解誰對一個文件做了哪些改動

git diff [first-branch]...[second-branch]
git diff HEAD HEAD~2
# 對比當前 HEAD 和前兩個提交

git show [commit]
# 輸出指定 commit 的元數據和內容變化

git status -s
# 顯示工作區狀態

重做提交

Erase mistakes and craft replacement history

git commit --amend
# 刪除前一次提交,並創建一個新的提交記錄以替代之前的提交

git reset [commit]
# 撤銷所有 [commit] 後的的提交,在本地保存更改

git reset --hard [commit]
# 放棄所有歷史,改回指定提交

git rebase -i origin/master
# 交互式變基 (rebase)。它可以用來編輯提交信息,或者將多個提交壓縮成一個提交

git revert COMMIT_ID
# 創建一個新的提交,讓當前項目狀態恢復到指定提交之前

小心!更改歷史可能帶來不良後果。如果你需要更改 GitHub(遠端)已有的提交,請謹慎操作。如果你需要幫助,可訪問 github.community 或聯繫支持 (support)。

分支

分支是使用 Git 工作的一個重要部分。你做的任何提交都會發生在當前“checked out”到的分支上。使用 git status 查看那是哪個分支。

git branch
# 列出當前項目分支

git branch [branch-name]
# 創建一個新分支
# 說明:如果報錯「fatal: 不是一個有效的對象名:'master'。」說明初始化倉庫後還沒有任何提交記錄。

git checkout [branch-name]
# 切換到指定分支並更新工作目錄 (working directory)

git merge [branch]
# 將指定分支的歷史合併到當前分支。這通常在拉取請求 (PR) 中完成,但也是一個重要的 Git 操作。

git branch -d [branch-name]
# 刪除指定分支

同步更改

將你本地倉庫與 GitHub.com 上的遠端倉庫同步

git fetch
# 下載遠端跟蹤分支的所有歷史

git merge
# 將遠端跟蹤分支合併到當前本地分支

git push
# 將所有本地分支提交上傳到 GitHub

git pull
# 使用來自 GitHub 的對應遠端分支的所有新提交更新你當前的本地工作分支。git pull 是 git fetch 和 git merge 的結合。

git cherry-pick COMMIT_ID
# 假設我們和同事在各自單獨的分支上進行開發,同事有一個重要的提交我們也想應用到自己的分支上來,但是不需要對方分支的其他提交

多 SSH-Key 生成及代理配置

生成一個新的 SSH Key

$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
# 執行命令生成 ssh-key,需要指定相應的郵箱

> Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [如果不更改文件名直接回車 ]
# 推薦不使用默認文件名 id_rsa ,按實際場景重新命名文件名稱,比如:/Users/you/.ssh/id_rsa_github_my

> Enter passphrase (empty for no passphrase): [輸入密碼,回車 ]
> Enter same passphrase again: [再次輸入密碼,回車 ]

$ ll /Users/you/.ssh
# 可以看到剛剛生成的 ssh-key id_rsa_github_my 文件
# 複製對應 id_rsa_github_my.pub 內容添加至 WEB 端配置 SSH 內容地方即可。

將 SSH Key 添加到不同的代理

$ vim /Users/you/.ssh/config

# 配置文件參數
# Host : Host 可以看作是一個你要識別的模式,對識別的模式,進行配置對應的的主機名和 ssh 文件(可以直接填寫 ip 地址)
# HostName : 要登錄主機的主機名(建議與 Host 一致)
# User : 登錄名(如 gitlab 的 username)
# IdentityFile : 指明上面 User 對應的 identityFile 路徑
# Port: 端口號(如果不是默認 22 號端口則需要指定)

Host github.com
HostName github.com
Preferredauthentications publickey
IdentityFile ~/.ssh/id_rsa_github_my
Port 22

Host dev-git.gaolvzongheng.com
HostName dev-git.gaolvzongheng.com
Preferredauthentications publickey
IdentityFile ~/.ssh/id_rsa_github_gaolvgo
Port 22

Host 119.3.177.8
HostName 119.3.177.8
Preferredauthentications publickey
IdentityFile ~/.ssh/id_rsa_github_gaolvgo
Port 22

測試配置是否成功

$ .ssh ssh -T [email protected]
Enter passphrase for key '/Users/liwei/.ssh/id_rsa_github_my':
Hi GourdErwa! You've successfully authenticated, but GitHub does not provide shell access.

術語表

  • HEAD:代表你當前的工作目錄。使用 git checkout 可移動 HEAD 指針到不同的分支、標記 (tags) 或提交

  • .gitignore 文件:
    有時一些文件最好不要用 Git 跟蹤。這通常在名爲 .gitignore 的特殊文件中完成。你可以在 github.com/github/gitignore 找到有用的 .gitignore 文件模板。

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章