Git学习与使用

目录

  • 版本控制、GIT以及SVN
    • 常见的版本控制方法
      • 本地版本控制
      • 集中式版本控制
      • 分布式版本控制
    • SVN与Git的区别
  • 下载与安装Git
    • 安装:
  • Git环境配置
    • Git必要的配置
  • Git的基本理论(核心)
  • Git项目搭建
    • 创建目录
  • git文件操作
    • 忽略文件
  • 使用码云(gitee)
  • 辅助学习
    • 常用的Linux命令

版本控制、GIT以及SVN

核心思想:控制版本,新的版本要迭代,老的版本要保存

版本控制的优势:

  • 实现跨区域多人协同开发
  • 追踪和记载一个或者多个文件的历史记录
  • 组织和保护你的源代码和文档
  • 统计工作量
  • 并行开发、提高开发效率
  • 跟踪记录整个软件的开发过程
  • 减轻开发人员的负担,节省时间,同时降低人为错误

常见的版本控制工具:

  • Git
  • SVN ( Subversion )
  • CVS ( Concurrent Versions System )
  • Vss ( Micorosoft Visual SourceSafe )

常见的版本控制方法

本地版本控制

记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用,如RCS
Git学习与使用_第1张图片

集中式版本控制

代表:SVN
所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改
Git学习与使用_第2张图片

分布式版本控制

代表:Git
所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。
Git学习与使用_第3张图片

SVN与Git的区别

下载与安装Git

windows下载地址

直接选择稳定版的下载即可
Git学习与使用_第4张图片

安装:

选择安装位置,可以选择自己的环境
Git学习与使用_第5张图片
选择Git默认的编辑器,选择自己常用的就行
Git学习与使用_第6张图片

Git环境配置

下载好之后会发现有三个应用Git Bash、Git CMD、Git GUI
Git Bash:unix与Linux风格的命令行,使用最多,最推荐
Git CMD:windows-cmd风格的命令行
Git GUI:图形界面的Git,不建议使用

由于我们需要使用Git Bash所以需要对Linux有一定了解,下面提供了一些基本的Linux的命令

Git必要的配置

所有的配置文件都保存在本地

git config -l # 查看配置
git config --system --list # 查看系统配置
git config --global --list # 查看本地配置(主要包含的使用者的账户和密码)

系统配置和用户配置都是存在Git文件下的配置项文件:
可以在Git目录下搜索gitconfig查看自己的系统配置:
Git学习与使用_第7张图片
用户目录在C盘下
Git学习与使用_第8张图片
了解了配置项,我们需要用命令行进行用户项配置:

git config --global user.name “用户名”
git config --global user.email “邮箱地址”

Git学习与使用_第9张图片
此时可以查看C盘下用户配置文件,查看修改情况。

Git的基本理论(核心)

Git有四个区域:

  • workspace:工作区,平时存放代码的地方
  • index/stage: 暂存区,用于临时存放改动,实际上它只是一个文件,保存即将提交到文件列表信息
  • Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最近放入仓库的版本
  • Remote:远程仓库,托管代码的服务器,可以简单的认为是项目组中的一台电脑用于远程数据交换
    Git学习与使用_第10张图片
    git的工作流程一般是这样的:
    1.在工作目录中添加、修改文件;
    2.将需要进行版本管理的文件放入暂存区;
    3.将暂存区域的文件提交到git仓库。
    因此,git管理的文件有三种状态:modified-已修改,staged-已暂存,commiteed-已提交

Git项目搭建

工作目录(workspace)一般就是希望通过Git帮助你进行文件夹管理,可以是你的项目目录,也可以是空目录,但是不建议出现中文。
日常使用需要记住如下6个命令
Git学习与使用_第11张图片
重点是push、commit和add

创建目录

本地仓库搭建:git init,执行完git init会出现一个.git文件

Git学习与使用_第12张图片
或者使用git clone的方式进行创建
这种方式是克隆远程目录,将远程服务器上的仓库完全镜像一份到本地

git clone url

git文件操作

版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在不想要提交的文件,或者要提交的文件没提交上。

  • Untracked:未跟踪,此文件在文件夹中,但是并没有加入到git库中,不参与版本控制。通过git add状态变成Staged.
  • Unmodify:文件已经入库,未修改,即版本库中的文件快照内容与文件夹中的完全一致。这种类型的文件一般有两个去处,如果它被修改,会变成Modified.如果使用git rm移除版本库,则成为Untracked文件。
  • Modified:文件已被修改,仅仅是修改,并没有进行其他操作。这个文件也有两个去处,通过git add进入暂存staged状态,使用git checkout,则丢弃修改过,返回到unmodify状态,这个git checkout即从库中取出文件,覆盖当前修改!
  • Staged:暂存状态,执行git commit则将修改同步到库中,这时库中的文件和本地文件又变成一致,文件未Unmodify状态,执行git reser HEAD filename取消暂存,文件状态变成Modified.

在刚才初始化好的文件中检查文件状态

git status

Git学习与使用_第13张图片
显示没有文件被跟踪,我们在该文件夹下创建一个文件(名为main.js),继续使用status检查状态,发现main.js未被跟踪。

Git学习与使用_第14张图片
此时我们使用命令

git add . # 将文件添加到暂存区中(添加所有文件到暂存区)

此时发现main.js进入待提交的状态。
Git学习与使用_第15张图片
此时利用commit命令提交到本地仓库

git commit -m “消息内容” #提交暂存区中内容到本地仓库 -m是提交信息

Git学习与使用_第16张图片

忽略文件

有些时候我们不需要把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件。
所以我们需要在主目录下简历“.gitignore”文件,此文件有如下规则:

  1. 忽略文件夹中的空行或以井号(#)开始的行将会被忽略。
  2. 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号( ?)代表一个字符,方括号([abc])代表可选字符范围大括号({string1,string2,…})代表可选的字符串等。
  3. 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
  4. 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
  5. 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
例如
*.txt  #忽略所有.txt结尾的文件
!lib.txt   # 但是lib.txt除外
/temo     # 忽略项目跟目录下的TODO文件,不包括其他目录temp
build/      # 忽略build/目录下的所有文件
doc/*.txt   #忽略doc/notes.txt 但是不会忽略doc/server/arch.txt

使用码云(gitee)

设置本机绑定SSH公匙,实现免密码登录!

首先通过git命令行获取密钥
通过命令 ssh-keygen 生成 SSH Key

ssh-keygen -t ed25519 -C “Gitee SSH Key”
其中 -t key 类型
其中 -C 注释

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/git/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/git/.ssh/id_ed25519
Your public key has been saved in /home/git/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:ohDd0OK5WG2dx4gST/j35HjvlJlGHvihyY+Msl6IC8I Gitee SSH Key
The key's randomart image is:
+--[ED25519 256]--+
|    .o           |
|   .+oo          |
|  ...O.o +       |
|   .= * = +.     |
|  .o +..S*. +    |
|. ...o o..+* *   |
|.E. o . ..+.O    |
| . . ... o =.    |
|    ..oo. o.o    |
+----[SHA256]-----+

中间遇到停顿直接回车,一共三次回车。

2.查看生成的SSH公钥和私钥:

ls ~/.ssh/
输出:
id_ed25519 id_ed25519.pub

  1. 读公钥

cat ~/.ssh/id_ed25519.pub
输出,如:
ssh-ed25519 AAAA***5B Gitee SSH Key

或者直接去C盘用户目录下找到.ssh文件,找到相关的id_ed25519.pub,用记事本打开也能得到一段很长的密钥。

新建git仓库
Git学习与使用_第17张图片

辅助学习

常用的Linux命令

cd …:(中间有空格哈)回到上一级目录
cd 路径名:路径跳转
pwd:显示路径
clear:清除屏幕
ls:列出当前目录下所有文件
touch:新建文件(touch main.py:在当前目录下新建一个名为main.py的文件)
rm:删除文件 (rm main.py:移除main.py文件)
mkdir:创建一个目录(文件夹mkdir test2:创建一个test2的目录)
rm -r:删除目录(rm -r test2:删除刚刚创建的test2目录)

mv:移动文件(move main.py test2:将main.py移动到test2中)
reset:重新初始化终端
history:查看历史命令
help:查看某个命令的帮助
exit:退出

你可能感兴趣的:(git,学习)