【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 的全局配置信 息:

# 查看所有的全局配置项
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

例如:

 

 

 在状态报告中可以看到新建的 index.vue文件出现在 Untracked files (未跟踪的文件)下面。未跟踪的文件意味着 Git 在之前的快照(提交)中没有这些文件;Git不会自动将之纳入跟踪范围,除非明确地告诉它“我需要使用Git跟着管理该文件”

 

以精简的方式显示文件状态

使用git status 输出的状态报告很详细,但有些繁琐。如果希望以精简的方式显示文件的状态,可以使用如下两条完全等价的命令,其中 -s是 -short的简写形式:

# 以精简的方式显示文件状态
git status -s
git status --short

未跟踪文件前面有红色的?? 标记,例如:

 

 

 

跟踪新文件

使用命令git add 开始跟踪一个文件。所以,要跟踪index.vue文件,运行如下命令即可: 

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文件已经被Git跟踪,并且工作区和Git仓库中的home.js文件内容保持一致。当我们修改了工作区中home.js的内容之后,再次运行git status和命令,会看到如下的内容:

 

 

 

文件home.js出现在 Change not staged for commit 这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区

注意:已经被修改过的、但还没有放入暂存区的文件前面有红色的M标记

 

 

 

暂存已修改的文件

目前,工作区中的index.html文件以被修改,如果要暂存这次修改,需要再次运行git add命令,这个命令是个多功能的命令,主要有如下3个功效:

  1. 可以使用它开始跟踪新文件 并把新文件添加到暂存区中

  2. 已跟踪的、且已修改的文件放到暂存区

  3. 把有冲突的文件标记为已解决状态

 

 

 

提交已暂存的文件

再次运行git commit -m “提交消息”命令,即可将暂存区中记录的home.js的快照,提交到Git仓库中进行保存

撤销对文件的修改

撤销对文件的修改指的是:把对工作区中对应文件的修改,还原成Git仓库中所保存的版本。

操作的结果:所有的修改会丢失,且无法恢复,危险比较高,请慎重操作!

撤销操作的本质:用Git仓库中保存的文件,覆盖工作区中指定的文件 所以这个被撤销修改的文件一定是要有提交到Git仓库中的文件

输入的命令为 git checkout -- 需要撤回的文件

注意-- 和需要撤回的文件之间有一个空格,否则不能生效

向暂存区中一次性添加多个文件

如果需要被暂存的文件个数比较多,可以使用如下的命令,一次性将所有的新增和修改过的文件加入暂存区:

git add .      // 注意这个点是英文状态下的点 

在项目开发中,会经常使用这个命令,将新增和修改过后的文件加入暂存区

取消暂存的文件

如果需要从暂存区中移除对应的文件,可以使用如下的命令:

git reset HEAD 要移出的文件名称

取消多个暂存的文件,命令如下:

git reset HEAD .

取消暂存的文件就是把文件还原到之前未进行暂存的状态

git restore --staged 需要取消暂存状态的文件

跳过使用暂存区域

Git标准的工作流程是工作区暂存区Git仓库,但有时候这么做略显繁琐,此时可以跳过暂存区,直接将工作区中的修改提交到Git仓库,这时候Git工作的流程简化为了工作区Git仓库

Git提供了一个跳过使用暂存区域的方式,只要在提交的时候,给git commit加上 -a选项,Git就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add步骤:

git commit -a -m "描述信息"

本质并没有跳过暂存区,只是把已跟踪且已修改的文件添加到暂存区,并提交

移除文件

从Git仓库中移除文件的方式有两种:

  1. Git仓库工作区同时移除对应的文件

  2. 只从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 的格式规范如下:

  1. # 开头的是注释

  2. / 结尾的是目录

  3. / 开头防止递归

  4. ! 开头表示取反

  5. 可以使用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

posted @ 2021-04-21 09:29  爱吃鱼的前端萝卜  阅读(50)  评论(0)    收藏  举报