git_No.1_版本管控的全流程

文章目录

  • 1.获取Git仓库
    • 1.1 已存在目录中初始化仓库
    • 1.2 克隆一个仓库
  • 2. 将变更提交到仓库
    • 2.1 查看当前文件状态
    • 2.2 跟踪新文件
    • 2.3 暂存已修改的文件
    • 2.4 忽略文件
    • 2.5 查看已暂存和未暂存的修改
    • 2.6 提交更新
    • 2.7 跳过使用暂存区
    • 2.8 移除文件
  • 3. 查看提交历史
  • 4.远程仓库
    • 4.1 查看远程仓库
    • 4.2 添加远程仓库
    • 4.3 从远程仓库中抓取与拉取
    • 4.4 推送到远程仓库
    • 4.5 查看某个远程仓库
    • 4.6 远程仓库的重命名与移除
  • 5. 打标签
    • 5.1 列出标签
    • 5.2 创建标签
      • 5.2.1 附注标签
      • 5.2.2 轻量标签
      • 5.2.3 给历史推送打标签
    • 5.3 共享标签
    • 5.4 删除标签
  • 6. Git别名

1.获取Git仓库

1.1 已存在目录中初始化仓库

如果想对某个目录下的文件进行版本控制,可以利用git来进行版本控制。
操作步骤1
进入需要版本控制的目录下

cd /test

操作步骤2:
初始化仓库

git init

在执行完git init后,目录下会产生一个.git的子目录,该目录中记录着git仓库中所有的文件。
git_No.1_版本管控的全流程_第1张图片

1.2 克隆一个仓库

克隆一个仓库就是将一个远程仓库中某个仓库的全部信息(文件信息和版本信息)拷贝到本地。
HTTPS协议方式
在GitHub远程仓库中获取某个仓库的Https协议的方式。
git_No.1_版本管控的全流程_第2张图片

git clone https://github.com/vuejs/awesome-vue.git

克隆完成后结果:
git_No.1_版本管控的全流程_第3张图片
此时就会在目录下创建,以相应仓库名称命名的文件夹,该文件夹下保存了仓库的所有信息。
git_No.1_版本管控的全流程_第4张图片
如果本地仓库的名称和克隆仓库的名称不同,可以通过git clone url name方式自定义本地仓库名称。
git_No.1_版本管控的全流程_第5张图片
git_No.1_版本管控的全流程_第6张图片

2. 将变更提交到仓库

Git中文件状态变化周期如下:
未追踪状态:表示没有添加进仓库进行追踪的文件。
未修改状态:表示已经添加至仓库中,且没有进行修改的文件。
修改状态:表示已经添加至仓库中,且已经修改过的文件。
暂存状态:表示已经添加至本地仓库,但是没有提交的文件。
git_No.1_版本管控的全流程_第7张图片

2.1 查看当前文件状态

git status命令用来查看文件的状态。
这种提示表示,所有已跟踪文件在上次提交后都未被修改,且没有出现任何处于未跟踪状态的新文件。
在这里插入图片描述
git status -s或者git status --short命令表示以简短的形式查看文件的状态。

2.2 跟踪新文件

git add filename命令用来跟踪filename这个文件名,其中filename可以*通配符表示多个字符。当filename为文件时,表示追踪该文件,当filename为文件夹时,表示追踪该文件夹下所有文件。
git add *表示添加所有文件。

2.3 暂存已修改的文件

git add指令是一个多功能命令:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。将这个命令理解为“精确地将内容添加到下一次提交中”而不是“将一个文件添加到项目中”要更加合适。

2.4 忽略文件

表示忽略追踪哪些文件。通常是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。
创建.gitignore文件,每一行中填写需要忽略的文件名称的正则表达式。
文件.gitignore的格式规范如下:

  • 所有空行或以#开头的行都会被Git忽略
  • 可以使用标准的glob模式匹配,它会递归地应用在整个工作区中。
  • 匹配模式可以以/开头防止递归
  • 匹配模式可以以/结尾指定目录
  • 要忽略指定模式以外的文件或目录,可以在模式前加上叹号!取反。
    glob模式是指shell所使用的简化了的正则表达式:
  • *匹配零个或多个任意字符
  • [abc]匹配任何一个列在方括号中的字符
  • ?只匹配一个任意字符
  • 如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配。
  • 使用**表示匹配任意中间目录。
# 忽略所有的.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

2.5 查看已暂存和未暂存的修改

git diff表示查看尚未暂存的文件更新了哪些部分。比较的是工作目录中当前文件和暂存区域快照之间的差异。也就是修改之后还没有暂存起来的变化内容。

git diff --staged表示查看已暂存的将要添加到下一次提交里的内容,对比已暂存文件与最后一次提交的文件差异。

2.6 提交更新

git commit命令用来将已经暂存的文件提交。
在提交更新之前,需要确认还有什么已修改或新建的文件还没有git add过,否则提交的时候不会记录这些尚未暂存的变化。这些已修改但未暂存的文件只会保留在本地磁盘。
git commit -m "commits"命令用来在提交暂存文件时,提交相应的注释信息。

2.7 跳过使用暂存区

git commit -a -m "comments"命令用来自动把所有已经跟踪过的文件暂存起来一并提交。
新建的文件无法被提交!

2.8 移除文件

要从Git中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区移除),然后提交。
git rm filename命令用来从删除指定的文件,并从git暂存区中移除相应的文件。
如果要删除之前修改过或已经放在暂存区的文件,则必须使用强制删除选项-f。
在这里插入图片描述
git rm --cached filename命令表示将filename从暂存区中移除,但是不删除本地磁盘中文件。

3. 查看提交历史

git log命令用来查看提交历史信息。
git log -p -n命令用来查看每次提交所引入的差异,-n表示显示最近n次的差异

4.远程仓库

4.1 查看远程仓库

git remote -v命令显示需要读写远程仓库使用的git保存的简写与其对应的url。
git_No.1_版本管控的全流程_第8张图片

4.2 添加远程仓库

git remote add 命令用来添加一个url的远程仓库,并将其命名为shortname。

4.3 从远程仓库中抓取与拉取

git fetch 命令会访问远程仓库,并拉取所有你还没有的数据。执行完后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
git fetch命令只会将数据下载到你的本地仓库–它并不会自动合并或修改你当前的工作。当准备好时你必须手动将其合并入你的工作。
git pull命令会自动抓取后合并该远程分支到当前分支。

4.4 推送到远程仓库

git push 命令用来将branch分支的内容推送到remote远程仓库中。
该命令只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。
当和其他人共同合作时,通常需要先抓取他们的工作,并将其合并进你的工作后才能推送。

4.5 查看某个远程仓库

git remote show 查看某一个远测仓库的更多信息。

4.6 远程仓库的重命名与移除

git remote rename oldname newname命令用来将oldname的远程仓库别名修改为newname。这个操作,同样会修改该远程仓库分支的名称.
git remote remove name命令用来移除别名为name的远程仓库。

5. 打标签

Git可以给仓库历史中的某一个提交打上标签,以示重要。

5.1 列出标签

git tag命令用来列出已有的标签。
git tag -l 命令用来列出满足name规则名称的标签名称。

5.2 创建标签

5.2.1 附注标签

存储在Git数据库中的一个完整对象,它们是可以被校验的,其中包含打标签者的名字、电子邮件地址、日期时间和标签信息,并可以使用GPG签名验证。
git tag -a -m 命令用来添加一个tagname的标签,并指定了一条将会存储在标签中的信息comments。
git show 命令用来查看标签信息和与之对应的提交信息。

5.2.2 轻量标签

轻量标签像一个不会改变的分支–它只是某个特定提交的引用。
git tag 命令用来添加一个轻量标签。轻量标签本质上是将提交校验和存储到一个文件中,没有保存任何其他信息。

5.2.3 给历史推送打标签

git tag -a 其中commit hash表示历史中提交的版本的hash值。
在这里插入图片描述

5.3 共享标签

git push 命令表示将tagname共享到remote name仓库中。
git push --tags命令表示将多个tagname共享到remote name仓库中。

5.4 删除标签

删除本地仓库上的标签。
git tag -d 命令用来删除本地仓库中tagname的标签。
git push :refs/tags/命令用来更新远程仓库的标签。
git push --delete 命令同样用来删除远程仓库的标签。

6. Git别名

就是用自定已的命令名称来代替一些git默认的命令。
git config --global alias. 命令用来表示用aliasname命令代替origin order命令。

你可能感兴趣的:(开发基础技能,git,github)