Git命令手册

Git 命令手册

Git管理的文件分为:工作区,版本库,版本库又分为暂存区stage和暂存区分支master(仓库)

工作区>>>>暂存区>>>>仓库

正向命令:

git init

将当前位置的文件夹设置为git可以管理的仓库

git add 文件名

将文件添加到暂存区

git commit -m “提交描述”

将暂存区的修改提交到仓库

状态命令:

git status

查看当前修改的状态,列出哪些是staged的(就是已经提交到暂存区的修改),哪些是unstaged的(就是没有提交到暂存区的修改)

git log

查看所有提交到仓库的记录

git relog

查看每一次命令

前面的数字就是当前head所在的编号

image-20200129124442164

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,如果有冲突,要先处理冲突。