ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【gerrit中】Git相关整理

2021-03-19 20:01:07  阅读:228  来源: 互联网

标签:git gerrit Git master ssh 提交 整理 commit 分支


小白入门

——如何从0开始,提交自己的代码到远程

1. 先确保自己下好了git:

检查是否安装git的命令:
git version

安装git命令
sudo apt-get install git

偷偷补充一下mac上如何下载git:
1、通过homebrew安装Git
·首先,若未安装homebrew,需安装homebrew(一般mac会自带的)
/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
· 命令行安装git
brew install git

2、通过Xcode安装
直接从AppStore安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。

Windows上如何下载git:
似乎直接在官网上下下来安装包就OK了

2. 配置git用户、邮箱:(后续连接远程和提交代码都要用,一定记得配置为自己信息)

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

**3. 获取连接远程许可: **

不是谁都可以随便往我们的代码仓库提交东西

ssh命令生成密钥(钥匙–许可,用于告知仓库自己拥有打开的权限):
ssh-keygen -t rsa -C “email@example.com”

​ 注意执行命令后需要进行3次或4次确认(建议一路回车):

  • 确认秘钥的保存路径(如果不需要改路径则直接回车);
  • 如果上一步置顶的保存路径下已经有秘钥文件,则需要确认是否覆盖(如果之前的秘钥不再需要则直接回车覆盖,如需要则手动拷贝到其他目录后再覆盖);
  • 创建密码(如果不需要密码则直接回车);
  • 确认密码;

创建好了密钥,接下来就是找到它:
cat ~/.ssh/id_rsa.pub

然后终端中会显示一小段乱码,将其复制下来 (**注意一定全部复制,从我们命令的下面一行起,不要有任何遗漏,遗漏会导致连接无法成功 **),

接着到gerrit-settings中的ssh-public key中新建一个key,讲刚刚复制的密钥内容粘贴进去( 其它的代码管理平台也是一样的套路 )

4. 获取远程项目

很好,走到这里我们已经做好了全部的准备工作,可以正式开始加入大队伍,拉取代码、提交代码了。

首先,我们先将远程大佬们建好的我们要加入的项目直接克隆到本地一份,

这里依然要注意一下,git执行完克隆命令会自动将文件放置在当前目录下的。

所以一定一定先选好位置,确保自己的项目克隆到你想要的位置,不然克隆完发现放到了自己不想放的地方或者甚至找不到就尴尬了,

这个克隆命令一般平台会自动生成,我们找到对应的地方去复制就好,是类似下面的命令:

git clone ssh://XXXXXX.git@xxxxx.com/projetName

在gerrit中呢,就到Project-list中找项目,点进去就直接可以看到啦

(这里介绍的是小白同志参与项目建设所需的过程,所以是拉取项目代码,而非新建项目)

这里可能会遇到这样的问题:

Unable to negotiate with xx.xx.x.xxx port xxxx:
no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

这是Git server和client使用的ssh key解析算法不一致导致的问题,client默认使用新的key exchange method,而server只提供 diffie-hellman-group1-sha1 方法,因此无法正常建立链接。

解决方法:

在.ssh文件夹( 一般在当前用户的家目录~下)中编辑config文件
( 如果没有、直接新建:  vim config ),
在config文件中保存以下内容:(注意*号与Host间有空格)

Host *
KexAlgorithms +diffie-hellman-group1-sha1

5. 提交代码

本地修改/增加完成后,提交文件:

  • 创建并切换到新分支( 基于master ) :

    `$ git checkout -b 功能分支名			//创建并切换到新分支
    
    //-b 是新建分支并切换( 一般不用 )、不加是直接切,add-demo是分支名	】
    

    **branch有这么三条命令,都是我们很常用的: **

    (这里有一篇专门的git教程,解释branch的原理解释得很透彻,推荐一下:

    https://git-scm.com/book/zh/v2/Git-分支-分支简介

    真的是非常好,有时间可以全部看一下,对git会有进一步的理解)

    下面先粗略地介绍这三条命令:

    `$ git checkout 功能分支名		
    //切换到已有的某个分支
    (我自己基本都直接用vscode自带的branch管理器,直接点,好找好操作, vscode——值得拥有,所以一般命令行用上面的 `checkcout -b` 多一点)
    
    `$ git branch		
    //查看本地现有的所有分支(现在所在的分支会被着重标出)
    
    `$ git branch -d 	功能分支名		
    //删除不再用的分支
    (这个分支中有内容的话,是删不掉的,需要用 `-D`才好使,
    但是请一定确认不再使用再删除,删除的分支是可以恢复,但还是有点麻烦的)
    
  • 确认文件状态:

    `$ git status`
    //显示暂存区及还未暂存的改变(已存为绿色,未存为红色,commit之后这里就啥也没有啦)
    
  • 将修改后的内容保存到暂存区:

    `$ git add .
    //这表示将所有文件中的改变都暂存,一般来说这就够用了
    
  • 将所有暂存区文件提交到本地仓库(commit前一般要再add一下,确保将所有的改变都提交了):

    这里注意commit请保持只有一个commit,负责后面会出现提交失败的问题

    (git不知道你要提交哪个commit中的修改)

    `$ git commit 
    //新建一个commit,在我们的gerrit中一个patch中只有第一次提交会用这个命令,之后请一定都用下面命令:
    
    `$ git commit —amend 	
    //直接修改上一次的提交(不会生成新的commit)
    
  • 提交前,最好切换到master分支、更新一下项目:

    ( 这个操作可以不用每次都进行,但是最好隔一小段时间就来一次,确保自己本地的分支与整个项目的进度保持一致 )

    `$ git checkout master	//切换到master分支
    
    `$ git pull origin master	//拉取远程代码、更新本地分支内容
    
    切换到功能分支,并应用master分支的更改:
    `$ git checkout功能分支名 	//切换到自己的patch分支
    
    `$ git rebase master()	//应用在master分支远程拉取到的信息更新
    
    此时会出现合并冲突的问题,因为你本地做了一定的改动,会和pull下来的信息不一致,需要手动解决一下
    
    然后需要终止rebase操作,不然在rebase状态(git 会切到一个暂时存在的分支,专门用于解决冲突,所以这时你也并不在自己的分支里)是不能够进行提交操作的,所以要进行以下操作:
    
  • 结束rebase状态:

    `$ git rebase —continue
    //合并了冲突(将你解决后的变化归入这个commit)
    
  • 正式向远程提交:

    `$ git review
    

    中途遇到问题需要切换其它分支或其它什么操作时,可以对现在的本地工作进度进行存档:

    stash命令用得好可以解决很多开发过程中的问题,这个单独会开一个附加文件来讲

    `$ git stash		//当前工作现场存档
    
    `$ git stash list		//查看stash list
    
    `$ git stash pop   	//工作现场恢复(同时会删除stash list中的第一条)
    

后续附加内容:

git中还有不少点很值得更深入的了解:

  • commit
  • rebase
  • stash
  • reset

这些会在后续分不同的小文章进行介绍

一点友善的提示:

这里还要提到一点,git很多时候非常的友好,大部分出错的情况下它都会给出一些切实可行的方案,注意留意提示信息哦

以及,不要记着用git提供给我们的提示中的命令,最好先查一下资料,避免产生一些不可挽回的损失

标签:git,gerrit,Git,master,ssh,提交,整理,commit,分支
来源: https://blog.csdn.net/qq_41701027/article/details/115014483

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有