git 操作小记

    本人主要记录工作中常用的git 场景。

(1)场景一:拉取指定commitid的代码

       需要将开发所用git库代码提交至正式云上,开发git库上已经commit多次,而在云上需要统计代码量,所以在云上需新建最原始的代码,提交后,再将最新代码提交至云上。针对上述场景,需要首先fetch开发库git第一次commitid对应的代码,提交至云上之后,然后在fetch最新commitid代码,然后在提交至云上,这两次提交就可以统计出代码量。

    方法一操作如下:

# init
git init

# add a remote
git remote add [remote_name] [remote-url]

# fetch a commit (or branch or tag) of interest
git fetch [remote-url] [sha1-of-commit-of-interest]

# reset this repository's master branch to the commit of interest
git reset --hard FETCH_HEAD

   在试验之后,上述操作有时会执行错误,显示如下  no such remote ref。 而在git lab 相应的commitid是存在的,具体原因还未搞明白。

    如果上述方法无法操作成功,则采用方法二:

$ git clone [remote-url]
$ git reset --hard $commitid

  首先clone 整个项目,然后在reset至某个commitid。

方法一有时会错误,经测方法二无问题,可执行。

(2)结合Gerrit

    gerrit是免费的code review工具,所以关系如右所示,Git reomte ->gerrit -> 本地,本地push的代码首先push 到gerrit,gerrit进行Verified和code review通过之后,gerrit会push 到git远程仓库。

   (1)在进行git push时 分支下面需具有commit-msg,

使用ls命令检查该文件是否存在:

cd  project_dir
ls  .git /hooks/commit-msg

如果该文件不存在,则按照 git push 时产生的提示信息,获取该文件:

$ scp -p -P 29418 [email protected]:hooks /commit-msg  ${gitdir} /hooks/

上面的命令可以直接从 git push 产生的错误信息中复制出来.

如果要手敲该命令,别忘了把用户名换成自己的.

 (2)打tag

git tag -a vxxxxx -m 'xxxxxxx'
git push origin --tags

 (3)git push

  由于所有开发都在dev分支上进行,所有进行push时需指定push 的branch。

  git push origin dev:refs/for/dev


   


猜你喜欢

转载自blog.csdn.net/xiaobai51509660/article/details/80913910
今日推荐