git使用与工作流程

1.将本地代码更新为远端的最新代码

这分两种情况,本地代码不存在,用git clone将代码拉过来;本地已存在,使用git pull更新本地代码

a.本地不存在项目代码,首先将代码由仓库clone到本地:git clone https://github.com/mnmlist/Algorithms.git

b.本地已存在代码,直接git pull一下更新下本地代码为最新,当然这是全部分支都更新,也可以使用git pull origin 

branch_name来仅更新某个分支的代码最最新


2.对代码进行修改

分支介绍

修改前一定先确定在自己要在哪个分支上做修改,否则修改过后才发现自己在master或develop上就麻烦了,还需要取消

自己的修改。

a.master分支:一般master分支是线上代码分支,生产用的代码都在该分支上,容不得任何差错;

b.test分支:test是qa分支,给测试人员用的,一般也不允许有任何问题;

c.develop分支:develop分支是给开发测试人员测试自己代码是否合格的分支,一般是在自己的分支上测试没问题后才

可以合并到develop分支上;

d.任务号分支:自己的开发分支,一般对应某个具体的任务,开发完成后就可以将其删除;


如何将分支切换到自己的分支上呢?

a.已经有自己的分支号,直接git checkout branch_name即可以切换到自己的分支上;

b没有自己的分支号,一般需要自己手动创建,git branch branch_name,然后在git checkout branch_name切换到该分

支上,也可以直接使用git checkout -b branch_name完成上述两个步骤,创建分支并切换到该分支上;


下面有个问题,所谓的创建分支,创建的分支的代码跟哪个一样呢?

a.新分支在哪个分支上创建,所创建的分支的代码就和哪个分支一致;

b.一般自己该如何新建分支呢?一般情况下master是生产用的代码,理论上是没有任何问题的,所以一般创建分支都是

在master分支上创建新的分支,然后在新分支上修改;


3.对修改代码进行提交

a.首先使用git status查看修改了哪些文件,使用git diff查看对文件的哪些部分做了修改;

b.保存代码修改:可以分条对文件进行保存,git add file_path/file_name分条保存文件,也可以通过git add . 来保存所有

的修改,但是使用git add . 保存的话要慎重,这需要你在.ignore文件里配置不需要提交的文件,如项目每次运行所新生成

的文件,.class文件、.impl文件等,否则可能就会把.dev分支的代码搞乱,所以使用git add .前一定保证自己.ignore文件

里进行了相应的配置

c.使用git commit命令来对上述的保存进行相应的说明,git commit -m "对上述文件做了哪些修改"

d.在提交最代码的修改前一定要pull下远程的代码,如果有几个人在同一个分支上协同开发的话,在你pull远程代码到本地和

对代码修改后提交到远端之前,远端的代码可能已经改变了,所以git push推送自己的代码之前得先pull下远程最新代码,

如果pull过来后,远程跟本地有冲突,解决冲突后再提交代码;

e.通过git push origin branch_name将自己最新的修改推动到远端;


4.合并代码

a.一般合并代码会有个方向的问题,这个一定要注意,否则后果非常严重

b.一般合并代码的顺序是首先在本地测试自己分支的代码,本地测试没有问题后才可以考虑合并代码;

c.合并分支的顺序为:首先将自己分支的代码先合并到develop分支,本地测试没什么问题后,将修改push到develop远端,

在远端部署项目develop分支的代码,然后交给项目经理测试,项目经理测试有问题的话再修改代码,push到分支远端,

继续往develop提交合并修改,再让项目经理测试,只至没有什么问题,然后才可以考虑往test分支提交。往test分支提交

代码过程和往develop提交是一致的,合并完成并部署成功后交由QA测试,这时的测试人员是QA测试人员,一般是不允许

程序出现什么问题的,否则后果也很严重;qa测试人员通过代码的测试后然后才能往master分支上合并,合并过程和往

test和develop合并一样。

d.从c中可以看出,合并代码的过程为自己的分支->develop,自己分支->test,自己分支->master合并的过程,不存在develop,test

和master之间的合并。

e.合并的过程中会有冲突,一定要谨慎地处理冲突,否则就有可能把别的代码给删掉,一个不怎么好的实践就是直接将远程的develop

分支代码拷贝过来,然后将自己的修改再添加进去,这中情况仅仅针对mybatis那种sqlMapper.xml文件类似的冲突的自己不知

怎么快速解决冲突的情况,一般情况下自己是可以快速解决冲突的。

f.解决冲突后一定要自己在本地运行下代码,代码没有什么问题后才可以将自己的修改add,commit,push到远端;


5.tips

a.当自己相放弃某个文件的修改时可以采用git checkout -- file_name,亦可以通过git co .来放弃自己对当前分支所有文件的修改;

b.当自己将自己分支的代码搞乱后可以使用git reset hard --HEAD来恢复该分支与本地分支的最后一次修改一致;也可以使用git
reset --hard origin/master来恢复本地分支与远端的master分支一致。

c.使用git log查看对该分支的所有修改的log,使用git shortlog来查看对该分支的所有修改log。

d.如果想放弃本地的所有修改和commit,强制让本分支与远程的master一致,可以使用git fetch origin master,git reset --hard 
origin/master,再pull一下就发现远程分支的代码已经和master一致了。

e.git co -- <file_name>,抛弃工作区修改,git co .抛弃工作区所有修改

f.git commit --amend用来修改git commit的注释内容


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值