【git】使用git开发常用指令
配置用户信息
安装完Git之后,要做的第一件事就是设置自己的用户名和邮件地址。
git config --global user.name "用户名"
git config --global user.email "邮件地址"
注意:如果使用了 --global 选项,那么该命令只需要运行一次,即可永久生效
Git的全局配置文件
通过 git config --global user.name 和 git config --global user.email 配置的用户名和邮箱 地址,会被写入到 C:/Users/用户名文件夹/.gitconfig 文件中。这个文件是 Git 的全局配置文件,配置一次即可 永久生效。
可以使用记事本打开此文件,从而查看自己曾经对 Git 做了哪些全局性的配置
# 查看所有的全局配置项 git config --list --global // 列出全局的配置项 # 查看指定的全局配置项 git config user.name // 只查看用户名 git config user.email // 只查看用户邮箱
可以使用 git help < verb > 命令,无需联网即可在浏览器中打开帮助手册,例如:
< verb >是想要获取帮助信息的命令的名称
# 打开 git config 命令的帮助手册
git help config
如果不想查看完整的手册,那么可以用 -h 选项获得更简明的“help”输出:
# 想要获取 git config 命令的快速参考 git config -h // 在终端里面打开简明的“help”输出
git status
例如:
# 以精简的方式显示文件状态 git status -s git status --short
未跟踪文件前面有红色的?? 标记,例如:

git add index.html
# 如果文件过多,你项跟踪目录下所有文件
git add .
此时再运行git status命令,会看到index.html文件在changes to be committed这行的下面,说明已被跟踪,并处于暂存状态:

现在暂存区中有一个index.vue文件等待被提交到Git仓库中进行保存。可执行git commit命令进行提交,其中-m选项后面是本次的提交消息,用来对提交的内做进一步的描述:
git commit -m "新建了index.vue文件" // 注意这个命令的 -m 后的提交描述不能为空
提交成功之后,会显示如下的信息:

提交成功之后,再次检查文件的状态,得到提示如下:


文件home.js出现在 Change not staged for commit 这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区
注意:已经被修改过的、但还没有放入暂存区的文件前面有红色的M标记

暂存已修改的文件
-
可以使用它开始跟踪新文件 并把新文件添加到暂存区中
-
把已跟踪的、且已修改的文件放到暂存区
-
把有冲突的文件标记为已解决状态

再次运行git commit -m “提交消息”命令,即可将暂存区中记录的home.js的快照,提交到Git仓库中进行保存
撤销对文件的修改
撤销对文件的修改指的是:把对工作区中对应文件的修改,还原成Git仓库中所保存的版本。
操作的结果:所有的修改会丢失,且无法恢复,危险比较高,请慎重操作!
撤销操作的本质:用Git仓库中保存的文件,覆盖工作区中指定的文件 所以这个被撤销修改的文件一定是要有提交到Git仓库中的文件
输入的命令为 git checkout -- 需要撤回的文件
注意-- 和需要撤回的文件之间有一个空格,否则不能生效
向暂存区中一次性添加多个文件
如果需要被暂存的文件个数比较多,可以使用如下的命令,一次性将所有的新增和修改过的文件加入暂存区:
git add . // 注意这个点是英文状态下的点
在项目开发中,会经常使用这个命令,将新增和修改过后的文件加入暂存区
取消暂存的文件
git reset HEAD 要移出的文件名称
取消多个暂存的文件,命令如下:
git reset HEAD .
取消暂存的文件就是把文件还原到之前未进行暂存的状态
git restore --staged 需要取消暂存状态的文件
跳过使用暂存区域
Git提供了一个跳过使用暂存区域的方式,只要在提交的时候,给git commit加上 -a选项,Git就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add步骤:
git commit -a -m "描述信息"
本质并没有跳过暂存区,只是把已跟踪且已修改的文件添加到暂存区,并提交
从Git仓库中移除文件的方式有两种:
-
从Git仓库和工作区中同时移除对应的文件
-
只从Git仓库中移除指定的文件,但保留工作区中对应的文件
# 从 Git仓库和工作区中同时移除 index.js 文件 git rm -f index.js # 只从 Git 仓库中移除 index.css,但保留工作区中的 index.css 文件 git rm --cached index.css 还有另外一种在工作区中删除文件的方式,: // 1.在工作区中删除相关文件 // 2.利用以下命令进行一个修改的提交 git add/rm 需要删除的文件
忽略文件
一般我们总会有些文件无需纳入Git的管理,也不希望他们总出现在未跟踪文件列表。在这种情况下,我们可以创建一个名为 .gitigore 的配置文件,列出要忽略的文件的匹配模式
特性:
-
只会忽略未跟踪状态下的文件
-
如果是已跟踪的文件,需要先把他从仓库中干掉,再重新创建一个未被跟踪的文件才可以被忽略成功
文件.gitignore 的格式规范如下:
-
以 # 开头的是注释
-
以 / 结尾的是目录
-
以 / 开头防止递归
-
以 ! 开头表示取反
-
可以使用glob模式进行文件和文件夹的匹配(glob指简化了的正则表达式)
glob模式
所谓glob模式是指简化了的正则表达式:
-
星号 * 匹配零个或多个任意字符
-
[abc] 匹配任何一个列在方括号中的字符(此案例匹配一个a或匹配一个b或匹配一个c)
-
问号 ?只匹配一个任意字符
-
两个星号 ** 表示匹配任意中间目录(比如a/ ** /z可以匹配a/z、a/b/z或a/b/c/z等)
-
在方括号中使用短划线分隔两个字符,表示所有在这量字符范围内的都可以匹配(比如[0-9]表示匹配所有的0到9的数字)
-
.gitignore 文件的例子
# 忽略所有的 .a 文件 *.a # 但跟踪所有的 lib.a. 即便你在前面忽略了 .a 文件 因为!为取反 !lib.a # 只忽略当前目录下的 TODO文件,而不忽略 subdir/TODO /TODO #忽略任何目录下名为 build 的文件夹 build/ # 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt doc/*.txt # 忽略doc/ 目录及其所有子目录下的 .pdf 文件 doc/**/*.pdf
查看提交历史
如果希望回顾项目的提交历史,可以使用git log这个简单且有效的命令
# 按时间先后顺序列出所有的提交历史,最近的提交在最上面 查看最新版本之前的历史版本 git log # 只展示最新的两条提交历史,数字可以按需进行填写 git log -2 # 在一行上展示最近两条提交历史的信息 git log -2 --pretty=oneline # 在一行上展示最近提交历史信息,并自定义输出的格式 # %h 提交的简写哈希值 %an 作者名字 %ar 作者修订日志,按多久以前的方式显示 %s 提交说明 git log -2 --pretty=format:"%h | %an | %ar | %s" #查看所有的历史记录 git reflog
提示:当提交历史较多,一页看不完的时候,最下面会有一个 :在这个:后面敲回车可以查看下面的内容 如果不想看了,按Q退出
回退到指定的版本
# 在一行上展示所有的提交历史 git log --pretty=oneline # 使用git reser --hard 命令,根据指定的提交ID 回退到指定版本 git reset --hard <CommitID> # 在旧版本中使用 git reflog --pretty=oneline 命令,查看所有的命令操作的历史 git reflog --pretty=oneline # 再次根据最新的提交ID ,跳转到最新的版本 也就是可以再次根据ID回退到最新的版本中去 git reset --hard <CommitID>
注意:当回退之前的某个历史版本的时候,使用git log是查看不到所有的命令操作历史的,必须使用git reflog才可以基于这个前提下查看到所有的命令操作历史。
以上是查看文件状态及版本和提交到暂存区的各种指令,下面来说一说协作开发常用的分支及推送指令
// 本地创建分支,xxx就是你的名字,用英文,创建指定名称的新分支,并立即切换到新分支上 git checkout -b xxx // 将分支推送到远程 git push -u origin xxx // 查看分支 git branch // 创建新分支 git branch 分支名称 // 基于当前分支,创建一个新的分支 // 切换分支 git checkout 需要去到的分支名称 // 例如: git checkout login // 合并分支 #1.切换到master分支 git checkout master #2.在master 分支上运行 git merge 命令,将 login 分支的代码合并到master分支 git merge login // 删除分支 git branch -d 分支名称
温馨提示:
1.在创建新的分支时是基于当前所处的分支所创建的分支,建议最好都是基于master主分支进行创建的,如果当前所处的是功能分支上,要切换回到主分支,然后再进行分支的创建,这是一个不成文的约定
2.当要删除某个分支的时候,不能处于这个被删除的分支上,所以要先切换到master主分支上再执行删除命令
一般删除都需要在合并分支到主分支之后再执行,否则删除会不成功,除非使用强制删除命令 git branch -D 需要强制删除的分支名称。但是这样的话没有合并的分支上的内容会丢失
如果在两个不同的分支中,对同一个文件进行了不同的修改,Git就没法干净的合并他们。此时,我们需要打开这些包含冲突的文件然后手动解决冲突
#假设:在把reg分支合并到master分支期间
git checkout master
git merge reg
# 打开包含冲突的文件,手动解决冲突之后,在执行如下命令
git add .
git commit -m "解决了分支合并的冲突"
以上都是在本地进行分支操作,下面开始把分支推送到远程仓库中去
远程分支操作
本地仓库添加和远程仓库的绑定
git remote add 远程仓库的别名 远程仓库的地址
将本地分支推送到远程仓库
如果是第一次将本地分支推送到远程仓库,需要运行如下命令:
# -u 表示把本地分支和远程分支进行关联,只在第一次推送的时候需要带 -u 参数 git push -u 远程仓库的别名 本地分支名称:远程分支名称 #实际案例 git push -u origin payment:pay # 如果希望远程分支的名称和本地分支名称保持一致,可以对命令进行简化 git push -u origin payment
注意:第一次推送分支需要带 -u 参数,此后可以直接使用 git push 推送代码到远程分支
查看远程仓库中所有分支列表
通过以下的命令,可以查看远程仓库中,所有的分支列表的信息:
# 查看所有的分支列表的信息
git remote show 远程仓库名称
# 查看所有的远程分支
git branch -a
跟踪分支
跟踪分支指的是:从远程仓库中,把远程分支下载到本地仓库中。需要运行的命令如下:
# 从远程仓库中,把对应的远程分支下载到本地仓库,保存本地分支和远程分支名称相同
git checkout 远程分支的名称
# 实例
git checkout pay
# 从远程仓库中,把对应的远程分支下载到本地仓库,并把下载的本地分支进行重命名
git checkout -b 本地分支名称 远程仓库名称/远程分支名称
# 示例:
git checkout -b payment origin/pay
拉取远程分支的最新的代码
可以使用如下的命令,把远程分支最新的代码下载到本地对应的分支中:
# 从远程仓库,拉取当前分支最新的代码,保持当前分支的代码和远程分支代码一致
git pull
删除远程分支
可以使用如下命令,删除远程仓库中指定的分支:
# 删除远程仓库中,制定名称的远程分支 git push 远程仓库名称 --delete 远程分支名称 # 示例 git push origin --delete pay
查看远程仓库
# 查看远程仓库的名称
git remote
# 查看远程仓库详情
git remote -v
总结:
-
能够掌握Git中基本命令的使用
-
git init 初始化git仓库
-
git add 和 git add .
-
git commit -m "提交信息"
-
git status 和git status -s
-
-
能够使用Git创建和维护远程仓库
-
能够配置Github的SSH访问
-
能够将本地仓库上传到Github
-
-
能够掌握Git分支的基本使用
-
git checkout -b 新分支名称
-
git push -u origin 新分支名称
-
git checkout 分支名称
-
git branch
-
-
还有一个必备的命令,拉取最新的代码
-
git pull
-

浙公网安备 33010602011771号