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