git 配置账号密码
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱地址"
拉代码
file ->new ->project from version control
输入拉取代码的链接
第一次拉取时并没有安装git会在idea下载git
然后输入阿里云云效账号密码
更新代码
git update project
添加到暂存区 git add 需要添加到暂存库的文件名
提交到本地库 git commit -m "日志信息(名字可以任意取)" 暂存区需要添加到工作区的文件名
提交到码云上面,git push origin master
查看历史记录 git log
git log显示最近到最远的提交日志,我们可以看到两次提交,最后一次是append ABC
git的版本号是用SHA1计算出来的一个16进制数
如果嫌输出信息太多,可以加上--pretty=oneline
回退历史版本 git reset
查看状态 git status
拉取码云上的所有文件到项目中来,git pull origin master
切换分支 git checkout 分支名
合并分支(正常合并)git merge 需要合并的分支名 //把指定的分支合并到当前分支上
合并分支(合并冲突)
注意事项就是当前分支和合并的分支都不要同时修改,多人合作时,商量好,最好是等到上一个人合并好之后,下一个人再合并进去/提取出来
git branch -vv
git checkout -b dev-1 origin/dev
切换创建远程分支
git 提交注释:
feat: feature(功能)的缩写,通常用于版本控制系统中记录新增的功能。
fix: 表示修复错误或问题。
docs: 文档(documentation)
style: 格式(不影响代码运行的变动)例如,缩进方式、命名约定等调整都属于格式上的变动。
refactor: 重构,是指对已有代码进行优化和改进,以提高可读性、可维护性或性能等方面。
chore: 构建过程或辅助工具的变动,这可能包括更新依赖项、配置文件更改等。
revert: 撤销,版本回退
perf: 性能优化,意味着对软件系统进行修改以提高其执行速度和效率,并减少资源消耗。
test:测试
improvement: 改进,表示对现有功能或系统进行增强或优化。
build: 打包
ci: 持续集成(Continuous Integration) 是一种软件开发实践,通过频繁地向共享存储库中集成自己开发中完成且经过测试通过,并在新版本上传后立即检查是否引入错误。
解决冲突 merge rebase
rebase看着好看,但是其实没有展现出真实的合并情况,所以要不要用主要看历史记录有没有用。
对于临时的个人分支建议用rebase,对于比较重要的分支合并,不建议用rebase。 比如,你早上起来上班开了个分支,下班就合并掉了,就用rebase,但是对于dev-1.0.9这样的分支,往master合并的时候建议用merge。
如果是两个相同权重的分支 建议用merge, 如果是个人分支合并到主要分枝建议用rebase. 其实对于大部分程序员的开发日常, 用rebase总是没错的。
idea使用git
新建分支
1首先,单击 “Remote Branches” 下的 “origin/master” 分支,单击选择 “New Branch from Selected…”
其次,弹出对话框,输入你要新建的分支名称。例如,feature-1.1.0,单击“Checkout”,表示创建该分支同时切换到 feature-1.1.0 分支。
2然后,创建分支 feature-1.1.0 成功之后,可以在 “Local Branches” 下看到此时有两个分支分别为feature-1.1.0 和 master,这表明本地仓库中已经有了新建的分支了。
3但是 “Remote Branches” 下依然只有一个 master 分支,表明在我们的远程仓库依然只有一个master 分支,因此我们还需要把在本地仓库新建的分支推送到远程仓库中,这样就可以在远程仓库中看到新建的分支了。
单击 feature-1.1.0 ,然后在左边单击 “Push” ,弹出推送对话框。单击 “Push” 推送到远程仓库,这样分支新建操作彻底完成,可以看到在"Remote Branches"分支下面出现了“feature-1.1.0”,我们可以在该分支进行编码并进行拉取和推送操作。
删除分支
在删除分支之前,建议先切换到(Checkout)其他分支,例如,Checkout到master分支,当然这并不强制,只是为了方便删除分支而已。
1、首先,在 “Local Branches” 下单击分支 feature-1.1.0,左边弹出选项选中 “Delete”.
2、然后,在对话框中勾选“Delete tracking local feature-1.1.0 as well”,意思就是同时删除远程和本地仓库中的 feature-1.1.0 分支。
删除成功之后,出现提示信息 “Deleted Branch:feature-1.1.0”,并且可以在 Git Branches 下看到最新的分支情况。
比较分支
分支比较就是对比不同分支之间的差异。例如,需要比较当前所在分支与 master 分支之间的差异,可以选择需要对比的 master 分支,然后单击 “Compare with Current”,在弹出的窗口可以看到具体的差异。
合并分支
合并分支是将 A 分支合并到 B 分支,A 分支称为源分支,B 分支称为目标分支。
合并分支的流程务必规范:先将 master 分支合并到新分支,之后再将新分支合并到 master 分支。
以 feature-1.1.0 分支和 master 分支为例,将 feature-1.1.0 分支合并到 master 分支中。
1、首先,切换到 feature-1.1.0 分支,将 master 分支合并到 feature-1.1.0 分支中。单击 “Local Branches” 下的 master,选择 “Merge into Current”,这里的 Current 是指目标(feature-1.1.0)分支 ,也就是将 master 分支合并到 feature-1.1.0 分支中,合并成功之后可以看到提示。
2、然后,切换到 master 分支下,将 feature-1.1.0 分支合并到 master 分支。
3、最后,我们可以看到在 “Local Branches” 下的 master 分支有个绿色的小箭头,这是因为我们刚才的分支合并在本地仓库操作的,并没有将远程的 feature-1.1.0 分支合并到 master 分支中。因此,我们还需要将 master 分支推送到远程仓库,点击 Push 或者使用快捷键 Ctrl+Shift+K 推送到远程仓库即可,推送成功之后绿色提示小箭头也会消失。
合并分支
如果自己的分支开发了新功能,要合并到某一分支里面
需要checkout到要合并的分支那里,然后,选择有新功能的分支,merge into到要合并进去的分支
产生冲突的话,需要merge选择留下的代码
然后push到远端
几个常用快捷键
快捷键 操作解释
Ctrl+K commit changes(提交变化到本地仓库)
Ctrl+Shift+K push commits to push(将本地仓库的变化同步推送到远程仓库)
Ctrl+T update project(将远程仓库的代码合并更新到本地)
Ctrl+Alt+Z Rollback(代码回滚)
IDEA git 版本回滚
1、未commit,进行回滚
已经add到暂存区,但是未commit到本地版本库的改动有两种:
-
新增的文件
-
修改的文件
新增的文件直接删除即可,如果是修改的文件,使用roll back来回滚。在local change里面,选择想要rollback的文件即可:
也可以直接右击要rollback的文件然后rollback也行。
2、commit未push,进行回滚
undo commit
commit到本地版本库并且还未push的代码,可以在log里右击单次提交进行undo commit:
需要注意的是undo commit只能从最后一次commit开始回滚,undo commit后会要求选择一个变更列表来存放回滚后的内容,可以自己新建一个,比如此处的commit test,也可以在下拉框里选择一个已经存在的,如果是自己新建的变更列表,勾选了set active选项,后续的变动也会存放到该变更列表中:
可以看到多了一个变更列表:
变更列表有什么用喃?其实变更列表可以把它视为一个命名空间,就是用来做资源隔离的,在进行commit的时候需要下拉选择不同的变更列表来进行提交:
revert commit
类似于undo commit 不过会留有记录日志信息
reset
有时候我们需要直接将本地的代码回滚到版本库的某一个版本,这时候可以使用reset来进行回滚。reset有几种模式:
soft,将版本回滚,工作区不动,暂存区=原来的+回滚后和回滚前的版本差异。
mixed,将版本回滚,回滚到了所有 git add 和 git commit 的命令执行之前。暂存区变为空,变更全部到了工作区。
hard,将版本回滚,将所有工作区和暂存区的文件修改全部清空,是真正的覆盖,不能找回了。
keep,将版本回滚,将所有commit的内容丢弃掉,未commit的内容保留。
在log上选择要回滚到的具体版本:
reset时会要求选择回滚的模式:
3、已commit&push,进行回滚
对commit&push的内容进行回滚其实就是对远端仓库的代码版本进行回滚,在实际开发中偶尔会将内容误推送到了远端仓库上去。比如commit的message写错了,查看log的时候才发现,比如不小心将本地还没有开发完成的代码推送到远端仓库了,由或者合并冲突或者分支的时候合并错了......等等这些情况都要我们对远端仓库的代码进行回滚。
回滚的方式其实很简单,就是将本地的代码版本回滚到指定版本(至于是用revert还是reset,看自己),然后将本地的版本用git push -f强推到远端。
在IDEA中可以在terminal中执行指令: