日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gerrit的git配置流程

發布時間:2025/1/21 编程问答 82 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gerrit的git配置流程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、配置環境變量

  • 配置git全局用戶名

git?config?--global?user.name?"qujunorz" git?config?--global?user.email?"qujunorz@gmail.com"#gerrit中注冊的用戶名與郵箱
  • 修改.git/config

[remote?"gerrit"]url?=?ssh://qujunorz@$代碼url地址fetch?=?+refs/heads/*:refs/remotes/gerrit/*
  • 創建.git/hooks中的commit-msg文件
    #為了避免錯誤“remote: ERROR: missing Change-Id in commit message footer”

#!/bin/sh #?From?Gerrit?Code?Review?2.7 # #?Part?of?Gerrit?Code?Review?( # #?Copyright?(C)?2009?The?Android?Open?Source?Project # #?Licensed?under?the?Apache?License,?Version?2.0?(the?"License"); #?you?may?not?use?this?file?except?in?compliance?with?the?License. #?You?may?obtain?a?copy?of?the?License?at # #?##?Unless?required?by?applicable?law?or?agreed?to?in?writing,?software#?distributed?under?the?License?is?distributed?on?an?"AS?IS"?BASIS,#?WITHOUT?WARRANTIES?OR?CONDITIONS?OF?ANY?KIND,?either?express?or?implied.#?See?the?License?for?the?specific?language?governing?permissions?and#?limitations?under?the?License.#unset?GREP_OPTIONSCHANGE_ID_AFTER="Bug|Issue"MSG="$1" #?Check?for,?and?add?if?missing,?a?unique?Change-Id # add_ChangeId()?{clean_message=`sed?-e?'/^diff?--git?a\/.*/{s///q}/^Signed-off-by:/d/^#/d'?"$MSG"?|?git?stripspace`????if?test?-z?"$clean_message"thenreturnfi#?Does?Change-Id:?already?exist??if?so,?exit?(no?change).if?grep?-i?'^Change-Id:'?"$MSG"?>/dev/null????thenreturnfiid=`_gen_ChangeId`T="$MSG.tmp.$$"AWK=awk????if?[?-x?/usr/xpg4/bin/awk?];?then#?Solaris?AWK?is?just?too?brokenAWK=/usr/xpg4/bin/awk???fi#?How?this?works:#?-?parse?the?commit?message?as?(textLine+?blankLine*)*#?-?assume?textLine+?to?be?a?footer?until?proven?otherwise#?-?exception:?the?first?block?is?not?footer?(as?it?is?the?title)#?-?read?textLine+?into?a?variable#?-?then?count?blankLines#?-?once?the?next?textLine?appears,?print?textLine+?blankLine*?as?these#???aren't?footer#?-?in?END,?the?last?textLine+?block?is?available?for?footer?parsing$AWK?'BEGIN?{#?while?we?start?with?the?assumption?that?textLine+#?is?a?footer,?the?first?block?is?not.isFooter?=?0footerComment?=?0blankLines?=?0}#?Skip?lines?starting?with?"#"?without?any?spaces?before?it./^#/?{?next?}#?Skip?the?line?starting?with?the?diff?command?and?everything?after?it,#?up?to?the?end?of?the?file,?assuming?it?is?only?patch?data.#?If?more?than?one?line?before?the?diff?was?empty,?strip?all?but?one./^diff?--git?a/?{blankLines?=?0while?(getline)?{?}next}#?Count?blank?lines?outside?footer?comments/^$/?&&?(footerComment?==?0)?{blankLines++next}#?Catch?footer?comment/^\[[a-zA-Z0-9-]+:/?&&?(isFooter?==?1)?{footerComment?=?1}/]$/?&&?(footerComment?==?1)?{footerComment?=?2}#?We?have?a?non-blank?line?after?blank?lines.?Handle?this.(blankLines?>?0)?{print?linesfor?(i?=?0;?i?<?blankLines;?i++)?{print?""}lines?=?""blankLines?=?0isFooter?=?1footerComment?=?0}#?Detect?that?the?current?block?is?not?the?footer(footerComment?==?0)?&&?(!/^\[?[a-zA-Z0-9-]+:/?||?/^[a-zA-Z0-9-]+:\/\//)?{isFooter?=?0}{#?We?need?this?information?about?the?current?last?comment?lineif?(footerComment?==?2)?{footerComment?=?0}if?(lines?!=?"")?{lines?=?lines?"\n";}lines?=?lines?$0}#?Footer?handling:#?If?the?last?block?is?considered?a?footer,?splice?in?the?Change-Id?at?the#?right?place.#?Look?for?the?right?place?to?inject?Change-Id?by?considering#?CHANGE_ID_AFTER.?Keys?listed?in?it?(case?insensitive)?come?first,#?then?Change-Id,?then?everything?else?(eg.?Signed-off-by:).##?Otherwise?just?print?the?last?block,?a?new?line?and?the?Change-Id?as?a#?block?of?its?own.END?{unprinted?=?1if?(isFooter?==?0)?{print?lines?"\n"lines?=?""}changeIdAfter?=?"^("?tolower("'"$CHANGE_ID_AFTER"'")?"):"numlines?=?split(lines,?footer,?"\n")for?(line?=?1;?line?<=?numlines;?line++)?{if?(unprinted?&&?match(tolower(footer[line]),?changeIdAfter)?!=?1)?{unprinted?=?0print?"Change-Id:?I'"$id"'"}print?footer[line]}if?(unprinted)?{print?"Change-Id:?I'"$id"'"}}'?"$MSG"?>?"$T"?&&?mv?"$T"?"$MSG"?||?rm?-f?"$T"}_gen_ChangeIdInput()?{????echo?"tree?`git?write-tree`"if?parent=`git?rev-parse?"HEAD^0"?2>/dev/null`????thenecho?"parent?$parent"fiecho?"author?`git?var?GIT_AUTHOR_IDENT`"echo?"committer?`git?var?GIT_COMMITTER_IDENT`"echoprintf?'%s'?"$clean_message"}_gen_ChangeId()?{_gen_ChangeIdInput?|git?hash-object?-t?commit?--stdin }add_ChangeId
  • 修改ssh_config

KexAlgorithms?+diffie-hellman-group1-sha1
  • 上傳ssh公鑰至服務器

2、代碼上傳操作

  • 克隆代碼到本地

git?clone?$代碼在gerrit中地址
  • 新建一個分支

git?branch?-a #列出本地或遠程的所有分支 git?branch?-r? #列出遠程分支 git?branch?[branch_name] ##?新建分支
  • 切換到分支

git?checkout??[branch_name] 或者不使用git?branch新建,直接git?checkout?-b實現新建與切換 git?checkout?-b?[branch_name]
  • 修改文件并提交

touch?aecho?“revise”?>a git?add?a #添加新文件,如果只是修改或者刪除則不需要 git?addgit?commit?-a #將修改內容提交到倉庫中 git?commit?--amend? #對于已經提交過的代碼,如果需要修改,可以借助?git?commit?--amend?來進行。
  • 查看狀態并向master提×××并請求

git?status #查看是否已經 commitgit??log #查看提交日志 git-review?master

3、報錯

sign_and_send_pubkey:?signing?failed:?agent?refused?operation Permission?denied?(publickey). fatal:?Could?not?read?from?remote?repository.Please?make?sure?you?have?the?correct?access?rightsand?the?repository?exists.
  • 使用ssh-add命令添加私鑰
    參考:https://help.github.com/articles/error-permission-denied-publickey/


轉載于:https://blog.51cto.com/qujunorz/1901538

總結

以上是生活随笔為你收集整理的gerrit的git配置流程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。