git的入门知识点

git的代码管理区域

使用git管理项目,拥有三个区域,分别是工作区,暂存区,存储区

  • 工作区:文件目录
  • 暂存区:准备进行版本保存的文件列表
  • 存储区:完成版本保存的文件列表

安装

上官网自行下载即可
安装完后第一件事设置自己的用户名和邮件地址,命令:

git config --global user.name "用户名或者个人工号"

git config --global user.email “邮箱地址”  

查看所有全局配置信息


git config --list --global

查看指定全局配置信息


git config user.name

git config user.email

获取git仓库

获取git仓库两种方式:

  1. 将尚未进行版本控制的本地目录转为git仓库: git init
    注释:如果自己有一个尚未进行版本控制的项目目录,想要用git来控制,需要执行以下两个步骤
  • 在项目目录中,通过鼠标右键打开”git Bash“
  • 执行git init 命令,将当前目录转化为git仓库
  • git remote add origin 远程仓库的URL
  • 将本地仓库的变更提交到本地仓库的主分支中,即本地仓库有修改,命令:git add . git commit -m “提交信息”
  • 将本地仓库的主分支推送到远程仓库的主分支中,命令:git push -u origin master
    注释:origin是刚刚添加的远程仓库地址的别名,-u参数表示设置本地的主分支跟踪远程仓库的主分支。如果要推送其他分支,需要将master替换成相应的分支名。
  1. 从其他服务器克隆一个已经存在的git仓库: git clone (https:地址)
  • 如果遇到fatal: protocol ‘https’ is not supported的错误,解决方法:关闭git-bash客户端,重新打开,再次执行git clone url命令进行克隆操作,成功克隆。

git常用命令

  1. 下载github源码:git clone url
  2. 查看本地git仓库的状态,即看一下当前工作区、暂存区的文件是否有改动,是否与本地仓库的一致:git status
  3. 修改并提交到暂存区: git add [被修改的文件]—默认使用git add .来提交所有修改的文件
  4. 修改并提交到本地仓库:git commit -m [修改的注释]
    注释:git add保存在暂存区 git commit保存在本地仓库
  5. 推送到远程仓库: git push
  6. 配置账号 git config --local usr.name “xxx” git config --local usr.email “xxx” —这样在github中可以看出个人贡献作者的相关信息(在某个项目中,如果不想使用git中设置的全局作者信息,我们可以在该项目中单独设置一个只用于该项目的作者信息)

.gitignore-忽略文件的版本跟踪

  1. 在项目根目录创建.gitignore文件
  2. 用文本编译器打开文件,进行配置:
    –每项配置独占一行
    –每行的内容可以是:文件/目录的名称、路径或者它们的模式匹配

模式匹配的规则

  1. 空行不匹配任何文件,因此常用作为分隔符,以便于阅读
  2. #用于注释,\用于转义
  3. *可以匹配任何字符(0或者多次),?只能匹配一次任何字符

.gitinnore只能忽略没有被追踪的文件,所以先纳入版本管理后写入.gitgnore是无效的
解决方法
先删除本地缓存,再加入.gitignore

  • –git rm -r --cached
  • –创建.gitignore文件内

从版本库中恢复文件

从版本库中恢复文件分为三种情况

  1. 已删除(或修改),未add
  2. 已删除(或修改),已add,未commit
  3. 已删除(或修改),已commit
    检出命令,用于切换分支、恢复文件版本、创建新分支等操作。:git checkout
  • 情况一:已删除(或修改),未add
    从暂存区中恢复file_name的文件:git checkout file_name
  • 情况二:已删除(或修改),已add,未commit和已删除(或修改),已commit
    查看仓库中的修改,以获得commit的id号 :git log
    恢复文件:git checkout commit的id号 file_name

版本库建设中的分支管理

什么是分支?

分支可以理解为当前工作目录的一个副本

为什么要使用分支?

将项目划分为多条线,例如在开发分支(开发线)上进行修改,之后合并到主线(产品线)上,保证主线的稳定性
develop/dev分支用于开发,main/master分支用于产品

分支的常用命令

  1. 创建新的分支:git branch [新的分支名称]
  2. 重命名分支的名字:git branch -m [旧分支名称] [新分支名称]
  3. 删除分支:git branch -d [分支的名称] 其中-d用于删除已经合并过的分支,-D强制删除分支(不管是否合并过)
  4. 切换分支:git checkout [分支名称]
  5. 创建并切换分支:git checkout -b [新的分支名称]
  6. 分支查看:git branch
  7. 分支的合并:git merge [被合并分支的名称]
  • 当使用git merge命令合并两个分支时,如果这两个分支中有相同的文件或行进行了不同的修改,就会导致冲突。此时,Git 无法自动合并这些修改,需要手动解决冲突。可以按照以下步骤进行:
  1. 执行git merge命令后,如果出现冲突,Git 会提示哪些文件存在冲突。
  2. 打开包含冲突的文件,在文件中可见类似如下格式的标记:
    <<<<<<< HEAD:file.txt
    // 当前分支中的修改内容
    =======
    // 要合并分支的修改内容
    >>>>>>> branch-a:file.txt
  1. 根据需要选择要保留的更改,删除不需要的标记,并将整个文件保存并关闭。
  2. 使用git add命令将解决后的冲突标记为已解决。
  3. 最后再次执行git commit命令以完成合并提交。

注释:当Git发现某一块数据在两边的提交历史中都含有变更,它将无法自动对其进行合并。这种情况被称为版本冲突,此时Git需要人为介入调整才能继续进行合并。
分支的文章链接:https://blog.csdn.net/All_In_gzx_cc/article/details/125482617

本地库与远程库

  1. 在本地库中,对要保存的文件进行本地库关联
  • –git init
  • –git add .
  • –git commit -m “**”
  1. 在gitee或者github中,创建与本地库文件名一样的远程库
  2. 本地库与远程库的关联
  • 关联 远程库的名字指定为origin的命令: git remote add origin https://github.com/Gooddz1/git-test2.git
  • 代码推送的命令:git push -u origin main
    注释:将本地库的main分支推送到远程库origin中;-u:将本地分支上传并合并到远程分支,并记录为默认。所以再次提交的时候,只需要git push

一个本地库可以关联多个远程库,即可以关联github和gitee。值得注意的是

  • 在关联的时候,远程库的名字:不能都设置为origin,可以设置为gitee
  • 在推送的时候,要指定远程库名字和本地库分支git push gitee main

提交修正–提交commit的时候,覆盖上一个日记,避免日记过于冗余

git commit --amend -m "***"

git日记

  1. 限制显示日记的条数:git log -n(n:显示的条数)
  2. 简化日记的显示(只显示commit的id号和关键信息):git log --online
  3. 输出对文件更改内容的统计(对每次提交中的修改文件进行统计):git log --stat
  4. 输出文件修改的内容:git log --patch
    注释:对于\No newline at end of file代表着文件的最后一行没有另起一行
  5. 日记的筛选:
  • git log --after=“2023-01-01” (显示2023年1月1号往后的日记,不包含1月1号的日记)
  • git log --before=“2022-09-01” (显示2022年9月1号往前的日记,包括9月1号的日记)
  • git log --before=" ** " --after=" ** "
  • git log --author=" ** " (根据提交的用户名或者邮箱来筛选,其中邮箱不需要填写全)
  • git log --grep=" ** " (根据提交信息来筛选,提交的信息不需要全部填写完)
  • git reflog (引用日记:记录了本地库中所有的提交信息,只能保留在本地,不能push到远程库中,且默认只能保存90天。例如对于amend提交修改,能通过git reflog来得到commit的id来退回到amend的代码版本)

远程库分支的添加、删除、推送等操作

  1. 查看本地库对应的远程库的信息,可以查看远程库的名称:git remote -v
  2. 查看本地和远程仓库的分支:git branch -a
    注释:remotes/origin/HEAD -> origin/main表示该Git存储库以远程跟踪模式克隆自"origin",并且当前所在的分支是追踪远程主分支(main branch)。
  3. 将本地所有的分支推送到远程库:git push [远程库的名称] [分支名称1] [分支名称2]
    注释:git push [远程库的名称] --all:将本地的所有分支都推送到远程库中

在远程库中,如何设置默认分支。

以github为列,打开代码的github网站,选择settings。再点击branches,在default branch中选择默认分支。

删除远程库中的分支(默认分支是不能删除的):

  • 方法一:在代码的github网站中,在选择switch branches/tags中,点击view all branches。在新的页面中,手动删除不需要的分支。
  • 方法二:git push [远程库的名称] -d [ 远程分支名称 ]
    注释:方法一这种方法比较简单,但是会导致本地库中缓存的远程分支与实际远程分支不一致,推荐使用方法二

git-tag标签管理

git中tag

  • 定义:就是对commit进行标记,相当于起别名。
  • 目的:通过tag,当开发到一个阶段,为了凸显本次提交的重要性,可以为其打上标签。例如,标记为发布结点v1.0、v2.0等。
  • 意义:标记一个相关的提交阶段,已备将来参考。标记发布结点,用来项目发布。

tag的创建命令:

  • 为最新的commit打标签:git tag [标签信息]
  • 指定commit打标签:git tag [标签信息] commit的id号
  • 注释标签:指定commit打标签,并添加注释信息:git tag [标签信息] -a -m [注释信息]
    tag的查看命令:
  • 查看所有commit中的标签:git tag
  • 查看commit中详细的标签信息:git show [标签信息]

tag的推送远程库命令:

  • 推送一个或者多个具有标签信息的commit命令:git push [远程库的名称] [标签信息1] [标签信息2]
  • 推送所有标签到远端库的命令:git push [远程库的名称] --tags
    注释:git push推送代码时,标签不会被推送,需要单独push标签

tag的删除标签:

  • 删除本地的标签:git tag -d [标签信息]
  • 删除远程标签:git push [远程库的名称] -d [标签信息1] [标签信息2]
    版本发布releases

github仓库fork

fork:在github中快速复制别人的仓库,并实现通过PR(pull request)贡献到原始仓库
步骤:

  1. 在想要复制某人的仓库的github网址中,点击fork来快速复制并创建属于自己的仓库
  2. 在本地git clonne 自己仓库的地址
  3. 代码的修改,git add . git commit -m “**” git push
  4. 可通过PR将自己修改的代码贡献到原仓库

参考的链接:

  • git管理
  • Git/SourceTree版本管理
  • 10分钟git快速上手使用

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