git的一些基本用法
前言
本文主要根据这一段时间对git的使用情况做一下记录,以后当忘记时还可以进行查阅。既然是记录就难免给人感觉像流水账。作为入门级的,感觉廖雪峰的git教程写的很好,扫盲了很多知识点。
git的基本操作
创建版本库----git init
当我们想把一个文件夹变成git可以管理的仓库时,只需要一条git init
即可,执行之后会在当前目录下面多一个.git
的目录,这个.git
目录就是来跟踪和管理版本库的。
#基本命令
git init
添加文件到版本库—git add
此命令将要提交的文件信息添加到索引库中(将修改添加到暂存区),它通常一次添加一个文件,也可以一次添加多个文件或者添加指定的目录,包括子目录。
#一次添加一个或多个文件到暂存区
git add [file1] [file2] ...
#添加指定的目录,包括子目录
git add [dir]
文件的提交----git commit
git commit
命令将暂存区内容添加到本地仓库中。
#提交暂存区到本地仓库,添加一条备注信息,如果没有-m选项,Git 会尝试为你打开一个编辑器以填写提交信息
git commit -m [message]
#提交暂存区的指定文件到仓库
git commit [file1] [file2] ... -m [message]
#-a 参数设置修改文件后不需要执行 git add 命令,直接来提交
#注意这里的文件要是之前提交过的,只是修改了内容。如果是一个新创建的文件,这条指令没用
git commit -am [message]
撤销命令—git restore
git restore
命令是撤销的意思,也就是把文件从暂存区撤销,回到未被追踪的状态。
#撤销工作区的改变,使文件恢复到改变前的状态
git restore <file1> <file2>...
#从暂存区撤销,回到未被跟踪的状态。--staged 参数就是表示仅仅恢复暂存区的
git restore --staged <file>...
#当前目录所有暂存区文件恢复状态
git restore --staged .
查询仓库当前状态----git status
git status
命令用于显示工作目录和暂存区的状态,使用 git status 命令能看到那些修改被暂存到了,哪些没有。当执行git status
的时候,返回结果大致可分为3个部分:
#基本的命令格式:
git status
#简短的输出结果
git status -s
查询提交信息—git log
git log
命令用于显示提交日志信息。
#基本命令
git log
#简单信息
git log --pretty=oneline
#查看电线图,多用于查看分支合并,图形化
git log --graph
查询真正的所有提交—git reflog
git log
有一个很大的缺点是,一旦发生git reset
,回退版本之后的提交信息将不在显示,如果我们想再回退回去,就会差不到相关记录。
#基本操作
git reflog
版本回退—git reset
git reset
命令用于将当前HEAD复位到指定状态。一般用于撤消之前的一些操作(如:git add,git commit等)。
git reset
的三种模式可以用下图很好的解释:
#--hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交
#--soft (--mixed)都不会改变工作区的内容
#根据提交的id进行回退
git reset --hard commit_id
#回退到上一版本
git reset --hard HEAD^
#回退到前100个版本
git reset --hard HEAD~100
工作区和暂存区
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
删除文件—git rm
如果要将一个文件从本地仓库中进行删除,可以用git rm
进行删除,并用git commit
进行提交。例如:
#如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中
git rm --cached <file>
#将文件从暂存区和工作区中删除
git rm <file>
git的分支管理
git创建一个分支—git checkout
或git switch
或git branch
#git checkout创建一个分支, -b参数表示创建并切换
git checkout -b <branchname>
#git branch创建分支
git branch <branchname>
#git switch创建分支,-c参数表示创建并切换
git switch -c <branchname>
切换分支—git checkout
或git switch
#git checkout切换分支
git checkout <branchname>
#git switch切换分支
git switch <branchname>
查看分支—git branch
#查看本机分支
git branch
#查看本机和远程分支
git branch -a
合并某分支到当前分支—git merge
#合并某分支到当前分支
git merge <branchname>
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
#禁用Fast forward模式合并分支
git merge --no-ff -m <message> <branchname>
删除分支—git branch
#删除分支
git branch -d <branchname>