一、工程管理
1、首次克隆
选择File->New->Project from Version Controll
点击后在弹出框中选择Git,并输入信息
点击Clone按钮后,等待idea下载代码,即完成克隆。
2、导入idea之前克隆的代码
File-> New ->Project from Existing Sources
3、多工程管理
若是需要打开多个工程,先一个个克隆到本地,再选择
从这里面import
4、按钮介绍
(1)commit
导入工程后右上角会出现git标志, 其中对钩表示commit。
也有的idea版本push按钮也在右上角
(2)其他按钮:
在项目(或者空白处)右击,选择Git,可以出来很多命令。
二、分支切换
1、分支切换方法
ieda git自带分支切换功能,支持一键切换版本。克隆完成后,右下角会出现git版本信息(默认出现的是master主干),点开选择相应分支,鼠标右键点击CheckOut即可切换分支。
如我选择的feature-2.55 。
多个工程方法一样
idea4.1的分支管理在左下角,且默认隐藏了工程目录,需要手动展开
2、选择分支
如仓库变更了分支,现在想切换到新增的分支上,
点击这个获取分支的箭头获取最新的分支信息,再CheckOut到新分支上即可。
三、本地变更隐藏与释放
1、stash隐藏本地变更
git Stash Changes
点击后会弹框输入日志,输入后确认即可
注意:git stash的前提是本地没有飘红(未add)的文件,如果本地有大量冲突又stash不了,可以使用git add . 命令一键add(不用解决内容的冲突),然后再statsh。
2、unstash释放变更
点击后有个列表选项,选择需要释放的选项:
四、更新代码
每次commit代码为防止冲突应该先更新代码。而更新代码为防止发生冲突、代码覆盖等问题,应按先隐藏本地变更-->更新代码-->释放本地变更-->解决冲突的顺序:
1、stash隐藏本地变更
2、更新代码
这时再去拉代码,选中某个项目(在项目上右键),再点击git->pull。
3、unstash释放本地变更
如有冲突,解决。
五、提交代码:
注意:每次提交代码前应该按照上面的步骤先更新代码,更新后再进行下述提交操作:
1、commit提交到本地缓存
点击右上角git 对钩,commit代码
在弹出框中勾选需要commit的代码,输入日志,确认后点击commit
2、push缓存提交到仓库
在项目上右键,找到git -> push,确认信息后点击push即可。
commit、push可以多个项目同时提交,也可以单个提交。如我点击对钩后会把所有工程本地的变更显示出来,需要提交哪些,勾选复选框即可。
3、push代码冲突解决:
push时git会自动检查本地代码是不是最新的,不是会强制更新,先触发更新再触发提交,而commit不会有这个校验。所以如果commit之前没有更新代码,push代码时发现本地不是最新代码:
(1)只是没有更新代码,而更新后没有冲突:push时会提示你是否merger,点击确定后,git会自动fetch-->push你的变更-->merger你本地没有更新的别人的变更;
(2)没有更新代码且更新后发生了冲突:push时会给你多种选择,视情况选择merger(合并),merger their(用仓库的变更覆盖自己的)、merger your(用自己的覆盖仓库的)。解决方法同更新代码释放本地变更后的冲突。
六、merge合并
1、目标分支有权限
需要发起merge request,等待审批完成才会merge。这种情况我个人喜欢在网页上操作。
2、目标分支无权限
如把源分支master合并到目标分支dev-wtyy,
(1)本地check out到dev-wtyy;如果担心冲突git stash本地变更;
(2)在master上右键选择update,获取master的最新代码;
(3)在Master上右键选择git-->merge into dev-wtyy,即完成merge。
(4)git unstash本地变更。
七、还原本地改动:
1、还原未commit的
(1)方法1——rollback
rollback是回滚本地的代码,不会回滚已经commit的。
选中项目中需要还原的文件,右键git ->Rollback
或者点击commit查看本地变更时,也可以在需要还原的文件上右键选择Rollback
(2)一键还原
双击当前分支,右侧会出现log,找到想还原的版本,点击选择 Reset Current Branch to Here...
弹出窗口中选择:
-
Mixed
(保留修改) 或 -
Hard
(放弃所有修改,包括冲突文件)
2、还原已经commit的
回滚本地的commit(这个commit的所有内容,包含merge内容)。
(1)双击分支,在右侧出现所有commit;
(2)筛选找到目标commit,在目标commit上右键选择Revert commit;这一步相当于回滚了本地
这个coomit的所有代码,又自动产生了一次commit;
(3)push。
八、cherry-pick
也是合并代码,但是可以针对commit维度来合并。cher-pick是本地操作。现在以master上cherry-pick部分代码到realse分支为例:先将本地chek out 到最新realse分支
1、获取最新master代码:
在master分支上右键选择update,获取最新的master代码
2、挑选目标commit
双击master,在弹出的页面中找到目标commit记录,支持按照提交人、日期搜索。如我搜索我提交的:
3、cherry-pick
对于一个commit:
(1)整体cherry-pick:
如果需要同步整个commit的改动,在commit上右键选择cherry-pick即可;
(2)部分cherr-pick:
点击commit,右侧会展示该commit所有的改动文件,在文件上右键选择cherry-pick selected changes即可,这时cherry-pick不会自动commit
4、push
最后push到realse分支即可。
九、查看提交日志:
在项目上右键,选择git ->show history