• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

工作开发中常用的Git、Gerrit和vim相关命令

技术杂谈 勤劳的小蚂蚁 3个月前 (01-16) 106次浏览 已收录 0个评论 扫描二维码

git
一、添加到仓库
1.git add<file>:添加文件,含义就是告诉git,将文件添加到git仓库中去,例如:git add test.txt
2.git commit -m<message>:提交文件,含义就是将文件提交到git仓库。-m后面指的是本次提交的说明。
添加文件到Git仓库,分两步:
     a.使用命令git add <file>,注意,可反复多次使用,添加多个文件;
     b.使用命令git commit -m <message>,完成。
二、查看文件、版本回退
3.git status:查看变动后的文件是哪些,含义:可以让我们掌握仓库的当前状态
4.git diff<file>:查看某个文件具体的修改的某个内容
c.要随时掌握工作区的状态,使用git status命令。
d.如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
5.git log:查看提交的日志
6.git log –pretty=oneline :简化提交日志,只会显示commitId加上说明
q是从git log退出)
回退版本:
  a:Git中,用HEAD表示当前版本,也就是最新的提交
  b:上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
  c:git reset –hard HEAD^:回到上一个版本  
  (cat 查看文件内容,例如:cat 文件)
*现在已经回退到上一个版本了,现在又想回到上一个版本:
  只要命令行界面没有关掉,查找到最新的那个版本的commitId
    git reset –hard commitId  (说明:commitId可以不用写全,git会自动去找)
*你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?
   git reflog :显示从最新的到后面的
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令
    git reset –hard    commit_id。
  穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
  要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

三、分为暂存区和工作区

(注意:git add 是将文件添加到暂存区,git commit 将暂存区提交到当前分支)
我们现在在本地开发的叫做工作区。

使用git commit后就会将暂存区的提交到分支了,就变成这样了

四、管理修改
  mv 文件名 修改后的文件名
  vi 文件名:含义是修改文件名
  git diff –HEAD commitid 查看本地和分支上的不同
  git reset <文件>:回退这个文件的版本

五、撤销修改
  1. 已经修改完了的文件,但是没有add 和 commit
  2. 已经修改完了的文件,但是已经add或者commit了
git checkout — <文件>:–很重要,没有这个的话就是切换到另一个分支了。
    总之是让这个文件回到最近一次的git commit 和 git add时的状态
git reset HEAD<file>:用HEAD表示最新版本,(git reset <file>这个也可以)
git checkout –<file>
(ps:前提是没有push到远程)
 
六、删除文件
  1. 如果文件已经上传,add 和commit了。
  2. 删错了某个文件,但是仓库中还有
两种办法:1.rm 文件-》git add 文件-》git commit 文件。覆盖掉
                2.rm文件-》git rm 文件 -》git commit
git checkout — <file>就可以恢复过来了

七、远程仓库
    git push:提交远程仓库
    git clone 地址:克隆仓库
八、创建并合并分支
     git checkout -b 分支名:创建分支,-b表示创建并切换 等价于-》git branch 分支名,git checkout 分支
     git branch :会列出所有分支。当前分支用*表示
     例如:在新分支改了后。要将新分支改了的内容推到主干上去
          a.将新的分支上改变的commit完
   b.切换到主分支
   c.git merge 分支:git merge用于合并指定分支到当前分支
 git branch -d 分支:删除分支
小结:
   查看分支:git branch
   创建分支:git branch <name>
   切换分支:git checkout <name>
   创建+切换分支:git checkout -b <name>
   合并某分支到当前分支:git merge <name>
   删除分支:git branch -d <name>
九、解决冲突
   git merge 分支名 b.手动编辑有冲突的文件。然后在提交
   git log –graph查看分支合并图
十、分支管理策略
    通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
      例如:git merge –no-ff -m”注释” 分支:–no-ff表示禁用fast forward
      总的来说就是在合并分支的时候,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支。能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并
 十一、bug分支
        当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
        开发一个新feature,最好新建一个分支;如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。
      git remote:查看远程信息,加上-v显示更详细的信息
      git push:推送要提价的代码到远程分支
       git pull:拉取远程新的分支到本地
     注意:如果git pull出错。出现If you wish to set tracking information for this branch you can do so with:
     说明,你的本地分支与远程分支没有链接上。
     使用;git branch –set-upstream-to <branch-name> origin/<branch-name>
        例如:git branch –set-upstream-to=origin/dev dev
       
小结:
  因此,多人协作的工作模式通常是这样:
首先,可以试图用git push origin <branch-name>推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令
  git branch –set-upstream-to <branch-name> origin/<branch-name>。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
小结
查看远程库信息,使用git remote -v;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
      从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch –set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
   
十二、Rebase
   多人在同一个分支上协作时,很容易出现冲突。即使没有冲突,后push的童鞋不得不先pull,在本地合并,然后才能push成功。
   
   rebase操作可以把本地未push的分叉提交历史整理成直线;
   rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
十三创建标签
  1. 命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
  2. 命令git push origin <tagname>可以推送一个本地标签;
  3. 命令git push origin –tags可以推送全部未推送过的本地标签;
  4. 命令git tag -d <tagname>可以删除一个本地标签;
  5. 命令git push origin :refs/tags/<tagname>可以删除一个远程标
  1. 命令git tag -a <tagname> -m “blablabla…”可以指定标签信息;
  2. 命令git tag可以查看所有标签。
操作git tag
  1. 命令git push origin <tagname>可以推送一个本地标签;
  2. 命令git push origin –tags可以推送全部未推送过的本地标签;
  3. 命令git tag -d <tagname>可以删除一个本地标签;
  4. 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。

gerrit

使用过git的同学,都知道,当我们git add –> git commit –> git push 之后,你的代码会被直接提交到repo,也就是代码仓库中,就是图中橘红色箭头指示的那样。
那么gerrit就是上图中的那只鸟,普通成员的代码是被先push到gerrit服务器上,然后由代码审核人员,就是左上角的integrator在web页面进行代码的审核(review),可以单人审核,也可以邀请其他成员一同审核,当代码审核通过(approve)之后,这次代码才会被提交(submit)到代码仓库(repo)中去。
无论有新的代码提交待审核,代码审核通过或被拒绝,代码提交者(Contributor)和所有的相关代码审核人员(Integrator)都会收到邮件提醒。
gerrit还有自动测试的功能,和主线有冲突或者测试不通过的代码,是会被直接拒绝掉的,这个功能似乎就是右下角那个老头(Jenkins)的任务。
整个流程就是这样。 在使用过程中,有两点需要特别注意下:
  1. 当进行commit时,必须要生成一个Change-Id,否则,push到gerrit服务器时,会收到一个错误提醒。
  2. 提交者不能直接把代码推到远程的master主线(或者其他远程分支)上去。这样就相当于越过了gerrit了。 gerrit必须依赖于一个refs/for/*的分支。
  3. 假如我们远程只有一个master主线,那么只有当你的代码被提交到refs/for/master分支时,gerrit才会知道,我收到了一个需要审核的代码推送,需要通知审核员来审核代码了。
  4. 当审核通过之后,gerrit会自动将这条分支合并到master主线上,然后邮件通知相关成员,master分支有更新,需要的成员再去pull就好了。而且这条refs/for/master分支,是透明的,也就是说普通成员其实是不需要知道这条线的,如果你正确配置了sourceTree,你也应该是看不到这条线的。

vim基本常用命令大全

基本上vi/vim共分为3种模式,命令模式输入模式底线模式
命令模式:
   用户刚刚启动 vi/vim,便进入了命令模式。
   此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不  会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
  1. i 切换到输入模式,以输入字符。
  2. x 删除当前光标所在处的字符。
  3. : 切换到底线命令模式,以在最底一行输入命令。

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式:
  1. 字符按键以及Shift组合,输入字符

  2. ENTER,回车键,换行
  3. BACK SPACE,退格键,删除光标前一个字符
  4. DEL,删除键,删除光标后一个字符
  5. 方向键,在文本中移动光标
  6. HOME/END,移动光标到行首/行尾
  7. Page Up/Page Down,上/下翻页
  8. Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  9. ESC,退出输入模式,切换到命令模式
  10. q 退出程序
  11. w 保存文件

底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
  1. q 退出程序
  2. w 保存文件
按ESC键可随时退出底线命令模式。
简单的说,我们可以将这三个模式想成底下的图标来表示:


丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:工作开发中常用的Git、Gerrit和vim相关命令
喜欢 (0)
[247507792@qq.com]
分享 (0)
勤劳的小蚂蚁
关于作者:
温馨提示:本文来源于网络,转载文章皆标明了出处,如果您发现侵权文章,请及时向站长反馈删除。

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00