Git总结
- IT业界
- 2025-08-15 17:39:01

Git介绍 一、Git常用命令
添加、提交
git add 将文件从工作区添加到暂存区,表示git开始追踪文件,如果不想让git追踪了,可以使用 git rm --cached <file> 取消文件追踪,仅仅只代表追踪取消,工作区文件还是照样存在 git mv 重命名文件,相当于mv +git rm + git add 如果add以后,我再改动了文件,想要撤销这次修改?就可以使用 git restore file 或者使用 git checkout -- file 回到上一次add以后的状态。注意这里不能直接删除文件 注意上述命名和git rm --cached file 的区别,前者是取消修改,后者是取消追踪! 如果我想取消add呢?就使用git提示的命令 git restore --staged <file> 注意与上述命令的区别 git commit -m "message" 将暂存区的文件提交到本地库,并添加注释,加-a可以自动添加到暂存区 git commit --amend 修改上一次提交的message删除
删除仓库中所有没有跟踪的文件,清除编译生成的临时文件 git clean -i 表示以交互的形式删除文件 git clean -n 查看所有即将被删除的文件 git clean -f 表示强制删除 git clean -d 递归删除目录历史记录、分支
git log 查看提交历史 --oneline:每个提交一行 --graph:显示分支结构 --stat:显示文件删改信息 -p:显示详细的修改内容 git reset --hard <版本号> 可以将HEAD指针回退到之前的版本号 git checkout git switch 切换分支 git checkout -b <本地分支> <origin/远程分支> 将远程仓库里指定的分支拉取到本地,并在本地创建一个分支与指定远程仓库分支关联起来。并切换到新建的本地分支中 git branch -a -r -v 所有分支,远程分支,每个分支的最后一次提交 git branch --merged 查看哪些分支已经合并到当前分支,意味着可以-d删除 git branch --no-merged 查看哪些分支没有合并到当前分支,此时-d删除会出错,除非-D强制删除 git branch -vv 可以查看分支跟踪信息,以及是否领先、落后 git merge <分支test> 将test分支合并到当前分支,注意这里只会修改当前分支的内容。 比如有test和master两个分支,同时修改了txt文件,test修改一行,master修改第二行,虽然人看起来合并结果没有冲突,但是git确定不了,因此会提示冲突,此时人为解决冲突再合并即可。合并完成以后master分支就是同时修改了第一行和第二行的结果,而test分支不变。 git merge git merge --squash的区别暂存修改
使用场景:在dev分支开发的时候,需要去hotfix分支解决bug,但是不想放弃当前的修改,就可以使用git stash保存起来 值得注意的是,只有git add进去的文件,才能被stash追踪。 git stash == git stash save 查看堆栈里的修改 git stash show||list 应用堆栈中最新的修改,且不丢弃 git stash apply 应用堆栈中最新的修改,且丢弃 git stash pop远程
git remote -v 查看当前所有远程库地址的别名 git remote add <别名> <远程地址> 给远程库地址添加别名 git push <别名> <分支名> 将分支推送到远程地址,没有别名也可以填地址,但是比较麻烦 实际上这个命令的完整命令是 git push <远程主机名> <本地分支名>:<远程分支名>如果本地分支名与远程分支名相同,则可以省略冒号: git push <远程主机名> <本地分支名> 比较常见的是 git push origin master 因为一般是git clone下来的,然后git默认把远端地址别名取为origin git pull <远程主机名> <远程分支名>:<本地分支名> git pull 和 git push 命令类似,当远程仓库存在改动时,为了保证本地和远程同步,就要使用git pull 事实上git pull相当于git fetch + git merge git fetch命令格式与git push也类似。 eg: git fetch master:new_feature_branch表示从远程的master分支拉取更新到本地的new_feature_branch分支变基
git rebase -i HEAD~2 背景是当前我有两个commit,时间上是a,b。然后可以使用该命令将b压缩到a上面。 fixup参数代表squash压缩。如果顺序反了会有错误提示,--abort这次rebase即可。 git checkout feature git rebase master 将当前分支feature变基到master分支origin的一些解释 git变基以及更多例子 git fetch的一些解释
二、Git内部原理git核心组成部分:HEAD文件、index文件、objecs目录、refs目录。
HEAD文件指向目前被检出的分支 index文件保存暂存区信息 objects目录存储所有数据内容 refs目录存储指向数据(分支、远程仓库和标签等)的提交对象的指针
参考知乎动图
下一篇
如何创建加载项(1)