久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

分享一個重要的Git技巧,能保護核心代碼!

前段時間完成了一個核心代碼保護的功能,目標在關鍵代碼被修改及時同步給其他人,避免沒經過 review 就上線導致問題,提示的效果圖如下:

分享一個重要的Git技巧,能保護核心代碼!

在實現的過程中,用到一些平時使用不多的 Git 技巧,這篇文章來總結一下。

如何獲取當前提交用戶信息

這個比較簡單,通過 git config user.name 即可:

04318deMacBook-Pro % git config user.name zhangshixin
登錄后復制

git config 保存了很多配置信息,其中常用的有自定義快捷鍵、用戶信息、項目地址、分支信息等:

504318deMacBook-Pro % git config -l  //快捷鍵 begin >>> 我們可以定義自己的 git 快捷鍵 alias.st=status           alias.co=checkout alias.cb=checkout alias.p=pull alias.pr=pull alias.pu=push alias.cm=commit alias.br=branch alias.cm=commit alias.undo=reset alias.rbc=rebase alias.save=stash alias.pop=stash //快捷鍵 end <<< 我們可以定義自己的 git 快捷鍵  //用戶名稱和郵箱 begin >>> user.name=zhangshixin user.email=shixin.zhang@xxx.com //用戶名稱和郵箱 end <<<  //項目和分支信息 begin >>> remote.origin.url=git@gitlab.xxx:android/xxx.git remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* branch.master.remote=origin branch.master.merge=refs/heads/master branch.Canary.remote=origin branch.Canary.merge=refs/heads/Canary //項目和分支信息 end <<<  pull.rebase=true    //默認 pull 是 merge 還是 rebase
登錄后復制

如何獲取當前分支

為了減少提示頻率,最好只檢測核心的分支的提交(包括 merge commit)。如何獲取當前分支呢?有一個簡單的方式:

git symbolic-ref --short HEAD
登錄后復制

這句命令主要包括兩個關鍵字:symbolic-refHEAD

symbolic-ref 可以讀取、修改和刪除符號引用。

什么是符號引用呢?它表示一個以 refs 開頭的文件(比如 refs/heads/develop),這個文件保存著本地每個分支當前所處 commit。

我們可以打開 git 項目的 .git 文件夾,在其中的 refs/heads 文件夾中會保存各個分支當前所指向的 commit:

分享一個重要的Git技巧,能保護核心代碼!

HEAD 指的是 .git/HEAD,就是一個文件,保存著當前指向的符號引用:

分享一個重要的Git技巧,能保護核心代碼!

因此 git symbolic-ref --short HEAD 的含義就是讀取 .git/HEAD 文件的內容,我這里就是 refs/heads/develop 文件,因此就得出當前分支是 develop 分支。

如何獲取本地未 push 的所有 commit

有時候我們會在本地提交多次后再 push,因此在攔截 push 時,需要獲取到當前要 push 的所有 commit 信息,然后獲取每個 commit 修改的文件。

獲取要 push 信息可以通過 git log @{u}.. --oneline:

504318deMacBook-Pro ShixinDemo % git log @{u}.. --oneline 4e4655b (HEAD -> master) 攔截跳轉 f947180 修改文件
登錄后復制

git log 非常強大,它可以有這些使用場景:

  1. 獲取本地和遠端的 commit 差異
  2. 獲取指定時間內的提交記錄,可以具體到誰、什么時候、修改了哪些
  3. 獲取具體某次提交修改的文件

上面我們使用的參數 @{u}.. 就是表示獲取本地和遠端的 commit 差異,然后 --oneline 表示不打印具體信息,只打印 short commit id 和 commit message。

如果要獲取指定時間內的提交記錄,可以這樣:

git log --pretty="%an(%cd) %h - %s" --since="2022-09-01" --no-merges --name-status
登錄后復制

命令執行結果:

504318deMacBook-Pro ShixinDemo % git log --pretty="%an(%cd) %h - %s" --since="2022-09-01" --no-merges --name-status zhangshixin(Fri Dec 16 22:34:49 2022 +0800) 4e4655b - 攔截跳轉  M       app/src/main/java/com/example/heicdemo/MainActivity.kt zhangshixin(Fri Dec 16 22:34:30 2022 +0800) f947180 - 修改文件  M       .idea/gradle.xml M       .idea/misc.xml D       .idea/runConfigurations.xml A       android10_dem_heic_output.heic A       app/src/main/assets/android10_dem_heic_output.heic R100    app/src/main/res/drawable/mushroom.jpg  app/src/main/assets/mushroom.jpg A       app/src/main/assets/mushroom.webp M       app/src/main/java/com/example/heicdemo/MainActivity.kt A       app/src/main/res/drawable/mushroom.webp M       app/src/main/res/layout/activity_main.xml
登錄后復制

pretty 的參數用于指定打印的內容和格式;since 參數用于指定查看時間范圍;no-merges 表示過濾掉 merge 時生成的額外 commit;name-status 表示展示出文件的修改狀態(M 表示修改;D 表示刪除;A 表示增加;R 表示重命名)。

如何獲取每個 commit 修改的文件

知道 commit ID 后,可以通過 git show --pretty="" --name-only $commitId 獲取這個 commit 影響的信息:

04318deMacBook-Pro ShixinDemo % git show --pretty="" --name-only 4e4655b   app/src/main/java/com/example/shixindemo/MainActivity.kt
登錄后復制

git show 可以用來查看 commit 的 commit message 和修改的文件、文件具體內容等信息。上面的代碼中我們使用了 name-only 參數表示只要查看修改的文件即可。

總結

這篇文章介紹了通過攔截 git push 時,獲取當前用戶、當前分支、未 push 的 commit 和修改的文件等命令,通過組合這些命令,就可以實現一個核心代碼保護功能了!

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
日本不卡视频一二三区| 亚洲免费观看高清完整版在线观| 免费观看在线综合色| 99精品网站| 99精品国产一区二区三区| 色88888久久久久久影院| 国产一区二区三区黄网站| 精品三级在线观看视频| 国产一区二区久久久久| 国产一区二区三区不卡视频网站 | av成人国产| 蜜桃视频免费观看一区| 亚洲bt欧美bt精品777| 日产欧产美韩系列久久99| 日韩精品久久久久久久软件91| 97久久中文字幕| 国产欧美一级| 国产成人精品一区二区三区在线| 福利在线免费视频| 日本精品在线中文字幕| 国产超碰精品| 五月天久久网站| 91久久黄色| 老鸭窝亚洲一区二区三区| 午夜在线视频一区二区区别| 亚洲字幕久久| 国产精品欧美三级在线观看| 国产精品视频一区二区三区四蜜臂 | 欧美日韩va| 91精品国产福利在线观看麻豆| 亚洲美女久久| 久久久久久美女精品| 欧美在线看片| 五月婷婷亚洲| 免费在线欧美黄色| 免费日韩一区二区| 成人国产精品一区二区网站| 日韩一区二区三免费高清在线观看 | 精品一区91| 久久亚洲电影| 天堂8中文在线最新版在线| 一区二区亚洲视频| 日韩精品不卡一区二区| 日本综合视频| 亚洲免费播放| 天堂av在线| 国产日产一区| 丝袜国产日韩另类美女| 视频二区不卡| 国产精品第十页| 亚洲无线观看| 亚洲一级黄色| 麻豆精品一区二区综合av| 久久国产精品亚洲77777| 日韩在线免费| 久久91视频| 欧美伊人久久| 蜜桃视频第一区免费观看| 久久精品免费一区二区三区 | 丝袜诱惑制服诱惑色一区在线观看| 高清不卡一区| 欧美激情综合| 日本成人中文字幕在线视频| 日韩视频在线一区二区三区| 日韩在线视频精品| 精品久久久网| 国产精品视频3p| 亚久久调教视频| 美女日韩在线中文字幕| www成人在线视频| 国产一区一一区高清不卡| 国产日韩精品视频一区二区三区| 视频一区欧美日韩| 亚洲手机在线| 色在线中文字幕| 精品理论电影在线| 久久精品福利| 国产精品香蕉| 91精品麻豆| 亚洲精品日韩久久| 午夜欧美视频| 九九久久婷婷| 亚洲午夜精品久久久久久app| av资源中文在线天堂| 国产一区调教| 国产一区二区三区91| 麻豆成人综合网| 国产乱码精品一区二区亚洲| 婷婷成人av| 婷婷综合福利| 蜜桃视频在线观看一区| 欧美午夜不卡| 午夜精品亚洲| 伊人久久成人| 精品91久久久久| 欧美成人综合| 精品一区在线| 五月天激情综合网| 黑丝一区二区三区| 午夜日韩av| 亚洲黄页一区| 美女被久久久| 综合亚洲色图| 日韩福利在线观看| 日韩超碰人人爽人人做人人添| 视频一区日韩| 久久精品99国产精品日本| 日韩久久一区| 日韩欧美三区| 欧美日韩中出| 精品日韩一区| 六月婷婷综合| 亚洲小说欧美另类婷婷| 久久都是精品| 日韩激情精品| 国产精品九九| 九九久久国产| 日韩三区在线| 日韩午夜av| 日韩欧美中文字幕电影| 欧美日韩在线精品一区二区三区激情综合| 国产精品九九| 日韩精品dvd| 亚洲一区中文| 国产亚洲高清一区| 成人在线丰满少妇av| 精品欠久久久中文字幕加勒比| 一区二区精品伦理...| 青青久久av| 亚洲午夜免费| 精品五月天堂| 精品三级在线观看视频| 激情久久婷婷| 亚洲欧美日本国产| 久久精品国产免费| 91精品精品| 综合干狼人综合首页| 麻豆视频一区二区| 日韩不卡在线| 中文不卡在线| 久久精品国产久精国产| 国产一区观看| 日韩亚洲精品在线观看| 92国产精品| 亚洲欧美日本国产| 国产一区二区久久久久| aa亚洲婷婷| 精品99在线| 麻豆9191精品国产| 成人亚洲精品| 亚洲欧美在线专区| 国产美女高潮在线| 亚洲美女91| 国产精品久久久久蜜臀| 蜜桃一区二区三区在线观看| 精品国产乱码久久久| 亚洲一区久久| 粉嫩av一区二区三区四区五区 | 日韩精品视频一区二区三区| 91av亚洲| 国产日韩一区二区三免费高清| 免费不卡中文字幕在线| 国产精品magnet| 噜噜噜躁狠狠躁狠狠精品视频| 福利一区二区| 亚洲精品亚洲人成在线观看| 99久久激情| 欧美aa在线视频| 蜜臀av亚洲一区中文字幕| 国产在线观看www| 欧美日韩1区| 国产精品日本| 日韩欧美另类一区二区| 国产欧美在线| 国产亚洲精品v| 国产资源在线观看入口av| 国产欧美日韩精品一区二区免费| 午夜精品影院| 青青久久av| 六月丁香综合在线视频| 日韩综合一区二区| 午夜久久久久| 91精品xxx在线观看| 国产精品中文字幕亚洲欧美| 午夜影院欧美| 亚洲精品福利电影| 国产日产一区| 亚洲开心激情| 悠悠资源网久久精品| 国产成人精品一区二区免费看京| 日韩在线网址| 久久亚洲欧美| 成人av动漫在线观看| 日韩在线免费| 91综合网人人| 精品亚洲免a| 国产精品s色| 欧美日韩一区二区国产 | 欧美精品一区二区久久| 91亚洲一区|