整理一下自己學的 Git 相關內容吧
一、安裝
- 在 Windows 上安裝 Git
從 Git 官網下載安裝: https://git-scm.com/download/win
安裝完成後執行一次 Git Bash
- 在 Linux 上安裝 Git
Debian:sudo apt-get install git
Fedora:dnf install git
CentOS:yum install git
其他參考: https://git-scm.com/download/linux
- 在 Mac OS X 上安裝 Git
一是安裝 homebrew,然後透過 homebrew 安裝 Git,具體方法請參考 homebrew 的文件: http://brew.sh/
二是直接從 AppStore 安裝 Xcode,Xcode 整合了 Git,不過預設沒有安裝,你需要執行 Xcode,選擇選單 Xcode - Preferences,在彈出視窗中找到 Downloads,選擇 Command Line Tools,點選 Install 就可以完成安裝了
Xcode 是 Apple 官方 IDE,功能非常強大,是開發 Mac 和 iOS App 的必選裝備,而且是免費的
二、設定
安裝完成後需要設定自己的身分資訊
| |
其中 Your Name 替換為您的姓名,email@example 替換為您的電子郵件
三、建立儲存庫
建立新的 Git 儲存庫可以本地建立或者從遠端儲存庫複製 (Clone)
本地儲存庫
選擇一個資料夾,然後執行指令
| |
這樣該資料夾就成為可以被 Git 管理的儲存庫,請勿隨意修改 ./.git 目錄下的檔案 (通常這是隱藏檔),該目錄內容是 Git 用來追蹤管理版本庫的
複製自己的儲存庫
在個人設定處新增 SSH 公鑰: SSH and GPG keys ,然後就可以直接使用 SSH 複製囉,例如
| |
複製需要修改的儲存庫
儲存庫的擁有者邀請您共同協作或者將您的金鑰新增到儲存庫的 Deploy keys 後,您將擁有對於該儲存庫的修改權限,此時可以使用 SSH 複製,修改後提交,例如
| |
為優秀專案貢獻心力
這種一般是先 fork 一份,自己本地修改好後再透過 Pull requests 提交,具體可參考
複製無權限的儲存庫
使用 HTTPS 複製就行,例如
| |
儲存庫連結可訪問 儲存庫所在網頁 ,點選 Code 獲得
四、檔案提交
經過一番操作後,多了幾個檔案,該提交到儲存庫了
將檔案新增到本地儲存庫
| |
新增完成後該提交了
| |
在 some details 處描述本次提交了什麼
提交規範
雖然提交內容可以隨意書寫,但是最好還是遵循一定的提交規範比較好,以下是一些常用的規範
| 前綴 | 適用場景 |
|---|---|
| feat | 引入了新功能(比如新寫了一個上傳大頭貼的 API) |
| fix | 修復了一個錯誤 (Bug) |
| refactor | 程式碼重構,既不修復錯誤也不添加新功能 |
| chore | 瑣碎的工作。比如修改 .gitignore,或者更新 Maven 依賴版本 |
| docs | 只改動了文件(README, JavaDoc 等) |
在前綴後可以加入具體修改的模組,比如
| |
忽略檔案
如果有些檔案不想提交到儲存庫,也就是有些檔案可能不需要 Git 進行追蹤是否被修改的話,可以建立 .gitignore 檔案,然後把不想被 Git 管理的檔案名稱填入,一行一個即可
| |
忽略了也可以強制提交:git add -f test.pyc
也有一些現成的檔案可以參考: https://github.com/github/gitignore
如果需要修改
.gitignore檔案並再次生效,需要先清除快取
1 2 3 4 5 6# 清除快取 git rm -r --cached . # 重新遍歷檔案 git add . # 提交檔案 git commit -m "update .gitignore"
五、紀錄與還原
使用 git status 可以查看儲存庫的狀態
使用 git diff 查看上次提交修改的內容
使用 git log 查看歷史紀錄,即日誌,如果資訊太多可以加上 --pretty=oneline 參數,此時可以看到 commit ID
在 commit ID 後如果有 HEAD -> master 則說明此為最新提交,也就是當前版本。Git 使用 HEAD 表示當前版本,上一個版本就是 HEAD^,上上個版本是 HEAD^^ ,往上 60 個版本可以寫成 HEAD~60
還原到上一個版本 git reset --hard HEAD^
還原到指定版本:
| |
如果你操作失誤還原了,請不要關閉命令列視窗,查看指令紀錄:git reflog 找到剛才的版本號還原即可
六、遠端推送
如果需要將程式碼推送到遠端儲存庫需要先連結,但從遠端儲存庫複製的預設會連結好,不需要額外操作
連結遠端儲存庫
本地建立了一個儲存庫,想要上傳到 GitHub 的話,可以在 GitHub 上新建一個 repo,然後將本地儲存庫連結遠端儲存庫以進行上傳
| |
推送程式碼
使用 push 指令進行推送,例如
| |
該指令為推送到遠端儲存庫的 master 分支
修改分支
這裡需要注意的是使用 Git 建立的儲存庫預設分支為 master,而 GitHub 預設分支為 main,如果想和 GitHub 保持一致,可以修改本地分支名稱
| |
不過也可以修改預設建立的分支名稱為 main
| |
預設分支
另外,可以設定預設推送儲存庫為 origin 的 main 分支
| |
之後推送時直接使用
| |
即可
重新連結
可以透過以下指令查看遠端儲存庫資訊
| |
如果連結儲存庫時輸入錯了,可以使用以下指令刪除
| |
一般遠端儲存庫名稱為 origin,所以刪除指令為 git remote rm origin
七、分支管理
Git 分支是 Git 中用來獨立開發不同功能、修復問題或實驗新想法的機制。透過分支,可以在不影響主分支的情況下自由地進行更改
列出所有分支:git branch
建立分支:git branch new_branch
切換到分支 1:git checkout new_branch
切換到分支 1:git switch new_branch
推送到分支:git push origin cheny
比如添加一個搜尋功能,首先將主分支提交完成後建立新分支
| |
上述指令表示建立並切換到分支
search
在新分支 search 修改並測試完成後提交
| |
然後切換回主分支 main
| |
合併分支 search
| |
(可選) 刪除 search 分支
| |
八、建立伺服器端
九、其他
同時使用 GitLab 和 GitHub: document-library/Git-study.md