
一、IDEA GIT 可视化操作右击IDEA中的文件或文件夹选择GIT可查阅该图片内容展示的内容。Git 操作选项说明Add将文件添加到暂存区例如选择一个Student文件右击add,IDEA执行的GIT命令# 添加单个文件gitaddindex.html# 添加多个文件gitaddindex.html style.css app.js# 添加整个目录及其所有子内容gitaddsrc/# 添加当前目录下所有改动新增、修改、删除gitadd.Commit File…提交当前文件的更改到本地仓库。 (如果选中的是文件夹则是Commit Directory…下面的命令也是可以选择文件也可以选择文件夹)对文件进行编辑编辑学生之后把文件进行提交选中文件右击Commit。# 标准提交必须附带 -m 信息gitcommit-m修复登录页面的样式问题# 提交并跳过暂存区直接提交所有已跟踪文件的改动gitcommit-a-m直接提交所有修改gitcommit--all-m直接提交所有修改# 提交空内容允许没有任何改动的提交用于触发 CI/CD 等gitcommit --allow-empty-m触发构建# 直接提交指定文件gitcommit-m提交信息-- 文件路径1 文件路径2# 直接提交指定文件夹gitcommit-m提交信息-- 文件夹路径/Annotate显示当前文件每行代码的最后修改信息谁、什么时候、哪个提交IDEA可以直接在显示栏上右击。Show Diff查看当前文件与上一次提交版本之间的差异。对文件重新进行编辑点击Show Diff可以查看到本地更新的内容。Compare with Revision…将当前文件与指定的历史提交版本进行比较。对文件进行多次编辑和提交点击文件进行历史版本的比较选择需要比较的历史版本即可弹出与Show Diff类似的页面可以查看文件的不同。Compare with Branch…将当前文件与另一个分支中的同一文件进行比较。在这里使用命令新建一个纯空的分支,记得切换回master分支。gitcheckout--orphanstudentgitrm-rf.gitcommit --allow-empty-mEmpty branch选择一个分支进行比较因为该分支没有改文件所以对比只有自己的记录。Show History显示当前文件的完整提交历史记录。点击文件或文件夹点击Show History可以查看文件的历史提交记录都做了什么修改。Show Current Revision查看当前文件的最新提交版本内容。Rollback…将当前文件回滚到上一次提交的状态丢弃未提交的更改。在编辑完文件之后觉得修改的不好想要丢弃本地的修改选择文件或文件夹点击Rollback进行回滚。例如编辑了文件回滚之后可以对文件进行恢复。Rollback后Push…将本地提交推送到远程仓库。将本地该分支的所有Commit推送到远程仓库中进行团队协作。# 推送到默认远程仓库通常为 origin的当前分支gitpush# 推送到指定远程仓库的指定分支gitpush远程仓库名分支名# 完整格式gitpushremotebranch# 推送到默认远程仓库的当前分支gitpush# 推送到 origin 的 main 分支gitpush origin main# 推送到 origin 的 master 分支gitpush origin master# 推送到 origin 的当前分支等价于 git pushgitpush origin HEADPull从远程仓库拉取并合并最新的更改到当前分支。Pull fetch Merge# 从默认远程仓库拉取并合并当前分支gitpull# 从指定远程仓库拉取并合并指定分支gitpull远程仓库名分支名# 完整格式等同于 fetch mergegitpullremotebranch# 从默认远程拉取并合并当前分支gitpull# 从 origin 拉取 main 分支并合并gitpull origin main# 从 origin 拉取 master 分支并合并gitpull origin master# 从 origin 拉取并合并当前分支等价于 git pullgitpull origin HEADFetch从远程仓库获取最新的引用分支、标签和对象但不自动合并。# 从默认远程仓库下载所有分支的更新gitfetch# 从指定远程仓库下载所有分支的更新gitfetch远程仓库名# 从指定远程仓库下载指定分支gitfetch远程仓库名分支名# 下载所有远程仓库的更新gitfetch--allMerge…将其他分支的更改合并到当前分支。# 将指定分支合并到当前分支gitmerge分支名# 将指定远程分支合并到当前分支gitmerge远程仓库名/分支名# 合并指定提交gitmergecommit-hash# 将 feature 分支合并到当前分支gitmerge feature# 将 origin/main 合并到当前分支gitmerge origin/main# 将指定提交合并到当前分支gitmerge abc123def# 合并多个分支gitmerge feature-bugfix feature-loginRebase…将当前分支的提交重新应用到另一分支的最新提交之上变基操作。# 将当前分支变基到目标分支gitrebase目标分支# 将指定分支变基到目标分支gitrebase目标分支源分支# 交互式变基修改历史gitrebase-icommit-hashgitrebase--interactivecommit-hash# 将当前分支变基到 main 分支gitrebase main# 将 feature 分支变基到 main 分支gitrebase main feature# 将当前分支变基到 origin/maingitrebase origin/main# 将当前分支的前 N 个提交变基gitrebase-iHEAD~3Branches…管理所有分支查看、切换、删除等。New Branch…创建一个新的分支。会从当前分支的内容新建一个分支新建的分支内容和当前内容是一致的需要填写一个新分支名称。新建 fix-Student 分支可以看到内容和提交记录其实和master是一致的。New Tag…为当前提交创建一个标签通常用于版本标记。Tag是基于Commit新建的。查看标签Reset HEAD…重置当前分支的 HEAD 到指定状态可混合、软重置、硬重置等commit记录也会撤销。git reset 有三个核心模式区别在于是否修改暂存区和工作区先明确三个区域工作区本地文件未 add→ 暂存区git add 后→ 本地仓库git commit 后–soft最温和只移动 HEAD保留暂存区【绿色】和工作区【红色】的内容执行效果仅把分支指针退回上一个提交删掉最新一条 commit 记录暂存区内容完全保留不变工作区本地文件也完全原样不动之前 add 过的文件依旧处于待提交状态。一句话概括只撤销 commitadd 状态和本地代码全部保留可直接再次 commit常用于合并多次提交、修改提交备注。–mixed默认模式移动 HEAD重置暂存区【绿色】但保留工作区【红色】会使【绿色文件】会变【红色文件】执行效果分支指针退回上一个提交已 commit 的提交记录撤销已 add 暂存区的内容退回至工作区未 add 的本地文件修改完全保留不动所有改动都留在本地文件里只是退出暂存状态不会删除任何代码。一句话概括撤销提交 取消 add所有修改还在本地文件可手动重新 add 选择性提交不会丢代码。–hard最危险移动 HEAD重置暂存区【绿色】和工作区【红色】丢失所有修改本地未 add、已 add、已 commit 的所有新修改全部清空彻底回到上一个版本未备份的内容无法找回。执行效果分支指针退回上一个提交本地未 add、已 add、已 commit 的全部新增修改全部强制清空覆盖工作区文件直接强制还原为上一版快照暂存区直接清空未做任何备份的代码内容无法找回。一句话概括彻底丢弃所有本地改动与后续提交干净强制回退到指定版本高危操作。–keep尝试将你当前的本地修改以“未暂存的更改”形式保留下来。会使【绿色文件】会变【红色文件】想撤回提交并重写代码不动 → 选 Soft想撤回提交代码留着慢慢改 → 选 Mixed最常用、最安全不要命了彻底放弃当前所有修改 → 选 Hard慎选To Commit 内填写的内容理论上最好写提交的ID方便控制。Stash Changes…暂存当前未提交的更改以便切换到其他分支或拉取最新代码。编辑文本内容进行stash操作创建stash之后本地的修改会消失可以在unstash进行恢复stash之后就可以正常切换分支了。Unstash Changes…恢复暂存stash的更改。点击unstash,选择要恢复的记录如果恢复之后要删除该stash要选择Pop stash注意这个stash可以跨分支就是你在A分支进行的stash apply 可以到B分支进行 stash pop。Manage Remotes…管理远程仓库地址添加、删除、修改远程仓库。Clone…从远程仓库克隆一个完整的本地副本。Check out…Force相当于抛弃自己分支的内容使用目标分支的内容。Smart相当于使用自己分支的内容覆盖目标分支的内容。二、IDEA GIT COMMIT 可视化操作点击GIT 查看Log点击某次COMMIT记录可查阅图片中的内容Git 历史记录/提交上下文菜单选项说明Copy Revision Number复制当前提交的修订号Commit Hash。对某次提交右键复制该次提交的提交Hash值。Create Patch…基于当前提交创建一个补丁文件可用于在其他仓库中应用相同的更改。Cherry-Pick将当前提交的更改应用到当前分支上,也可以是其他分支。例如我这里在fix-student进行了文件修改并commint想把修改的内容合并到master分支则我可以在master分支对fix-student分支的commit进行cherry-pick操作。操作完成之后可以发现操作的commit记录和文件已经合并到master分支上。Checkout Revision ‘45a08789’检出指定的提交版本使工作目录进入“分离 HEAD”状态。它让你能在 IDEA 里穿越到项目的任何一个历史时刻查看或使用当时的代码。Show Repository at Revision在版本控制工具中查看当前提交版本下的完整仓库状态。查看和浏览某个历史版本的代码快照和Checkout Revision是一样的只是它在独立工具窗口中展示不会改动你正在编辑的代码而Checkout Revision会改变你本地工作区的文件状态。Compare with Local将当前提交版本与本地工作目录中的文件进行比较。Reset Current Branch to Here…将当前分支重置到当前提交的位置可选项软重置、混合重置、硬重置。和之前的Rest是相同的操作这里可以根据历史提交记录直接Reset操作会更方便。由于上面已经讲解了这里不在赘述。Revert Commit创建一个新的提交用于撤销当前提交所引入的更改。也可以对撤销的提交进行撤销在把数据恢复但是会多两次提交记录。Undo Commit…撤销当前提交但保留其更改内容在工作目录中。相当于把提交撤回并把本地仓库代码恢复到暂存区中这里恢复是代码是你已经修改过的代码。Edit Commit Message…修改当前提交的提交信息。Fixup…将当前提交合并到前某一个提交中并丢弃当前提交的提交信息。例如这里调整了性格与特长描述但是不想重新提交想提交到fix-txt-基础档案信息中把本地的提交提交到fix-txt-基础档案信息中会自动形成提交信息 带 fixup前缀提交完成之后会自动形成临时提交记录对原合并的提交记录进行变基操作开始变基变基完成之后临时提交记录消失本次修改的内容已合并到 fix-txt-基础档案信息中quash Into…将当前提交合并到前一个提交中并合并提交信息。和 Fixup 操作一致目的性也一致区别就是提交的记录信息。squash (压缩)会将这个提交的改动合并到前一个提交中并且会保留这个提交的日志消息。在变基过程中Git 会打开编辑器让你有机会将两个提交的消息合并成一条新的、更完整的提交信息。fixup (修正)同样是将改动合并到前一个提交但会丢弃这个提交的日志消息。最终只会保留前一个提交的原始消息压缩进来的改动不会在提交历史中留下任何文字痕迹。例如把新修改的内容提交到 fix-txt-性格与特长描述中点击生成新的提交记录变基执行变基变基之后临时提交记录消失修改的内容合并到目标提交记录中查看记录内容可以看到修改的内容在提交记录中Drop Commits删除选中的一个或多个提交。删除提交记录和提交中的代码改动。Squash Commits…将多个连续的提交压缩成一个提交。例如合并如下三个提交记录选中想要合并的提交记录会弹出记录框让我们修改提交信息例如我修改成这样点击OK合并成功Interactively Rebase from Here…从当前提交开始进行交互式变基操作可以调整、合并、编辑历史提交。Push All up to Here…将当前提交及之前的所有提交推送到远程仓库。Branch ‘origin/master’基于当前提交创建一个指向origin/master分支的引用通常用于查看或操作远程分支。New Branch…基于当前提交创建一个新的分支。New Tag…上面已经讲过了为当前提交创建一个标签通常用于版本标记。Go to Child Commit切换到当前提交的子提交。Go to Parent Commit切换到当前提交的父提交。三、其他GIT操作