打算写一下Git的使用,以及集成Idea如何操作,之所以这么做的原因是因为,最近在版本迭代合并的时候,出现了问题。在分支合并master的时候合不进去,后来排查出来的结果是,可能是我在某次push的时候把其他不相关的代码也push了,然后导致了这个问题。问题是在我本地git日志看,并没有看到除了我代码以外的推送记录,比较吊诡的是,在别人的git log上却能看到。无奈自己对git的使用并不是非常熟悉,所以遇到这样的事情自己也说不上什么。所以写这篇文章的目的,也是避免这种事情再次发生在自己身上。


一、Git 理论知识

1.1工作区域

Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:

Workspace:工作区,就是你平时存放项目代码的地方。

Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息。

Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本。

Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换。

1.2 Git常用命令

用户名在使用Git的时候必须创建,这样在提交代码的时候才有对应的记录,主要用来区分是谁写的代码。 #### 1.3 Git分支 ##### 1.3.1 什么是分支? 在版本控制过程中,同时推进多个任务,我们可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离出来,开发自己分支的时候,不会影响分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。 ##### 1.3.2 分支的好处 同事并行推进多个功能开发,各个分支在开发过程中互不影响,失败的分支,删除重新开始即可。 ##### 1.3.3 分支操作命令 在解决冲突的时候如果是A合并到B, 则需要输入以下命令 ````````````shell #A合并到B,要切换到A视角上,然后将B合到A git checkout A git merge B ```````````` 如果有冲突 ````````````shell ...修改冲突文件 git add A (提交到本地库) git commit -m "解决冲突" (提交本地版本) ```````````` PS: A和B两个分支其实都是指向具体版本记录的指针。当前所在的分支,其实就是Head所决定的。所以创建一个分支本质上就是多创建一个指针,当head在哪个指针上,那么我们就在哪个分支上。 #### 1.4 Git集成Idea ##### 1.4.1 在分支下切换不同的提交版本 通过gitl log里面的checkout Revision 到对应的历史版本 ##### 1.4.1 创建分支 以当前分支为基本创建新的分支 ### 二、Idea集成git 遇到的问题: #### 2.1 IDEA GIT不提交当前分支修改的代码下如何切换分支   在工作中通常会遇见这样的情况就是:现在正在当前new分支下进行代码开发,这个时候在另一old分支上有一处bug需要修改,切换的时候就必须将new分支修改的代码进行提交,但是有可能这个未通过编译的代码,所以这个时候就是用git stash将new分支上修改的代码进行暂存。   git stash 命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容;git stash 作用的范围包括工作区和暂存区中的内容,没有提交的内容都会保存至堆栈中;例如突然线上出现 bug,我们需要先切换到 master 分支,但当前分支的代码没有提交,直接切换分支,会将当前分支的新增的代码也会增加到 master 分支,而代码又不能此时 commit ,于是这时候就可以使用 git stash。 **代码暂存还原: 选择之前保存的,同时勾选 Pop stash(还原完成后,会自动删除这个 stash,不勾选则不会删除这个 stash,具体选择看情况),点击 Pop Stash 按钮,工作区之前写的代码就会恢复回来** #### 2.2 IDEA GIT如何忽略文件 //TODO