GIT协同办公

    技术2022-07-13  87

    最近在kwai暑期实习,开始真正接触企业的gitlab来代码托管实现协同办公,自己就来简单记录一下吧。 参考廖雪峰大佬的教程哦(他的Python教程也很棒)开始~

    首先Mac电脑的同学还是有福音吧,xcode里面集成了Git,APPstore获取xcode即可在idea或者android studio开启使用,windows要去下载,可以参照教程吧。

    创建代码仓库

    1、mkdir 创建空目录 2、cd到这个目录中,git init ,该目录及变为git管理的仓库

    Git添加文件需要add,commit一共两步: 因为commit可以一次提交很多文件,所以你可以多次add不同的文件 eg: $ git add file1.txt $ git add file2.txt file3.txt $ git commit -m “add 3 files.”

    添加文件到Git仓库,分两步: 1、使用命令git add <file>,注意,可反复多次使用,添加多个文件; 2、使用命令git commit -m <message>,完成。

    状态查看

    git status 查看状态(修改与否,是否add了) git diff filename 查看文件改变的部分

    git log 查看提交日志(类似各个版本的历史记录) git log --pretty=oneline 是更好的查看,只返回关键信息(版本号+备注信息)

    git reset --hard 1094a(版本号,不用写全写前几位直至能区分即可) 版本回退 git reflog 查看命令历史,以便确定要回到未来的哪个版本

    远程仓库——先有本地仓库

    这种情况是建立本地仓库,再去建远程仓库,建立联系以后把本地仓库推送上去

    1、从GitHub(或gitlab)新建立远程仓库。 2、然后在git bash中,在本地仓库中使用下面命令与远程代码仓库进行关联

    git remote add origin GitHub上的ssh或者HTTPS链接

    ssh快一些,但是有的公司只支持HTTPS

    3、关联后,使用命令 git push -u origin master 第一次推送master分支的所有内容;

    4、此后,每次本地提交后,只要有必要,就可以使用命令 git push origin master 推送最新修改;

    远程仓库——现有远程仓库

    这种情况是现有远程仓库,然后通过git clone 在本地克隆一个本地仓库

    1、cd进想放的目录位置 2、执行:

    git clone GitHub上的ssh或者HTTPS链接

    创建与合并分支

    ① git branch dev 创建dev分支(命名自定义,dev为举例) ② git checkout dev 切换到dev分支 git checkout -b dev ①+② —————————————————————————————————————— //在dev分支更改、工作以后: git add dev git commit -m "change xxxx " 提交更改 git checkout master 切换回master分支 //此时master还是原样,没有dev的劳动成果,需要合并dev分支: git merge dev 在当前分支合并dev分支 git branch -d dev 删除dev分支 *总结: Git鼓励大量使用分支: 查看分支:git branch 创建分支:git branch <name> 切换分支:git checkout <name>或者git switch <name> 创建+切换分支:git checkout -b <name>或者git switch -c <name> 合并某分支到当前分支:git merge <name> 删除分支:git branch -d <name>

    合并补充

    #想起的关于合并的题外话:

    git merge --no-ff -m "merge with no-ff" dev --no-ff 禁用fast forward

    得到的是这样的分支,不会造成数据丢失,直接git merge会丢失中间的修改过程。而这样会记录上次修改前样子。 合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

    分支改名与删除分支

    git branch -m oldName newName

    git branch -d dev 删除dev分支 git branch -D dev 强行删除dev分支,有时候未合并过的分支删除要通过强行删除才能删掉

    工作常用流程(协同办工)

    git fetch origin release/RB_7.5.50 将远端仓库release/RB_7.5.50下载到本地 git checkout release/RB_7.5.50 换到该分支 git branch 查看所有分支 git checkout -b live/** 新建并切换到该分支(取名) //chat_bug_fix 名字规范 书写、修改代码ing git commit -a -m “xxxxx” 提交代码,外加附带备注信息 git push origin xxxx(当前分支名) 推至远端,需输gitlab关联ssh的rsa密码 一般就下来就要去GitHub或者gitlab登记一下提交信息

    协同办公是git fetch origin时可能出现问题,无法提交原因是小伙伴已经对所提交分支进行了修改并提交,此时自己的版本比较老了,做法大致如下:

    1、首先,可以试图用git push origin branch-name 推送自己的修改;

    2、如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并; 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用返回提示的命令git branch --set-upstream-to origin/。

    3、如果合并有冲突,则解决冲突,并在本地提交;手动

    4、没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!

    这就是多人协作的工作模式,一旦熟悉了,就非常简单。

    解决冲突

    当从master分支创建并切换到dev分支,修改完并提交后回到master分支,再对master分支修改并提交,就会出现如下情况: 此时从master分支git merge dev是会产生冲突的,无法合并。此时用git status找到冲突文件,人工合并修改后,用git add 和 git commit再次提交,就变成如下情况,成功解决冲突实现合并。

    rebase:

    1、rebase操作可以把本地未push的分叉提交历史整理成直线;

    2、rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

    完——希望实习顺利,fighting!

    Processed: 0.012, SQL: 9