git操作经验谈

一、代码从远程仓库拉取到本地(更新本地代码为最新)

涉及命令:git fetch / git pull

Q:区别?

A:git pull = git fetch + merge to local

使用场景:

1、本地分支aaa无修改,远程仓库分支aaa有修改,需要更新本地代码:

git pull

2、本地分支aaa有一些改动(通过git status查看是否有改动),远程仓库分支aaa有修改,需要更新本地代码:

方案1(推荐):git fetch更新远程分支→git merge(→ 解决冲突后,git merge –continue)

方案2:git stash暂存本地改动→git pull拉取远程分支合并到本地→git stash pop恢复本地改动

(以上操作可能需要合并冲突(命令行提示CONFLICT (content): xxxxxx),请参考下边的冲突处理)

其他场景待补充

二、冲突处理

展现内容:

gaudi:scenario-test (paycashier)$ git merge master
Auto-merging src/main/java/com/caocao/testgroup/scenariotest/component/AbstractTcpClient.java
Auto-merging pom.xml
CONFLICT (content): Merge conflict in pom.xml
Auto-merging conf/33.properties
Automatic merge failed; fix conflicts and then commit the result.
gaudi:scenario-test (paycashier *+|MERGING)$

Q:冲突发生的原因?

A:某文件的第n行内容在本地有改动或提交:local_commit(修改或删除),且合并的分支的提交:origin_commit中也对此行做了改动,并且local_commit和origin_commit不在一条提交链上(没有祖先/子孙关系)。

当合并两个提交时,则这一行被视为有冲突,不能被auto merging。

1、处理方法1–手动编辑:

编辑器打开冲突的文件,通过查找“=====”内容查找到冲突所在行,如下:

<<<<<<<<HEAD

other code

========

your code

>>>>>>>>your branch name

上方是远程分支上的更改内容,下方是本地分支的更改内容,需要你进行内容抉择,决定保存的内容(将<<<<<至>>>>>的内容替换为合并内容)修改完内容后,命令行git merge –continue。

2、处理方法2–IDE编辑:

推荐使用IDEA自带的Resolve Conflict进行可视化的冲突编辑。点击项目根目录,点击右键 → Git → Resolve Conflict,对每一个文件依次双击处理:

处理完毕后,点击Apply→ OK,即可保存此次文件内容。处理好所有文件内容后,命令行git merge –continue

三、推送本地分支到远程仓库分支中(提交本地代码到仓库)

一般来说master分支是禁止直接push的,正确的处理方式是将改动push到自己的分支中,然后在gitlab中提交PR,由他人(例如leader、有经验的团队成员)做code review后同意合并。

当你需要修改代码时可以通过:

git checkout -b dev_xxx_version (即git branch dev_xxx_version; git checkout dev_xxx_version)

进行开发分支的创建(当你已经在master分支上进行改动且未提交时,也可以执行以上操作,切换到新分支)。

进行一系列的commit后,通过

git push origin dev_xxx_version

的方式将自己的开发分支push到远程仓库中

四、自己的开发分支在日常操作时需要注意以下几点:

1、自己的开发分支在代码实现完成,且功能稳定后,要及时提PR,合并到master分支中,避免后续合并出现难以处理的冲突

2、不稳定的开发分支(实现未完成、测试期、BUG较多等)不要合并到master中,要时刻保证master分支的稳定

3、如果master分支有变更,需要定期地将master分支的内容merge到自己的开发分支中,避免①和主干分支的关键配置或者组件脱节严重,造成代码编译或运行出错;②后续合并出现难以处理的冲突

4、推荐的周期操作:git pull origin master, git pull origin 你的开发分支→ master合并到开发分支→ 开发分支上做代码实现、提交、测试→ master合并到开发分支(可选操作,当你开发周期较长时)→ 主流程测试→ push→ 提交PR

About the author: tangtao

2,909 comments to “git操作经验谈”

You can leave a reply or Trackback this post.

  1. verponit6 - 2019年6月25日 at 08:26 Reply

    tadalafil coupon generic cialis tadalafil coupon

  2. habzAnoxy - 2019年6月25日 at 02:10 Reply

    [url=http://onlineviaqer.com/]viagra generic[/url] generic viagra buy viagra

  3. Nilo Lemos Neto - 2019年6月24日 at 23:46 Reply

    Very rapidly this web site will be famous among all blogging people, due
    to it’s pleasant content

  4. grxvslivA - 2019年6月24日 at 18:04 Reply

    [url=http://sexviagen.com/]viagra[/url] viagra buy buy viagra

  5. Banco Paulista SA - 2019年6月24日 at 17:58 Reply

    whoah this weblog is fantastic i really like studying your posts.

    Stay up the great work! You realize, lots of
    persons are searching round for this information, you could aid them greatly.

  6. generic cialis - 2019年6月24日 at 14:53 Reply

    qual melhor viagra tadalafil ou levitra [url=http://cialislet.com/]online cialis[/url]
    tadalafil comprare forum.

  7. rgcfRuddy - 2019年6月24日 at 12:59 Reply

    [url=http://viagraocns.com/]buy viagra[/url] buy generic viagra buy viagra

Comment pages
1 57 58 59

Leave a Reply

Your email address will not be published.