Git教程1.0

Posted 364.99°

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git教程1.0相关的知识,希望对你有一定的参考价值。

1.版本控制

  1. 简而言之,备份与记录
  2. 作用:
    2.1 记录文件的所有历史变化
    2.2 错误恢复到某个历史版本
    2.3 多人协作开发编辑同一个文件

1.1 三类版本控制

  1. 本地版本控制系统

  2. 集中化的版本控制系统

    典型代表——SVN

  3. 分布式版本控制系统

    典型代表——GIT

2.Windows安装Git

2.1 下载安装

镜像下载Git网站:https://npm.taobao.org/mirrors/git-for-windows/
下载最新版本即可

安装很简单,不再赘述安装过程

  1. 安装好之后,鼠标右键可看到

    GUI很少用,一般使用命令窗口Bash
  2. 配置用户信息(必须配置)
git config --global user.name "自定义名字"					#配置用户名字
git config --global user.emain "你使用的邮箱"				#配置用户邮箱
git config --global  --list									#查看当前用户(global)配置

2.2 环境变量配置

配置环境变量:为了能全局使用,可以不配置

但使用idea,如果报错:idea file not found: git.exe‘git’ 不是内部或外部命令,也不是可运行的程序,时,就需要配置

3.Git文件的三种状态与工作模式

状态描述
已提交(committed)表示数据已经安全的保存在本地数据库
已修改(modified)表示修改了文件,但还没保存到数据库中
已暂存(staged)表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中

本地工作区:

工作区域描述
工作区简单的理解为在电脑里能看到的目录,比如自己创建的本地项目目录
暂存区Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git自动创建的第一个分支master,以及指向master的一个指针叫HEAD
Git仓库工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库

4.本地版本库初始化与文件提交

4.1 完整工作区域

工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory),如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。

4.2 文件提交

  1. 随便找个文件夹,鼠标右键调出Git命令窗口
  2. git init创建一个.git文件夹
  3. 查看设置,才能看到.git文件
  4. 新建一个.txt文件,并将它加载到暂存区
git status									#查看当前文件夹文件状态
git add test.txt							#将test.txt加载到缓存区
git add .									#将所有文件加载到缓存区
  1. 提交文件到Git仓库
 git commit test.txt -m "自己写描述"		#提交文件到Git仓库
 git ls-files							#查看仓库的文件列表

5.版本切换

5.1 文件修改与比对

  1. 修改之前提交的文件,git status查看状态
  2. 重新上传到暂存区,git add .,查看状态
  3. 上传到本地仓库,git commit -m "修改第一次后提交",查看状态
  4. 查看提交日志记录,git log
  5. 与版本库内容进行比较,git diff HEAD -- test.txt
    查看暂存区的文件

差异比较说明:
---:表示变动前的文件
+++:表示变动后的文件
变动的位置用两个@作为起首和结束
@@ -1,2 +1,3 @@:- 表示第一个文件, 1 表示第1行,2 表示连续两行, + 表示变动后的文件,1 表示第一行, 3 表示连续三行。


注意:当没有任何输出的时候(即提交之后),表示此文件与版本库中的文件一样,未发生任何变动

5.2 文件版本切换

当提交记录过多的时候,使用git log,略显臃肿,可用--pretty=oneline简化输出:每次提交记录只显示一行

回退到上一版本:git reset --hard HEAD^,上两个版本用^^

回到上n个版本:git reset --hard HEAD~100,回到前多个版本

回到指定版本位置,git reset --hard 版本hash值(5~8个字符)

查看当前用户最近操作日志记录,git reflog,可用于查找所有版本的hash值

5.3 文件删除

  1. 当文件(已提交到git库的文件)被误删之后,使用git checkout从版本库中检出
    注意:可使用git status追踪文件状态

    如:我将已提交的test.txt文件误删后的恢复流程



  2. 当确认要删除某个文件后,使用git rm 文件名

6.远程仓库github

下载方式:

  1. zip压缩包
  2. git:ssh、https
    复制地址,选择一个本地目录打开Git Bash,git clone 地址克隆到本地

注意:ssh比https编程效率高、也更安全。

国内登陆github需要一些加速器辅助才行

6.1 创建ssh公钥

  1. 本地生成ssh公钥和私钥,ssh-keygen -t rsa -C "github账户邮箱"
    一直回车就行

  2. 将公钥上传到github



  3. 验证是否配置成功,ssh -T git@github.com

6.2 远程推送

  1. 创建一个远程仓库


  2. 本地上传文件
    找到本地需要上传的文件的目录,右键Git Bash

    刷新一下网页

    推送成功

6.3 删除文件

由上图可知,之前在本地git仓库删除掉的test.txt仍然推送到了github,接下来演示如何删除它

  1. 先提交一次
  2. 再推送一次

总结:先在本地执行git rm删除操作,然后提交,再推送一次,就OK了

7.Git本地分支操作

多人合作的项目在开发时通常不会直接在主干master上进行操作,而是重新开辟新的分支,在新的分支上进行开发 调试 等操作,当项目调试通过时才会将分支项目的代码合并到主干中。

7.1 分支指令

Git对于分支操作提供了以下基本的命令:

命令说明
git checkout branch切换到指定分支
git checkout -b new_branch新建分支并切换到新建分支
git branch -d branch删除指定分支
git branch查看所有分支,并且*号标记当前所在分支
git merge branch合并分支
git branch -m | -M oldbranch
newbranch
重命名分支,如果newbranch名字分支已存在,则需要使用-M强制重命名,否则使用-m重命名

7.2 具体操作

分支的列表展示与切换

新建一个文本,并合并


分支命名

分支删除

注意:主干不能删

7.3 分支推送与拉取

  1. 相关指令
命令说明
git branch -a查看本地与远程分支
git push origin branch_name推送本地分支到远程
git push origin :remote_branch删除远程分支(本地分支保留)
git checkout -b local_branch origin/remote_branch拉取远程指定分支并在本地创建分支
  1. 操作演示——本地分支推送到远程

    分支推送成功:
  2. 操作演示——远程创建dev拉取到本地

    因为github没有提供创建分支的按钮,所以先本地创建一个dev分支,推送到github之后并删除其本地分支git branch -D dev,再演示远程拉取dev到本地。

    将文件克隆到本地


7.3 本地分支冲突出现与解决

冲突演示
查看两个分支共同拥有的文件,并选取一个

查看分支中文件的内容cat test1_0.txt,我这里是因为cat显示乱码,临时添加编码方式查看cat test1_0.txt | iconv -f GBK -t UTF-8

修改文件内容

修改之后提交

切换到main分支,并查看修改test1_0.txt的内容,


修改之后提交

合并dev,发生冲突


修改文件内容,删去===,<<,>>后提交

7.4 多人协同操作冲突

多人协同操作冲突比较常见

冲突演示
拉取远程仓库dev并在本地创建dev开发库,执 行命令git checkout -b dev origin/dev,以同台电脑不同的窗口来模拟两个用户操作同一分支同一文件

  1. 克隆到桌面,并到克隆文件中打开控制git命令行拉取远端分支dev

  2. 另找一个目录,进行相同操作

  3. 修改文件内容


    并提交


    两个端口都做推送

    可看出,后推送的报错,远程拒绝推送。

防范措施
在执行git push操作之前,先执行git pull操作,保持本地和远端内容一致,再添加新的内容,然后再提交。

8.标签管理

通常,发布一个版本时,会在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

标签操作基本命令

命令说明
git tag tag_name新建标签,默认为HEAD
git tag -a tag_name -m ‘xxx’添加标签并指定标签描述信息
git tag查看所有标签
git tag -d tag_name删除一个本地标签
git push origin tag_name推送本地标签到远程
git push origin --tags推送全部未推送过的本地标签到远程
git push origin :refs/tags/tag_name删除一个远程标签





9.知识点小结

以上是关于Git教程1.0的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

如何管理在每个 git 版本中添加私有代码片段?

使用 Git 来管理 Xcode 中的代码片段

markdown Git代码片段