Git是一个开源的分布式版本控制系统

优点:

1、本地仓库即为一个完整的项目,方便我们进行独立开发

2、绝大多数操作只需要本地即可完成,即使暂时没有网络, 也可以进行开发工作,只需要之后进行合并即可

3、便于对代码的历史版本的掌控,随时可以回退到任意版本,且历史提交与修改记录完整保存

4、便于迭代的管理,可以创建不同分支可以代表不同的功能用途(例如:master,dev,qa,release_1.x等等)

常用功能:

1、从远程仓库克隆完整的项目到本地进行开发

2、在本地创建分支,提交代码到本地/远程仓库

3、从远程仓库拉取最新的分支

4、在本地合并分支

5、在本地解决代码冲突

等等…………

 

 基本操作(以IDEA中的操作为例)

克隆项目(clone)

 

拉取分支与切换分支(checkout)

克隆远程仓库后,右下角会显示当前分支信息,点开当前分支,会展示本地仓库分支(Local)和远程仓库分支(Remote)。

若当前获取到的远程分支不统一的话,可以点上面的刷新,或者菜单栏中VCS—>Git—>Fetch,拉取远程仓库的最新内容。

 

选中对应的分支,选中Checkout即可切换选中的分支到当前工作目录下,如果是本地分支则会直接检出,如果是远程分支,并且没有本地分支与之对应,那么会让你新建一个本地分支与之对应。

 

一般情况下,本地代码应该先提交后再进行切换,否则切换分支的时候可能会遇到以下情况,Smart Checkout会将本地变更带到切换的分支上,Force Checkout不会,如果切换过程中有冲突,可能会需要解决,解决冲突操作同第5点。

 

提交代码(commit与push)

选择菜单栏VCS—>Commit/Git—>Push,或者idea右上角的Commit即可,会出现以下窗口,填写Commit Message后点击Commit,或者直接Commit and Push。

如果在push前没有进行过pull操作的话,push过程中同样可能会遇到需要merge或者解决冲突的情况,操作详见第4/5点。

 

 

代码与分支合并(pull,merge与rebase)

远程与本地合并

git pull是拉取远程分支上的变更,并且与本地分支合并的操作,在没有冲突的情况下,一般直接pull就行了。

在idea中,默认操作是Update Project,其中可以选择合并方式是merge或者rebase,视情况选择,但一般使用merge即可。

merge与rebase的区别可以参考网上资料。

不同的分支之间的合并

和切换分支类似,点击右下角当前分支名称,选择需要合并到当前分支的分支,点击Merge into Current或者Rebase Current onto Selected,将选中的分支合并到当前的分支。

 

 

冲突解决

主要会在以下几种情况时,出现冲突需要解决,但所有情况下,在Idea里面的合并操作步骤都是相同的。

在pull的过程中遇到代码冲突

push过程中的冲突 

合并分支时产生的冲突

切换分支时产生的冲突

以上所有情况,在有冲突的时候,都会出现如下提示,一般情况下不会选择Accept Yours(全部接受你当前的改动)/Accept Theirs(全部接受该分支当前的改动)。

 

选择Merge,会出现以下合并的弹窗,左边是你的版本,右边的当前远程分支的版本,中间为合并后的结果,如果都是自己的变动那就直接改,不然就需要和对方沟通后,把需要的代码合并到中间这个版本,完成后Apply即可,在本地确认编译运行无误后,再push到远程仓库即可。

 

 常见问题(以IDEA中的操作为例)

commit后撤销本地暂存

选中对应commit(未提交到远程仓库的),undo Commit。

 

想要回滚到某一个版本

1、revert(回退一次commit,会产生提交记录,但是需要一条一条commit来回退,对于只回退某一/几次提交的情况下比较好用)

2、reset(直接回退到某一次commit的情况,之后的提交记录会消失)

cherry pick

可以将某一次或多次提交,引入当前分支。

.gitignore文件

git提交时会默认忽略此文件中配置的一些文件或目录,建议配置,否则可能会将本地idea配置文件提交到远端

 

 

转自:https://www.cnblogs.com/sefuture/p/12980104.html