【*】在Github创建远程仓库
【*】在IDEA创建本地仓库
【*】将本地仓库推送到远程Github仓库
【*】将本地项目添加到索引(相当于缓存)
【*】将项目提交到本地仓库
【*】将项目提交到本地
【*】提交到远程仓库
【*】提交到远程
【*】刷新GitHu发现项目已经成功提交到了GitHub
【*】创建分支
- 第一步
- 第二步
- 第三步
- 第三步,标签所在的位置就是当前使用的分支
- 在当前Local_Dev上修改代码
- 切换到其他的分支
- 分支已经切换成功
【*】切换分支时,产生的问题A分支切换到B分支
- A分支切换到B分支时,A分支代码提交了,切换时直接就可以切换到B分支的代码,两个分支之前互不影响
- A分支切换到B分支时代码没有提交,就会弹出提示框
- 使用Force Checkout:A分支的修改会被覆盖掉,也就是A分支之前的修改不会生效,代码会丢失
- Smart Checkout:A分支切换到B分支时,IDEA会先执行stash命令,存储A分支未提交的代码,当再切换回A分支时代码时,会将之前的代码再从stash中取出来
- 使用Smart Checkout将A分支切换到B分支时之后,B分支会产生冲突,A分支将之前的代码的修改带到B分支上
- 此时有冲突的情况下,不可以切换分支,需要提交解决冲突之后的代码,此时被修改的文件会变成红色
- 红色文件:创建之后没有add,没提交,不在版本控制范围之内,这时候文件是红褐色的,需要先add文件;
- 不能直接提交,需要先添加索引才能提交成功
- 将冲突解决并提交之后,成功切换到A分支
- 切换到A分支之后,A分支之前的代码并没有还原,而是依然再stash里面,需要手动Unstash
- 之前未提交的代码还原成功
【*】比较本地之前的提交
【*】和其他的分支进行比较
- 第一步
- 第二步,选择远程的分支
- 第三步,进行比较
【*】将修改的代码提交到GitHub
- 找到修改的文件
- 将文件推送到远程仓库,此时提交的文件是已经提交到本地仓库的文件,没有提交到本地仓库没办法直接提交到远程仓库
- 在主分支的需改,才能提交到主分支上,想到将其他分支的修改提交到主分支,需要进行合并
- 其他分支的修改提交,会创建一个新的分支
【*】将远程仓库的代码克隆到本地
- 第一步
- 第二步
- 第三步
克隆下来之后,不要直接就根据idea的提示取创建,使用open选择打开clone下的项目文件夹所在的位置,避乱乱七八糟的麻烦
【*】模拟两个开发者提交代码
- 提交过程之前已经写了,此处已经提交成功
- 第一个开发者更新远程仓库的代码
【*】冲突场景
- 开发者二将代码提交到远程仓库
- 开发者一提交到本地仓库成功,提交远程仓库产生问题
- Merge和Rebase区别
Merge:会将当前分支和主分支进行合并,并且会留下合并的痕迹,使用git log --oneline --graph命令可以查看
Rebase:也是合并,项目历史呈现出完美的线性,但是安全性低,rebase 不会有合并提交中附带的信息不可跟踪,可以使用git reflog命令查看,但是也不好,
- rebase黄金法则
- 绝不要在公共的分支上使用它!
- 在你运行 git rebase 之前,一定要问问你自己「有没有别人正在这个分支上工作?」。如果答案是肯定的,那就不能rebase
- 所以此处点击Merge,merge之后会有冲突
- 我们一般选择Merge手动合并
- Merge详情
- 图片上的X和》符号
X:代表这一块代码不使用了
》:需要的代码,移动到最终的代码中
- 此处已经手动解决了冲突,但是点击Apply之后还不能提交,会弹出提示框,意思是让你做最后的确定,再重新提交
- 之后我们不能Add索引和提交到本地库,只需要确认之后提交到远程仓库,此处冲突已经解决完毕
【*】拉取远程代码场景2
我们在Git上拉取代码之后,为了是一个本地开发,所以需要修改配置文件,例如端口、IP、热部署等,所以在更新拉取代码时候,并不想将本地修改的配置文件覆盖掉,
【*】IDEA使用Git和远程仓库比较(极其重要)
- 需要先PULL
- 然后再进行Compare with Branch
- 此时才可以实现比较(哎,这个问题真的是搞的我......)
【*】PULL时远程和本地产生冲突
- 解决办法1:Stash Changes
- 再使用PULL
- 缺点
比如配置文件不想被更新,但是不更新没有办法拉取新的代码
- 使用