git使用
本地
HEAD当前分支的最新提交- 分离HEAD:git switch 节点哈希值 :让head指向了某个具体的提交记录而不是分支名
查看分支状态
git status-s--short简洁模式- Untracked files
- not staged
- to be committed

添加到暂存区
git add .将工作区所有更改添加到暂存区stage.gitignore文件中的文件会被忽略
提交
git commit -m "描述"提交stage的一个快照到本地仓库git commit --amend修改最近一次提交(如某个文件多/少/错提交了)
撤销
-
git reset重置当前分支到指定提交点,之后的节点记录会被移除(适用个人分支/本地分支)
--mixed:保留工作区,移除暂存区(默认)
--soft:保留工作区和暂存区
--hard:移除工作区和暂存区(不建议)git reset HEAD撤销stage中add的所有内容git reset <file>撤销stage中add的指定文件git reset HEAD^撤销一次commit(重置分支的 HEAD 到 HEAD 的父提交)
-
git rm --cached <file>从暂存区删除某文件 -
git revert撤销某次提交;通过创建一个新的提交来实现撤销,从而保持了提交历史的完整性(适用协作的公共分支)git revert HEAD撤销最近一次的提交
整理提交记录
git cherry-pick <提交号>将指定的提交节点复制到当前分支- 如dubug分支的记录不想提交,可以cherry-pick debug后的分支到main
git rebase -i HEAD~3交互式rebase 会有一个UI窗口
标签
git tag tag_name <提交号>给某个提交打标签,默认给HEAD打
分支管理
新建分支
git branch name在当前节点上创建一个名为name的分支git branch -f main HEAD~3将 main 分支强制指向 HEAD 的第 3 级 parent 提交
分支切换
git switch name切换到分支name上git checkout -b name新建并切换git checkout -- <file>会用暂存区指定的文件替换工作区的文件git checkout HEAD .或者git checkout HEAD <file>会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件
分支合并
git merge name将name分支合并到当前分支(会新建节点)如果有冲突的话会报冲突,需要解决冲突git rebase name将name分支取出放到当前分支下 (可用于移动分支指针)
远程
远程分支:仓库名/分支名 远程分支反映了远程仓库在你最后一次与它通信时的状态
- 切换到远程分支时会进入分离HEAD状态,因为本地的修改必须push上去才能改变远程分支的状态
拉取
git fetch从远程仓库下载缺失的记录到本地&更新远程分支的指针- 不会改变你本地仓库的状态
git pull下载并和当前分支合并- == fetch + merge
git pull --rebase下载并rebase
上传
git push上传提交的内容并合并远程分支- ``

浙公网安备 33010602011771号