更好的阅读体验
从大一就开始用git了,但是一直以来都是想到哪用到哪,时间一长一些命令就容易忘,这次就系统地记录一下git命名,也方便后续查询
在这里推荐一个可视化学习Git的网站
Git学习
工作区就是当前git的仓库的目录,工作区独立于各个分支
git将所有版本通过一棵有向树的形式存储,存放所有已经提交到本地仓库的代码版本
git暂存区是工作区和版本库之间的缓冲区,工作区在向版本库更新时不会直接放入,而是先放入暂存区,最后将暂存区中的内容放入版本库。注意到暂存区是git的一个公共区域,无论当前所处的分支在何处,暂存区都是一样的
当前版本所在的节点,每次创建时向head后加入节点并将内容放入其中
首先对于任何一个文件,在Git内都只有四种状态
表示没有跟踪 (add) 某个文件的变化,使用 git add 即可跟踪文件
表示某文件在跟踪后一直没有改动过或者改动已经被提交
表示修改了某个文件- 但还没有加入 (add) 到暂存区中
表示把已修改的文件放在下次提交 (commit) 时要保存的清单中
用于设置git全局信息
git config --global user.name xxx
设置全局用户名,信息记录在~/.gitconfig文件中
git config --global user.email xxx@xxx.com
设置全局邮箱地址,信息记录在~/.gitconfig文件中
git init
将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中
git add XX
将XX文件添加到暂存区
git add .
将所有已修改状态文件加入暂存区
git commit -m "给自己看的备注信息"
commit后暂存区清空
git status
用于查看当前仓库跟对应HEAD版本是否存在改动
git diff
当工作区有改动,暂存区为空,diff的对比是“工作区与最后一次commit提交的仓库的共同文件”;当工作区有改动,暂存区不为空,diff对比的是“工作区与暂存区的共同文件”
git rm --cached XX
删除索引后,文件不再受git管理
未跟踪状态
git rm xx
git restore xx
该命令将已修改文件变为未修改文件(包括删除),若暂存区有已修改文件,则恢复至暂存区文件,否则为原始版本
git restore --stage xx
将暂存区的文件从暂存区撤出,但不会更改文件的内容
将文件从已暂存恢复到已修改
git log
查看当前分支的所有版本
从空走到当前节点的路径
git reset --hard HEAD^ 或 git reset --hard HEAD~
将代码库回滚到上一个版本
git reset --hard HEAD^^
往上回滚两次,以此类推
git reset --hard HEAD~100
往上回滚100个版本
git reset --hard 版本号
git reflog
查看HEAD指针的移动历史(包括被回滚的版本)
git checkout
功能同git restore一致
git clone git@github.com:xxx/XXX.git
建立本地仓库与云端仓库的映射
git clone git@github.com:xxx/XXX.git
将文件下载到本地
git branch
git checkout -b branch_name
当前的分支内容与上一个节点内容一致
git checkout branch_name
git merge branch_name
将分支branch_name合并到当前分支上(本质上是修改引用)
git branch -d branch_name
git branch branch_name
首次推送时要先建立本地仓库与远程仓库主分支的映射关系
git push -u origin master
其中origin表示服务器端,即远程端,master表示主分支名
git push
根据当前分支推送到远程对应的分支
git push --set-upstream origin brabch_name
–set-upstream设置远程服务器端的分支仓库与本地分支仓库的映射
git push -d origin branch_name
删除远程仓库的branch_name分支
git pull
将远程仓库的当前分支和本地仓库的当前分支合并
也可使用
git pull origin branch_name
表示将远程仓库的branch_name分支与当前分支合并
git checkout -t origin/branch_name
将远程的branch_name
分支拉取到本地
git stash 是git中的一个栈空间,可以存放工作区和暂存区尚未提交的修改,常用保存部分可能有参考价值但又需要重写的代码
git stash
将工作区和暂存区中尚未提交的修改存入栈中
git stash apply
将栈顶存储的修改恢复到当前分支,但不删除栈顶元素
git stash drop
删除栈顶存储的修改
git stash pop
将栈顶存储的修改恢复到当前分支,同时删除栈顶元素
git stash list
查看栈中所有元素