参考链接1:https://www.bilibili.com/video/BV1FE411P7B3?p=2&spm_id_from=pageDriver
参考链接2:https://mp.weixin.qq.com/s?__biz=MzU0Nzc5MDQxNw==&mid=2247489688&idx=1&sn=04f844db1bd6de22bb15267b9e71716a&chksm=fb4853a6cc3fdab08930dd06a6419850189fab72e754825d48adf39a390aa20765601c65dfc4&cur_album_id=1323908580084449280&scene=190#rd
版本控制:管理所有的文件,方便查看历史记录。备份以及恢复,多人开发的作用很大
当下最流行的
所有的版本数据都保存在服务器上,协同开发人员从服务器上同步更新或上传自己的修改
每个人都有全部的代码,不会因为网络或服务器坏了原因
存储在多个电脑上的不同版本的代码文件进行版本管理。类似于一个协同的办公软件,github能够提供对版本管理服务支持的一个服务器供应商(git类似于微信这款软件,github类似于微信服务器端,用来交换每个微信软件端的信息,微信只能用官方服务器,git允许任何电脑成为服务器),当然能够提供git服务器的还有码云(Gitee)、腾讯开发者平台(dev.tencent.com)
所有下载慢的话都可以找镜像

会卸载:要删除环境变量,然后用卸载
安装完毕直接启动
GIT Bash
GIT CMD:windows
GIT GUI :无用

常见的一些命令

cd : 改变目录
cd .. 回退到上一个目录,直接cd进入默认目录
pwd : 显示当前所在的目录路径
ls : 都是列出当前目录中的所有文件
touch :新建一个文件 如touch index.js就会在当前目录下新建一个index.js
rm :删除一个文件, rm index.js就会把index.js文件删除
mkdir :新建一个目录,就是新建一个文件夹
rm -r 删除一个文件夹,rm -r src 删除src目录
mv 移动文件, mv index.html src index.html 是我们要移动的文件,src是目标文件夹
reset 重新初始化终端/清屏
clear 清屏
history 查看命令历史
help 帮助
exit 退出

表示注释

查看配置:git config -1

Config file location
    --global              use global config file
    --system              use system config file
    --local               use repository config file
    --worktree            use per-worktree config file
    -f, --file <file>     use given config file
    --blob <blob-id>      read config from given blob object

Action
    --get                 get value: name [value-regex]
    --get-all             get all values: key [value-regex]
    --get-regexp          get values for regexp: name-regex [value-regex]
    --get-urlmatch        get value specific for the URL: section[.var] URL
    --replace-all         replace all matching variables: name value [value_regex]
    --add                 add a new variable: name value
    --unset               remove a variable: name [value-regex]
    --unset-all           remove all matches: name [value-regex]
    --rename-section      rename section: old-name new-name
    --remove-section      remove a section: name
    -l, --list            list all
    -e, --edit            open an editor
    --get-color           find the color configured: slot [default]
    --get-colorbool       find the color setting: slot [stdout-is-tty]

Type
    -t, --type <>         value is given this type
    --bool                value is "true" or "false"
    --int                 value is decimal number
    --bool-or-int         value is --bool or --int
    --path                value is a path (file or directory name)
    --expiry-date         value is an expiry date

Other
    -z, --null            terminate values with NUL byte
    --name-only           show variable names only
    --includes            respect include directives on lookup
    --show-origin         show origin of config (file, standard input, blob, command line)
    --show-scope          show scope of config (worktree, local, global, system, command)
    --default <value>     with --get, use default value when missing entry

查看系统配置:git config –system –list

diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=d:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
http.sslverify=false
core.autocrlf=true
core.fscache=true
core.symlinks=false
pull.rebase=false

查看本地的全局配置:git config –global –list

user.name=Runnerxr
user.email=xiongrui1690347341@163.com
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslverify=false

用户名和密码是必须要配置的,告诉服务器,表明你是谁
所有的配置文件都是保存在本地

创建仓库的版本:

还比较好懂,这里的大致步骤都是廖雪峰网站上的,所以整理的还是比较清晰的,这些整理也是为了后面自己能够更好的管理着一些代码,让自己的远程或者同步变得更加的合理和流畅。这里我还是认为这个版本库确实很厉害,而且在后面的日子里面会运用的非常的频繁。
自己已经创建好了一个仓库了(在对应的为位置上),多了一个.git的目录,用来跟踪管理版本库的,不要手动的去修改目录里面的文件(修改会破坏仓库)

  1. 编写一个readme.txt文件
    Git is a version control system.
    Git is free software.
  2. git add readme.txt(第一步)
  3. git commit -m “wrote a readme file” (第二步)
    1. -m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
    2. 嫌麻烦不想输入-m “xxx”行不行?确实有办法可以这么干,但是强烈不建议你这么干,因为输入说明对自己对别人阅读都很重要。实在不想输入说明的童鞋请自行Google,我不告诉你这个参数。
    3. 1 file changed:1个文件被改动(我们新添加的readme.txt文件)
    4. 2 insertions:插入了两行内容(readme.txt有两行内容)

注意事项:
commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

  1. git add file1.txt
  2. git add file2.txt file3.txt
  3. git commit -m “add 3 files.”

git status命令可以让我们时刻掌握仓库当前的状态,上面的命令输出告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
git diff顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,可以从上面的命令输出看到,我们在第一行添加了一个distributed单词。
以下为第二次的一些命令:

  1. git status
  2. git diff readme.txt
  3. git add readme.txt
  4. git status
  5. git commit -m “add distributed”
  6. git status

小结:

  1. 需要随时掌握工作区的状态,使用git status
  2. 如果git status告诉文件被修改过,用git diff可以查看修改的内容

工作区和暂缓区

工作区:working directory
版本库:repository
git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
直观的理解如下:
Git管理的文件分为:工作区,版本库,版本库又分为暂存区stage和暂存区分支master(仓库)
工作区>>>>暂存区>>>>仓库

  • git add把文件从工作区>>>>暂存区,git commit把文件从暂存区>>>>仓库,
  • git diff查看工作区和暂存区差异,
  • git diff –cached查看暂存区和仓库差异,
  • git diff HEAD 查看工作区和仓库的差异,
  • git add的反向命令git checkout,撤销工作区修改,即把暂存区最新版本转移到工作区,
  • git commit的反向命令git reset HEAD,就是把仓库最新版本转移到暂存区。

管理和修改

git跟踪管理的是修改,而非文件

撤销修改

删除文件

远程仓库

为了学习GIT搭建服务器是小题大做,可以用github提供的git仓库的托管服务,免费获取git的远程仓库(也就是最为一个初级的程序员最应该需要做到的地方)
由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:
第1步:创建SSH Key:在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

ssh-keygen -t rsa -C "xiongrui1690347341@163.com"

放在了用户的主目录里面.ssh目录,找到id_rsa和id_rsa.pub 这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。一路回车之后就会创建一个.ssh目录
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容

  • 设置SHH Key的原因:github需要识别你推送的提交确实是你推送的,不是别人冒充的,git支持SSH协议,github只要知道了你的公钥,就可以确认只有你自己可以推送
  • GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
  • 在GitHub上免费托管的Git仓库,任何人都可以看到
  • 不想让别人看到Git库:
  • 让GitHub把公开的仓库变成私有的:不可读更不可写
  • 自己动手,搭建一个git服务器,别人看不见,用于公司内部的开发必备

添加远程仓库

在本地创建了一个git仓库,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作
自己已经关联了一个仓库learngit,仓库是空的,从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,之后就可以把本地的内容推送到Github仓库了:命令如下:

git remote add origin git@github.com:Runnerxr/learngit.git

添加之后,远程仓库的名称就是origin(Git的默认叫法,很直观的就能看出是远程库)
把本地库的内容推送到远程库上面

git push -u origin master

解释:

  1. 用git push命令,实际上是把当前的分支master推送到远程
  2. 原先仓库是空的,第一次推送master分支,加上-u参数,git不但会把本地的master分支内容推送到远程新的master,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时可以简化命令

推送成功之后,只要本地做了提交,就可以通过命令,把本地的master分支的最新修改推送至Github,就有了 真正的分布式版本库。

git push origin master

从现在起,只要本地做了提交,就可以通过命令
git push origin master
把本地的master 分支的最新修改推送至Github,拥有了真正的分布式版本库!

小结如下:

  1. 要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
  2. 关联一个远程库时必须给远程库指定一个名字,origin是默认习惯命名;
  3. 关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
  4. 每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

分布式版本的好处:在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,当有网络的时候,再把本地提交推送一下就完成了同步

从远程库克隆

现在是从零开始,先创建远程库,然后从远程库克隆

  1. 创建一个仓库,名字叫:gitskills
  2. 勾选“Initialize this repository with a README”,自动创建一个README
    .md文件
  3. 远程仓库准备好了,然后用git clone 克隆一个本地库:”git clone git@github.com:Runnerxr/gitskills.git”
  4. 如果有多人协同开发,每个人各自从远程克隆一份就行
  5. Github给的地址:(Git支持多种协议)
    1. https://github.com/Runnerxr/gitskills.git(默认的git://使用的ssh,是最快的)
    2. 也可以使用https等其他的协议(很慢,而且每次推送都需要输入口令,但是有些公司只开放http端口)

分支管理

作用:

  1. 创建一个属于自己的分支,别人看不到,还继续在原来的分支上正常工作,而自己在自己的分支上干活,想提交就提交,直到开发完毕,再一次性合并到原来的分支上,既安全,又不影响别人工作。
  2. git的分支无论创建、切换和删除分支,git能快速完成

目前自己已经有的几个远程仓库

1、Runnerxr.github.io(主要想用于记录和更新Gridea里面的一些内容,但是前提是Gridea这个博客能够正常完整的使用下去)

2、bear-blog(Hexo + github + vercel 静态博客免费部署方案)

3、learngit(学习git的时候特意建立的学习的仓库)

4、VS-(平时线下的VScode上的一些代码的上传)

以下是根据非解构上面的一篇文章一步步的进行相应的创建,尽量把过程写的详细一点

ToTOP