成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Github的一個奇技淫巧,你學會了嗎?

開發 前端
借著這個機會也了解了 rebase? 的騷操作挺多的,不過我平時用的最多的還是 merge,這個倒沒有好壞之分,只要同組的開發者都達成一致即可。

背景

前段時間給 VictoriaLogs 提交了一個 PR:https://github.com/VictoriaMetrics/VictoriaMetrics/pull/4934

本來一切都很順利,只等合并了,但在臨門一腳的時候社區維護人員問我可否給 git commit 加上簽名。

于是我就默默的調試到了凌晨四點??

圖片圖片

以前我也沒怎么注意過這個選項,經過 Google 后發現 Idea 在提交的時候可以自行設置。

圖片圖片

當我勾選了這個提交新的代碼后,依然被告知沒有正確的簽名,這時我才發現理解錯誤了。

為 GitHub 的提交簽名

結合這位社區大佬給的文檔,他所需要的是每次提交的代碼都是有簽名的,類似于這樣:

圖片圖片

如果我們想要 GitHub 現實 Verified 這個標簽,那就需要對 commit 或者是打的 tag 進行簽名。

而簽名的方式有三種:GPG, SSH, S/MIME,這里我以 GPG 簽名為例,整體流程如下:

圖片圖片

先在https://www.gnupg.org/download/這里下載安裝 GPG 的命令行程序。

gpg --full-generate-key

使用這個命令生成 key,之后會根據提示錄入一些信息,包含你的 ID 和郵箱,建議都和 GitHub 的 ID 郵箱保持一致即可,然后一路回車完事。

之后可以使用這個命令查看剛才創建的 Key:

gpg --list-secret-keys --keyid-format=long
------------------------------------
sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
uid                          Hubot <hubot@example.com>
ssb   4096R/4BB6D45482678BE3 2016-03-10

我們需要將 3AA5C34371567BD2 這個 Key 的 ID 字符串復制,之后執行:

gpg --armor --export 3AA5C34371567BD2
# Prints the GPG key ID, in ASCII armor format

此時會打印出公鑰,我們將

-----BEGIN PGP PUBLIC KEY BLOCK-----
-----END PGP PUBLIC KEY BLOCK-----

這些數據復制到 GitHub 的個人設置頁面:

圖片圖片

此時還沒完,如果我們直接提交代碼的也不會有 Verified 的標簽。

圖片圖片

我們還需要打開 git 的 config 設置:

git config commit.gpgsign true

# 全局打開
git config --global commit.gpgsign true
git commit -S -m "YOUR_COMMIT_MESSAGE"
git push

這樣提交的 Commit 就會打上驗證的標簽了。

圖片圖片

-S 的效果和在 idea 中選中 Sign-off 的效果一樣。

官方文檔也有詳細的步驟:https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification

Squash 合并提交

不過在我這個 PR 的背景下還有一個步驟沒有完成,就是我之前提交的 Commit 都沒要驗證,我需要將他們都合并為一個驗證的 Commit 然后在強制推送上去,這樣整個 git log 看起來才足夠簡潔。

最終效果如下,只有一個 Commit 存在。

圖片圖片

這時候就得需要 git rebase 出馬了。

圖片圖片

以剛才測試的這兩個提交為例,我需要將他們合并為一個提交。

我們先使用這個命令:

git rebase -i HEAD~N
git rebase -i HEAD~2

N 就是我們需要合并幾個提交,在我這里就是 2.

圖片圖片

我們需要將除了第一個 commit 之外的都修改為 s,也就是下面注釋里的 squash 的簡寫(壓縮的意思)。

這是一個 vim 的交互編輯模式,編輯完成之后保存退出。

不會還有程序員不知道如何保存 vim 退出吧??。

保存后又會彈出一個編輯頁面,讓我們填寫這次壓縮之后的提交記錄,默認會幫我生成好,當然你也可以全部刪掉后重寫。

圖片圖片

我這里就直接使用它生成好的就可以了,依然還是保存退出。

最后再強行推送到我所在的分支即可:

git push origin test-rebase -f

在這個分支的提交頁面也只會看到剛才強行推送的記錄了,剛才的兩個提交已經合并為這一個了。

圖片圖片

總結

借著這個機會也了解了 rebase 的騷操作挺多的,不過我平時用的最多的還是 merge,這個倒沒有好壞之分,只要同組的開發者都達成一致即可。

責任編輯:武曉燕 來源: crossoverJie
相關推薦

2023-06-26 08:05:36

2022-01-07 14:50:46

VS CodeLinux代碼

2019-04-25 13:10:04

Java 8Stream API編程語言

2021-10-04 09:29:41

對象池線程池

2023-03-26 22:02:53

APMPR監控

2024-06-21 08:15:25

2024-06-19 09:47:21

2023-04-27 08:42:50

效果

2020-05-20 19:38:11

前端js調試工具

2017-08-18 13:30:01

前端CSS布局奇技

2022-02-08 09:09:45

智能指針C++

2024-04-01 08:13:59

排行榜MySQL持久化

2015-04-13 13:21:45

JavaScript JavaScript

2021-04-12 06:09:38

Spring擴展點應用

2022-07-08 09:27:48

CSSIFC模型

2024-01-19 08:25:38

死鎖Java通信

2024-02-04 00:00:00

Effect數據組件

2023-07-26 13:11:21

ChatGPT平臺工具

2023-01-10 08:43:15

定義DDD架構

2023-07-10 07:17:29

無效化空窗口
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产福利资源 | 免费午夜视频 | 美国黄色毛片 | 国产精品成人国产乱 | 亚洲成人免费视频在线 | 亚洲精品一区二区 | 中文字幕乱码一区二区三区 | 日本精品视频在线观看 | 日韩一区二区在线视频 | 欧美伊人影院 | 国产一区二区三区久久久久久久久 | 精品久久久久久久 | 国产高清一区二区三区 | 亚洲成色777777在线观看影院 | 国产精品jizz在线观看老狼 | 日韩在线| 欧美精品一区二区免费视频 | 欧美在线亚洲 | 日日摸日日碰夜夜爽2015电影 | 日本午夜免费福利视频 | 亚洲一区二区三区四区在线观看 | 日韩精品一区二区三区在线观看 | 亚洲精品一区中文字幕乱码 | 青青青伊人 | 日韩电影免费在线观看中文字幕 | 国产精品视频网 | 久久久久国产一区二区 | 午夜免费电影院 | 午夜a区| 狠狠天天 | 精品久久九九 | 日韩中文视频 | 国产成人精品a视频一区www | 久久久久久久99 | 国产 欧美 日韩 一区 | 亚洲一区二区电影网 | 亚洲免费视频一区 | 国产精品久久久久一区二区三区 | 三级av在线 | hdfreexxxx中国妞| 国产高清在线观看 |