git知识点梳理
发布日期:2021-06-29 15:52:12 浏览次数:3 分类:技术文章

本文共 4197 字,大约阅读时间需要 13 分钟。

目录

官方介绍

在这里插入图片描述

​ Git is a distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

​ Git is and has a . It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like , convenient , and .

在这里插入图片描述

概念

工作区、暂存区、本地库、远程库

使用

配置签名

设置用户名和email

  • 有两个级别:项目级别和用户级别
    • git config命令设置项目级别
    • git config --global设置系统级别
  • 级别不同,签名生效范围不同
  • 优先使用项目级别的签名
  • 不允许没有任何级别签名
git config user.name consolegit config user.name console1@qq.comgit config --global user.name consolegit config --global user.name console1@qq.com

注意:git全局配置文件存放在用户目录下的.gitconfig文件中

项目级别的配置文件存放在项目文件夹下 .git/config文件中

命令

查看状态

git status

git add

git add 命令将文件添加到暂存区

git rm命令将文件从暂存区移除

git add 
git rm

git commit提交

将暂存区的文件提交到本地库

git commit 
-m
  • 省略filename会将暂存区所有文件都提交

  • 提交消息中如果有空格,需要使用双引号“”来包裹消息

  • 不使用-m则会打开默认编辑器编辑提交消息

  • 对于已经追踪过的文件,修改后可以直接git commit -a来提交,而不用先add

  • 新建文件必须先add才能被追踪,不能直接commit

git log 查看提交记录

git log命令查看历史记录

git命令打印的消息比较多,可以使用一些参数限制打印结果

# 一行显示# 注意,这个命令只能显示当前版本之前的提交,如果使用reset命令回退了版本(记作v2),则回退版本(v2)之后的提交不会打印出来git log --oneline

reflog

git reflog

在这里插入图片描述

git log --pretty=oneline

在这里插入图片描述

版本前进和后退

基础命令

HEAD标记了当前版本,版本的前进和后退就是改变HEAD指针指向的提交

三种方式

  • 使用索引值 :跳转到指定索引的版本
  • 使用~<steps>: 回退指定步数
  • 使用^ : 回退一个版本
# 这里的index索引值可以使用git reflog命令里面打印的7位哈希值git reset --hard 
# 使用^表示HEAD后退一个版本# ^符号可以多次后缀,一个符号代表回退一个版本git reset --hard HEAD^git reset --hard HEAD^^^# 回退3次提交,相当于 git reset --hard EHAD^^^git reset --hard HEAD~3

reset 参数

git reset --[] [index]

–soft

Does not touch the index file or the working tree at all (but resets the head to , just like all modes do). This leaves all your changed files “Changes to be committed”, as git status would put it.

–mixed

Resets the index but not the working tree (i.e., the changed files are preserved but not marked for commit) and reports what has not been updated. This is the default action.

If -N is specified, removed paths are marked as intent-to-add (see [git-add](file:///D:/Program Files/Git/mingw64/share/doc/git-doc/git-add.html)(1)).

–hard

Resets the index and working tree. Any changes to tracked files in the working tree since are discarded.

–merge

Resets the index and updates the files in the working tree that are different between and HEAD, but keeps those which are different between the index and working tree (i.e. which have changes which have not been added). If a file that is different between and the index has unstaged changes, reset is aborted.

In other words, --merge does something like a git read-tree -u -m , but carries forward unmerged index entries.

–keep

Resets index entries and updates files in the working tree that are different between and HEAD. If a file that is different between and HEAD has local changes, reset is aborted.

参数 工作区 暂存区 本地库head
–soft
–mixed
–hard

diff 差异比较

# 比较文件差异,和暂存区比较git diff 
#和本地库比较git diff HEAD
#和本地库历史版本比较git diff HEAD^

分枝管理

开发过程中分枝示例

在这里插入图片描述(图片来源:bilibili尚硅谷课程)

# 新建分枝git branch 
# 查看分枝git branch -v# 查看远程库分枝git branch -r#切换分枝git checkout
#切换到一个新分枝git checkout -b
# 合并分枝# 注意,合并分枝时必须切换到目标分枝(合并到的分枝)上git merge

远程

# 推送git push# 推送到指定分枝,本地分枝没有上流分枝时可以用这个直接pushgit push origin master# 拉取远程代码git pull

tag标签

Git 可以给仓库历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点( v1.0v2.0 等等)

# 列出所有标签git tag# 可以带上可选参数 -l 或者 --listgit tag --list # 查看特定tag,可以使用通配符# 这里必须使用-l或者--list参数git tag -l "v2.0*"

Git 支持两种标签:轻量标签(lightweight)与附注标签(annotated)。

轻量标签很像一个不会改变的分支——它只是某个特定提交的引用。

而附注标签是存储在 Git 数据库中的一个完整对象, 它们是可以被校验的,其中包含打标签者的名字、电子邮件地址、日期时间, 此外还有一个标签信息,并且可以使用 GNU Privacy Guard (GPG)签名并验证。 通常会建议创建附注标签,这样你可以拥有以上所有信息。但是如果你只是想用一个临时的标签, 或者因为某些原因不想要保存这些信息,那么也可以用轻量标签。

创建标签

附注标签

# 创建附注标签git tag -a v1.4 -m "my version 1.4"# 查看标签和与之对应的提交信息git show v1.0

轻量标签

git tag v1.0-lw

为特定提交版本添加标签

默认创建标签会添加给最近一次提交,如果要给历史提交添加标签,需要在命令末尾制定提交的校验

git tag -a v0.1 f694da9631196118bbc45c6e5d6afbd256a85256

push标签

默认情况下,git push不会把tag推送到服务器,必须显示指定标签

git push origin v1.5# 一次性推送多个标签,git push origin --tags

注意:使用 git push <remote> --tags 推送标签并不会区分轻量标签和附注标签, 没有简单的选项能够让你只选择推送一种标签

删除标签

删除本地标签git tag -d <tagname>

git tag -d v1.0-lw

注意:这种方法并不会删除远程仓库的标签

删除远程仓库

# 方式1# 将冒号前面的空值推送到远程标签名,从而高效地删除它git push origin :refs/tags/v1.1-lw# 方式2git push origin --delete v1.1

转载地址:https://console.blog.csdn.net/article/details/112871490 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:git中tag标签的用法
下一篇:Poj百练 2746:约瑟夫问题 (分类:模拟)

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月22日 12时41分34秒