自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Git 20 周年的 20 個 Git 技巧

開發(fā) 前端
Git 于 2005 年 4 月 7 日發(fā)布,至今已整整 20 年!為了慶祝這一里程碑,我整理了 20 個 Git 技巧,幫助你更高效地使用 Git!

Git 于 2005 年 4 月 7 日發(fā)布,至今已整整 20 年!為了慶祝這一里程碑,我整理了 20 個 Git 技巧,幫助你更高效地使用 Git!

這些技巧沒有特定的順序,從初學者到高級用戶都能從中受益。希望它們對你有用!

Git 20 周年

0. 正確設置個人信息

首先,全局配置你的姓名和郵箱:

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

如果需要為不同的倉庫使用不同的郵箱(例如工作郵箱和個人郵箱),可以按倉庫配置:

git config user.email "work.email@company.com"

額外提示:設置 GPG 簽名以驗證你的提交!簽名可以讓你的提交更加安全,因為它驗證了提交是由你完成的。了解更多,可以參考我的書 Docker 和 Kubernetes 安全。

1. 使用 .mailmap 清理作者名稱

Git 通過姓名和郵箱來跟蹤作者。有時可能會有人誤用不同的姓名或郵箱提交,這會讓提交歷史變得混亂。

在這種情況下,我們可以使用 Git 的 mailmap 功能來統(tǒng)一這些信息。在倉庫根目錄下創(chuàng)建一個名為 .mailmap 的文件,并添加如下內(nèi)容:

Proper Name <proper@example.com> <alias@example.com>

現(xiàn)在,git shortlog 和其他命令將顯示干凈的作者列表。

2. 新功能始終使用分支

避免直接提交到 main 或 master 分支。為每個功能和修復創(chuàng)建小的主題分支:

git switch -c feature/new-login

我個人會使用 GitHub 用戶名、問題編號和簡短的描述來命名分支:

git switch -c aerabi/1234-new-login

之后,你可以在提交信息中提到問題編號,GitHub 或 GitLab 會自動將其鏈接到問題。你還可以通過在提交信息中添加 Fixes #1234 來自動關閉問題:

Add new login page

Closes #1234

這樣提交后,讀者可以通過查看問題來了解提交的上下文。

3. 跨分支 Cherry-Pick 提交

如果你想將一個分支的某個提交應用到另一個分支,可以使用 cherry-pick。首先,記下你要 cherry-pick 的提交哈希,可以通過 git log 查看并復制。

然后,切換到目標分支并執(zhí)行:

git cherry-pick <commit-hash>

該提交會被添加到新分支,你可以繼續(xù)在該分支上工作。

4. 從另一個倉庫 Cherry-Pick 提交

你甚至可以從另一個倉庫 cherry-pick 提交:

git remote add other-repo <repo-url>
git fetch other-repo
git cherry-pick <commit-hash>

完成后,可以移除該遠程倉庫。

5. 使用 git switch 和 git restore 替代 git checkout

checkout 在過去是一個被過度使用的命令,它被用于切換分支、恢復文件等?,F(xiàn)在,我們有了 git switch 和 git restore 來使操作更清晰:

git switch branch-name         # 切換分支
git switch -c new-branch       # 創(chuàng)建并切換到新分支
git restore file.txt           # 丟棄文件的更改
git restore --staged file.txt  # 取消暫存文件

這些命令更加明確且用戶友好!

6. 理解三種合并方式

  • 三方合并:常規(guī)合并,會創(chuàng)建一個合并提交。
  • 快進合并:當沒有分叉時自動進行,即分支領先于基礎分支。
  • 壓縮合并:在合并前將所有提交壓縮為一個(適用于 PR)。

在 GitHub 和 GitLab 中,你可以配置 PR 的默認合并方式。

如果不確定使用哪種方式,建議使用壓縮合并。它保持歷史記錄干凈,更易于理解。

如果你是高手,可以將 rebase 和快進作為默認的合并方式。在合并前,將你的分支 rebase 到基礎分支:

git pull --rebase origin master

使用 rebase 和快進,你可以保持功能分支的歷史記錄干凈。

7. 使用 git add -p 選擇性暫存更改

與其暫存所有更改,不如選擇性地暫存部分更改:

git add -p

這種方式是交互式的且安全!

8. 安全撤銷 Rebase

如果你在 rebase 過程中搞砸了,可以撤銷它:

git reflog

找到 rebase 開始前的提交,然后重置:

git reset --hard <commit-hash>

9. 使用交互式 Rebase 清理歷史

使用交互式 rebase 來重新排序、壓縮或編輯提交:

git rebase -i HEAD~5

這是保持提交歷史整潔的秘訣。使用交互式 rebase,你可以:

  • 壓縮提交
  • 刪除提交
  • 重新排序提交
  • 重寫提交信息

10. 使用 --autosquash 加速 Rebase

當添加一個提交來修復之前的提交時,你可以將其標記為 "fixup" 或 "squash" 提交:

git commit --fixup <commit-hash>

提交信息應以 fixup! 或 squash! 開頭。這樣可以在 rebase 時自動壓縮它們。

在進行交互式 rebase 時,可以使用 --autosquash 選項:

git rebase -i --autosquash

Git 會自動將這些提交移動到正確的位置,并標記為壓縮或修復。

11. 使用 --update-refs 處理分支鏈

如果你從一個分支創(chuàng)建了另一個分支,并 rebase 了基礎分支,通常需要手動 rebase 所有依賴分支。但有了 --update-refs,你就不需要這么做了:

git rebase --update-refs

它會自動更新子分支。

12. 使用 git stash --keep-index

只需要暫存未暫存的更改?使用:

git stash push --keep-index

它會保留你已暫存的工作。

13. 創(chuàng)建空提交

有時你可能需要創(chuàng)建空提交來測試或觸發(fā) CI/CD 流水線。你可以這樣做:

git commit --allow-empty -m "Trigger deployment"

如果是為了創(chuàng)建部署標記,可以使用標簽代替:

git tag -a v1.0 -m "Deployment marker for version 1.0"

14. 清理未跟蹤的文件

快速刪除未跟蹤的文件(小心使用?。?/p>

git clean -fd

可以先使用 -n 進行試運行:

git clean -fdn

這個命令會顯示將要刪除的內(nèi)容,而不會實際刪除。

15. 同時獲取所有遠程倉庫

如果你有多個遠程倉庫:

git fetch --all

這對于 fork 非常有用。

16. 查看分支歷史圖

使用以下命令查看分支圖:

git log --oneline --graph --all --decorate

你也可以為其創(chuàng)建別名:

git config --global alias.graph "log --oneline --graph --all --decorate"

然后你可以使用:

git graph

17. 添加別名節(jié)省時間

厭倦了輸入冗長的 Git 命令?添加別名:

git config --global alias.enforce "push --force-with-lease"

現(xiàn)在 git enforce 等同于 git push --force-with-lease,它用于推送更改,同時確保不會覆蓋其他人的更改。

永遠不要使用 git push --force!

18. 使用 git worktree 進行多分支工作

與其來回切換分支,你可以同時檢出多個分支:

git worktree add ../branch-folder branch-name

Worktree 非常適合同時測試多個分支,而無需來回切換。

19. 使用 git bisect 查找 Bug

如果你的代碼中有 Bug,可以使用 git bisect 來找到引入 Bug 的提交。這是對提交歷史的二分搜索。

git bisect start
git bisect bad # 當前提交是壞的
git bisect good <commit-hash> # 最后一個已知的好提交

然后,Git 會檢出中間的提交。你可以測試每個提交并標記為好或壞:

git bisect good # 如果提交是好的
git bisect bad # 如果提交是壞的

例如,你可以運行測試來查看 Bug 是否存在。一旦找到引入 Bug 的提交,可以重置 bisect:

git bisect reset

這將返回到原始分支。

20. 閱讀之前的技巧

Git 20 歲生日快樂!??

責任編輯:武曉燕 來源: 前端小石匠
相關推薦

2025-02-28 08:30:00

Git開發(fā)命令

2024-10-28 16:06:50

2021-01-31 23:56:49

JavaScript開發(fā)代碼

2023-05-24 16:39:30

CSS技巧開發(fā)

2020-12-09 11:52:28

Python字符串代碼

2018-05-04 09:14:09

Git技巧shell命令

2018-12-07 10:30:50

盤點CSS前端

2023-01-17 07:45:09

2021-04-20 20:36:14

Git家目錄Linux

2020-07-25 20:01:45

CSS前端

2023-10-08 13:59:56

Git開發(fā)

2025-04-09 08:50:00

Linus軟件開發(fā)

2020-07-23 07:27:50

編程學習技術

2021-06-17 07:45:35

Javascript 技巧效率

2018-04-15 15:43:46

Git技巧命令

2020-08-25 23:06:33

開發(fā)技能代碼

2021-07-29 11:30:31

GitLinux命令

2017-07-18 09:00:59

GitGitHub移動應用

2022-12-06 17:07:40

2012-03-19 09:25:41

SUSE
點贊
收藏

51CTO技術棧公眾號