偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Git 20 周年的 20 個(gè) Git 技巧

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

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

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

Git 20 周年

0. 正確設(shè)置個(gè)人信息

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

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

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

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

額外提示:設(shè)置 GPG 簽名以驗(yàn)證你的提交!簽名可以讓你的提交更加安全,因?yàn)樗?yàn)證了提交是由你完成的。了解更多,可以參考我的書 Docker 和 Kubernetes 安全。

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

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

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

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

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

2. 新功能始終使用分支

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

git switch -c feature/new-login

我個(gè)人會(huì)使用 GitHub 用戶名、問題編號(hào)和簡(jiǎn)短的描述來命名分支:

git switch -c aerabi/1234-new-login

之后,你可以在提交信息中提到問題編號(hào),GitHub 或 GitLab 會(huì)自動(dòng)將其鏈接到問題。你還可以通過在提交信息中添加 Fixes #1234 來自動(dòng)關(guān)閉問題:

Add new login page

Closes #1234

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

3. 跨分支 Cherry-Pick 提交

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

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

git cherry-pick <commit-hash>

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

4. 從另一個(gè)倉庫 Cherry-Pick 提交

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

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

完成后,可以移除該遠(yuǎn)程倉庫。

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

checkout 在過去是一個(gè)被過度使用的命令,它被用于切換分支、恢復(fù)文件等?,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ī)合并,會(huì)創(chuàng)建一個(gè)合并提交。
  • 快進(jìn)合并:當(dāng)沒有分叉時(shí)自動(dòng)進(jìn)行,即分支領(lǐng)先于基礎(chǔ)分支。
  • 壓縮合并:在合并前將所有提交壓縮為一個(gè)(適用于 PR)。

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

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

如果你是高手,可以將 rebase 和快進(jìn)作為默認(rèn)的合并方式。在合并前,將你的分支 rebase 到基礎(chǔ)分支:

git pull --rebase origin master

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

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

當(dāng)添加一個(gè)提交來修復(fù)之前的提交時(shí),你可以將其標(biāo)記為 "fixup" 或 "squash" 提交:

git commit --fixup <commit-hash>

提交信息應(yīng)以 fixup! 或 squash! 開頭。這樣可以在 rebase 時(shí)自動(dòng)壓縮它們。

在進(jìn)行交互式 rebase 時(shí),可以使用 --autosquash 選項(xiàng):

git rebase -i --autosquash

Git 會(huì)自動(dòng)將這些提交移動(dòng)到正確的位置,并標(biāo)記為壓縮或修復(fù)。

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

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

git rebase --update-refs

它會(huì)自動(dòng)更新子分支。

12. 使用 git stash --keep-index

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

git stash push --keep-index

它會(huì)保留你已暫存的工作。

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

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

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

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

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

14. 清理未跟蹤的文件

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

git clean -fd

可以先使用 -n 進(jìn)行試運(yùn)行:

git clean -fdn

這個(gè)命令會(huì)顯示將要?jiǎng)h除的內(nèi)容,而不會(huì)實(shí)際刪除。

15. 同時(shí)獲取所有遠(yuǎn)程倉庫

如果你有多個(gè)遠(yuǎn)程倉庫:

git fetch --all

這對(duì)于 fork 非常有用。

16. 查看分支歷史圖

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

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

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

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

然后你可以使用:

git graph

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

厭倦了輸入冗長(zhǎng)的 Git 命令?添加別名:

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

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

永遠(yuǎn)不要使用 git push --force!

18. 使用 git worktree 進(jìn)行多分支工作

與其來回切換分支,你可以同時(shí)檢出多個(gè)分支:

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

Worktree 非常適合同時(shí)測(cè)試多個(gè)分支,而無需來回切換。

19. 使用 git bisect 查找 Bug

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

git bisect start
git bisect bad # 當(dāng)前提交是壞的
git bisect good <commit-hash> # 最后一個(gè)已知的好提交

然后,Git 會(huì)檢出中間的提交。你可以測(cè)試每個(gè)提交并標(biāo)記為好或壞:

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

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

git bisect reset

這將返回到原始分支。

20. 閱讀之前的技巧

Git 20 歲生日快樂!??

責(zé)任編輯:武曉燕 來源: 前端小石匠
相關(guān)推薦

2025-02-28 08:30:00

Git開發(fā)命令

2021-01-31 23:56:49

JavaScript開發(fā)代碼

2020-12-09 11:52:28

Python字符串代碼

2023-05-24 16:39:30

CSS技巧開發(fā)

2024-10-28 16:06:50

2018-12-07 10:30:50

盤點(diǎn)CSS前端

2018-05-04 09:14:09

Git技巧shell命令

2020-07-25 20:01:45

CSS前端

2023-01-17 07:45:09

2021-04-20 20:36:14

Git家目錄Linux

2020-07-23 07:27:50

編程學(xué)習(xí)技術(shù)

2021-06-17 07:45:35

Javascript 技巧效率

2023-10-08 13:59:56

Git開發(fā)

2025-04-09 08:50:00

Linus軟件開發(fā)

2012-03-19 09:25:41

SUSE

2012-02-14 23:00:09

SUSE Linux

2018-04-15 15:43:46

Git技巧命令

2020-08-25 23:06:33

開發(fā)技能代碼

2021-07-29 11:30:31

GitLinux命令

2022-08-16 10:53:56

JavaScript前端技巧
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)