1.gitfolw是什么能干什么
是一种非常经典的分支管理和发布模型
特别适合管理有固定发布周期、需要并行开发多个功能以及需要长期维护多个版本的项目
五大分支:main、hotfix、release、develop、feature
核心是利用严格的分支模型,为不同的开发任务分配独立的分支,使得开发过程更加结构化
2.git基本命令及其他
3.git高阶命令
|------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------|
| 文件操作 | 命令 | idea |
| 有改动,无add | git checkout -- 文件名 | 右键->git->rollback |
| 有改动,有add | git reset --soft <commit> 只移动版本库的指针,不触碰暂存区和工作目录 git reset --mixed <commit>默认模式 移动head指针,并重置暂存区,但不触碰工作目录 git rest --hard <commit> 移动head指针,并重置暂存区和工作区。最危险也是最能毁尸灭迹的模式 | 右键->git reset 选择 mixed 或 右键-git rollback 等同于 git reset --hard |
| 有改动,有 add,有commit | git reset HEAD^ 一个^表示回退一步 或者 git rest HEAD~5 表示回退5步 | 右键->git->reset |
| 有改动,有add,有commit,有push | | |
revert与reset
rest通过移动分支指针,来删除提交,从而改写历史,它会让提交从提交历史中消失。
revert通过提交一个新的提交来抵消指定提交的更改。它不会改写历史,而是在历史记录中添加一个新的、反向的提交。
reset像是在书本上撕掉最后几页,故事直接从更早的地方开始
revert像在书本上新写一页,内容是"取消第x页中描述的所有操作",故事继续发展,但包含了这个修正步骤。
git stash 临时存储柜
它用于临时保存你当前工作目录和暂存区的修改,让你得到一个干净的工作区,以便进行其他操作,之后还可以重新应用这些保存的修改
临时存储: 右键 -> git -> git stash
恢复存储: 右键 -> git -> git unstash apply恢复,恢复后,stash内容并不删除,需要使用 git stash drop来删除
pop恢复,恢复的同时,把stash内容也删除了
git cherry-pick
cherry-pick命令用于将一个或多个特定的commit提交从一个分支复制到另一个分支,而不是合并整个分支
右键->cherry pick -> 会产生一个提交,选择该次提交,右键 解除绑定->undo commit
git fetch vs git pull
fetch可以理解为检查更新或预览远程变化,从远程仓库下载最新的元数据和对象(如提交,分支、标签),但不会修改你本地的工作目录或当前分支,仅仅是安全地查看远程变化情况。
git pull = git fecth + git merge
git merge vs git rebase
git merge就像胶水把两条绳子粘在一起。它承认两条分支独立发展的事实,并在汇合点创建一个新的合并提交把两者连起来,历史记录是真实的,但可能会显的复杂。
git rebase就像把一条绳子拆开,然后转接到另一条绳子的最新位置。它通过重新播放提交,使得历史看起来像是在一条直线上顺序发展的。历史记录更简单,但被改写了。