日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Github的一個(gè)奇技淫巧,你學(xué)會(huì)了嗎?

背景

前段時(shí)間給 VictoriaLogs 提交了一個(gè) PR:https://github.com/VictoriaMetrics/VictoriaMetrics/pull/4934

創(chuàng)新互聯(lián)公司專注于東蘭網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供東蘭營(yíng)銷型網(wǎng)站建設(shè),東蘭網(wǎng)站制作、東蘭網(wǎng)頁(yè)設(shè)計(jì)、東蘭網(wǎng)站官網(wǎng)定制、微信小程序開(kāi)發(fā)服務(wù),打造東蘭網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供東蘭網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

本來(lái)一切都很順利,只等合并了,但在臨門一腳的時(shí)候社區(qū)維護(hù)人員問(wèn)我可否給 git commit 加上簽名。

于是我就默默的調(diào)試到了凌晨四點(diǎn)

圖片

以前我也沒(méi)怎么注意過(guò)這個(gè)選項(xiàng),經(jīng)過(guò) Google 后發(fā)現(xiàn) Idea 在提交的時(shí)候可以自行設(shè)置。

圖片

當(dāng)我勾選了這個(gè)提交新的代碼后,依然被告知沒(méi)有正確的簽名,這時(shí)我才發(fā)現(xiàn)理解錯(cuò)誤了。

為 GitHub 的提交簽名

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

圖片

如果我們想要 GitHub 現(xiàn)實(shí) Verified 這個(gè)標(biāo)簽,那就需要對(duì) commit 或者是打的 tag 進(jìn)行簽名。

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

圖片

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

gpg --full-generate-key

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

之后可以使用這個(gè)命令查看剛才創(chuàng)建的 Key:

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

我們需要將 3AA5C34371567BD2 這個(gè) Key 的 ID 字符串復(fù)制,之后執(zhí)行:

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

此時(shí)會(huì)打印出公鑰,我們將

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

這些數(shù)據(jù)復(fù)制到 GitHub 的個(gè)人設(shè)置頁(yè)面:

圖片

此時(shí)還沒(méi)完,如果我們直接提交代碼的也不會(huì)有 Verified 的標(biāo)簽。

圖片

我們還需要打開(kāi) git 的 config 設(shè)置:

git config commit.gpgsign true

# 全局打開(kāi)
git config --global commit.gpgsign true
git commit -S -m "YOUR_COMMIT_MESSAGE"
git push

這樣提交的 Commit 就會(huì)打上驗(yàn)證的標(biāo)簽了。

圖片

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

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

Squash 合并提交

不過(guò)在我這個(gè) PR 的背景下還有一個(gè)步驟沒(méi)有完成,就是我之前提交的 Commit 都沒(méi)要驗(yàn)證,我需要將他們都合并為一個(gè)驗(yàn)證的 Commit 然后在強(qiáng)制推送上去,這樣整個(gè) git log 看起來(lái)才足夠簡(jiǎn)潔。

最終效果如下,只有一個(gè) Commit 存在。

圖片

這時(shí)候就得需要 git rebase 出馬了。

圖片

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

我們先使用這個(gè)命令:

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

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

圖片

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

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

不會(huì)還有程序員不知道如何保存 vim 退出吧。

保存后又會(huì)彈出一個(gè)編輯頁(yè)面,讓我們填寫這次壓縮之后的提交記錄,默認(rèn)會(huì)幫我生成好,當(dāng)然你也可以全部刪掉后重寫。

圖片

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

最后再?gòu)?qiáng)行推送到我所在的分支即可:

git push origin test-rebase -f

在這個(gè)分支的提交頁(yè)面也只會(huì)看到剛才強(qiáng)行推送的記錄了,剛才的兩個(gè)提交已經(jīng)合并為這一個(gè)了。

圖片

總結(jié)

借著這個(gè)機(jī)會(huì)也了解了 rebase 的騷操作挺多的,不過(guò)我平時(shí)用的最多的還是 merge,這個(gè)倒沒(méi)有好壞之分,只要同組的開(kāi)發(fā)者都達(dá)成一致即可。


當(dāng)前標(biāo)題:Github的一個(gè)奇技淫巧,你學(xué)會(huì)了嗎?
標(biāo)題URL:http://www.dlmjj.cn/article/dhgcipe.html