优雅的使用git搭建项目环境教程--轻松拉取合并protected的分支

Posted TC风之翼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优雅的使用git搭建项目环境教程--轻松拉取合并protected的分支相关的知识,希望对你有一定的参考价值。

首先下载git,安装(路径为英文),地址自找,o(╯□╰)o。

配置git基本环境


1) 打开git命令终端,或者在随便一个文件夹下,鼠标右键选择git bash here打开终端。

git config --global user.name "姓名"
git config --global user.email "你的邮箱"
ssh-keygen -t rsa -C "上面填的邮箱"
接下来按3个回车,密码为空
然后会出现一串英文,并且有个字符图形。

2) 打开C:\\Users\\Administrator 找到到一个.ssh文件夹,里面会多出id_rsa和id_rsa.pub文件。下面打开id_rsa.pub文=文件,然后拷贝里面内容。

3) 打开公司分配的git账号,登陆pc站点,找到自己的个人资料页面,在key一栏打开,添加刚才拷贝的秘钥。如果是gitlab,Profile settings里有个ssh-key菜单,看下图:

开始搭建项目环境

  1. 打开公司的gitlab之类的项目地址,fork下项目。
    此时在自己的项目管理页面可以看到一个带自己名字标识的公司项目,这时说明你已经拷贝项目到自己的远程仓库。比如gitlab,fork后在首页右侧可以看到xx/某某项目的目录结构。
  2. 打开自己的fork项目,找到ssh地址(不是https的地址,ssh更快更方便)
    拷贝地址,然后去你以后想存放项目的电脑目录文件夹里,鼠标右键git bash here。
    执行指令:git init,创建今后常使用的本地git仓库
  3. git clone 你刚才拷贝的项目地址,下载成功后,在仓库文件夹里可以看到项目文件了。
  4. 同样,打开公司项目地址,找到ssh地址,执行:git remote add mainline 公司远程主库的ssh地址。
    执行git remote -v,你会看到4行提示,其中mainline、origin各两个。mianline是你以后远程pull的地址,origin是你以后push的地址。
    即每次push到自己的fork库(远程仓库),然后提交new request merge请求,最后合并到公司的远程地址。
    而每次需要更新同步同事的代码,需要git pull mainline xx分支名,以此更新对应分支的代码。
  5. android studio里面vcs(右上角菜单栏)打开vcs enable,选择启用git。
  6. 测试pull,执行git pull mainline master,它会提示有更新或者已经最新,此时说明配置ok。测试push到自己远程仓库,git push origin master,同理。

  7. 如果需要建立本地分支并且以远程仓库的分支进行建立,执行下面指令:
    git checkout –track -b 你本地准备起的分支名 origin/xx分支名
    如果成功则会在命令中断右侧master会变成对应分支名。(csdn自动把两个-合并了,注意:track前面有2个”-“)

  8. 查看本地远程分支,git branch -r ,git branch

  9. 如果git pull mianline xx分支名提示代码有冲突,按下面操作(有很多方式,比较麻烦的是回退冲突版本,前提先备份。)

    1. 则先git stash ,把当前本地代码存到缓存区。
    2. 继续执行git pull mianline xx分支名
    3. 取出缓存区的代码,git stash pop,取出缓存区最新的存入代码,也可以指定取出哪一次存放的缓存。此时可能有冲突,会提示哪些文件冲突,然后在android studio里面可以看到原本git仓库里的项目文件报红色,解决<<<<<<=====>>>>>>标记的内容,”====”前面是你的代码,后面是pull下来的代码,由于冲突不能自动处理,所以需要你手动修改,有些代码需要人为按照业务逻辑处理,这个就是你们团队之间商量了。

特殊配置说明:上述操作比较麻烦,目前有更简单的方式处理主工程所在的远程库被protected的问题。主要是在创建本地分支时做特殊处理。
1. 假设当前主库(mainline)的开发分支为develop,本地需要在建立develop分支时,track跟踪关联对应的主库的分支。即创建的代码为git checkout -b develop mainline/develop。(或者改变原有的跟踪分支,使用git branch –set-upstream-to origin/debug debug,debug是你本地分支,origin/debug是远程分支;此后你可以同样去as里操作pull和push了。)
2. 这样你的本地该分支可以在android studio里用可视化操作了,点击vcs直接pull代码,这个时候拉取代码有冲突就不需要上面那样麻烦了,可以利用AS的可视化处理合并冲突。push代码时按照下图把push的库名改为origin(自己的远程fork仓库)。这样push完代码后,再去web站点去提交PR进行合并分支到主库。

3.git branch -vv,就能够看到本地分支跟踪的远程分支。

如果上述操作遇到问题:
1.fatal: Cannot update paths and switch to branch ‘develop’ at the same time.
Did you intend to checkout ‘mainline/develop’ which can not be resolved as commi
t?
解决方案:无法在远程分支之上建立分支,试试git remote update
git fetch 。
2.点击AS里的pull按钮,拉取代码提示could not read from remote repository
在git终端可以正常pull或者push,AS里push或者pull却会报上述错误
使用下面操作:
setting –> Version Control –>Git ,In the SSH executable 里选择Native

差异较大的分支合并或找回误回退的代码

1.git revert或者不小心覆盖了刚才新改新增加的未提交的文件


可以在1处鼠标右键,找到local history那一行,点击showhistory,可以看到整个项目最近的操作记录(红色2,3处可以只看部分module的变化,根据需要选择)。选择合适的时间点恢复需要的代码。点击左上角的返回键可以快速恢复到你选择的时间点,恢复对应修改的文件。

鼠标右键show diff

然后可以直接对比左侧之前的代码和右侧现在的代码了。

2.迁移分支差异比较大的部分代码块到当前分支

使用右下角AS自带的分支管理,选择compare,比较2个分支,然后看log或者选择下图中箭头所指的diff,


上图打开后,后续操作可以双击想看差异的文件,或者鼠标右键对应的文件,然后按照界面可以继续恢复或者其它revert动作。

附上神图:


未完待续,介绍如何处理pull代码的常见冲突,以及常见指令。

以上是关于优雅的使用git搭建项目环境教程--轻松拉取合并protected的分支的主要内容,如果未能解决你的问题,请参考以下文章

Git 如何优雅地回退代码

Git环境搭建(后期会更新SVN环境搭建教程)

如何用 Git 优雅回退代码,别搞错了!

2023年最新详细教程!手把手教你搭建Hexo + GitLab个人博客

git基础教程

Git系列在IDEA操作Git本地仓库与连接远程Git仓库(推送合并拉取克隆操作)