Git 命令手册
Git管理的文件分为:工作区,版本库,版本库又分为暂存区stage和暂存区分支master(仓库)
工作区>>>>暂存区>>>>仓库
正向命令:
git init
将当前位置的文件夹设置为git可以管理的仓库
git add 文件名
将文件添加到暂存区
git commit -m “提交描述”
将暂存区的修改提交到仓库
状态命令:
git status
查看当前修改的状态,列出哪些是staged的(就是已经提交到暂存区的修改),哪些是unstaged的(就是没有提交到暂存区的修改)
git log
查看所有提交到仓库的记录
git relog
查看每一次命令
前面的数字就是当前head所在的编号
git diff
查看工作区和暂存区差异
git diff –cached
查看暂存区和仓库差异
git diff HEAD
查看工作区和仓库的差异
反向命令
git checkout – 文件名
git add的反向命令,撤销工作区修改,即把暂存区最新版本转移到工作区
一种是自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
Git reset HEAD 文件名
git commit的反向命令,就是把仓库最新版本转移到暂存区。
git reset –hard 版本号
或者 git reset –hard HEAD^ 之类的命令,实现整个版本的切换,HEAD代表最新的版本,^代表上一个版本
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD
,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,不过前提是没有推送到远程库,使用git reset --hard
分支管理
git branch 分支名
创建分支
git checkout 分支名 or git switch 分支名
切换分支,注意,这里checkout命令和撤销工作区更改的区别在于–和空格
git checkout -b 分支名 or git switch -c 分支名
创建并切换分支(相当于以上两条命令的叠加)
git merge 分支名
将指定分支合并到当前分支,想要查看当前分支的话使用git branch -vv
git branch -d dev
删除分支,通常使用是在merge了之后,不需要自己创建的这个分支了,就删掉
保留工作现场
场景:有时候因为没有完成这个分支上的更改,无法commit,变换只存在于暂存区,但是此时又需要切换到别的分支完成一些工作,需要把这个分支上暂存区的东西存起来,所以需要stash命令
注意:
如果没有stash的话(或者没有add到暂存区,或者add到暂存区了但没有stash),当前做的任何更改随着分支的切换回来到另外一个分支,这里就体现出了为什么需要stash一下了
git stash
把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash pop
恢复的同时把stash栈内内容也删了
git cherry-pick 版本号
这条命令可以把指定版本做的改变复制到当前分支
多人协作
- 查看远程库信息,使用
git remote -v
; - 本地新建的分支如果不推送到远程,对其他人就是不可见的;
- 从本地推送分支,使用
git push origin branch-name
,如果推送失败,先用git pull
抓取远程的新提交; - 在本地创建和远程分支对应的分支,使用
git checkout -b branch-name origin/branch-name
,本地和远程分支的名称最好一致; - 建立本地分支和远程分支的关联,使用
git branch --set-upstream branch-name origin/branch-name
; - 从远程抓取分支,使用
git pull
,如果有冲突,要先处理冲突。