GIt使用入门教程自用总结

前言

本文总结了我了解的Git使用要点,算是一个笔记,希望达到不管经过多久回头看都能看懂的程度。
第一次写,不太规范,大白话预警。

目录

  • 前言
  • 简单介绍
  • 安装
  • 基本工作
    • 一、初始工作
    • 二、往仓库添加文件
    • 三、修改文件
    • 四、删除文件
    • 五、撤销提交操作
    • 六、撤销修改操作
      • 1.撤销工作区的修改
      • 2.撤销暂存区的修改
      • 3.撤销版本库的修……
  • 远程仓库
    • 从本地推送至远程
    • 删除远程库
    • 从GitHub克隆至本地
  • 分支管理
    • 存储工作区现场
  • 代码总结

简单介绍

Git是一个分布式版本控制系统,由Linus用C语言编写而成,可在各系统使用,本文环境为Windows。
分布式系统使得每个人的电脑上都有一个完整的版本库,无需联网即可操作。这里推荐廖雪峰老师的Git教程,就不赘述了。

安装

  • 下载途径:直接上官网Git,这里是Windows版。
  • 安装:一路默认安装就行——本人码字之前已经安装完了,基本没啥csdn找不到的问题==
  • 登录:安装完毕后可以在开始菜单找到Git -> Git Bash,这是Git的命令行交互形式,GUI是图形交互页面。或者直接在桌面右键也行,意思是在当前目录下运行Git。

GIt使用入门教程自用总结_第1张图片
打开之后输入以下代码,绑定用户名及邮箱:

git config --global user.name "用户名"
git config --global user.email "邮箱"

在哪打开无所谓,之后可以输入git config --list查看设置。
我直接整的github账号,错了可以重新设置。
–global 参数表示该配置运用于本机所有的Git仓库。
GIt使用入门教程自用总结_第2张图片

基本工作

可以把Git的工作流程划分为三个部分,工作区、暂存区、版本库。虽然以区划分,实际上都是在本地目录下进行操作的。一般该目录即可称为版本库,亦即Git仓库repository。
在该目录下右键召唤Git Bash即可工作。
如果仅要求理解,可以把工作区看作是草稿区。草稿区可以对文件进行任意创建、修改、删除操作,但是在没有提交之前,都属于是单机活动,对版本库没有任何影响。
而工作区的操作要提交至版本库,需要经过暂存区。可以看作是一个存档区,存储文件经过一次或多次的操作之后的版本。
在工作区确定无需再进行任何操作后,可以将暂存区的文件一次性提交至版本库。这个提交过程可以看作是草稿保存的过程,保存后版本库里的文件会更新,并且所有人可见。

一、初始工作

  1. 找一个合适的位置进行版本库的创建,首先右键打开Git Bash Here,创建一个空目录(文件夹),并进入该目录下。这一步理论上也可以直接手动操作,没啥好说的 。
  2. 初始化该目录为一个Git可管理的仓库。
    (此时目录下会出现一个.git文件夹,这是用来跟踪管理版本库的,放着别动。)
    PS:其实这个.git就是版本库,暂存区也存放在里头。
mkdir 目录名
cd 目录名
git init

GIt使用入门教程自用总结_第3张图片

也可以用非空目录创建版本库。

二、往仓库添加文件

即工作区上传文件至版本库的过程,分为两步:

  1. 将文件放在该目录下/在目录下创建新文件;
    GIt使用入门教程自用总结_第4张图片

  2. 添加到暂存区;

git add 文件名

过程中可以随时使用git status查看当前所有未提交至版本库的改动信息。
GIt使用入门教程自用总结_第5张图片

  1. 正式提交至版本库。
git commit -m '对本次提交的说明'

-m参数表示进行说明,可以不说明,不建议。

说明尽量有意义,比如“创建1.txt”或者“wrote a index file”,便于在历史记录中查看提交记录。

本次提交有反馈,系统会提示具体改动信息。

可以多次add,再commit一次性提交。
GIt使用入门教程自用总结_第6张图片
在这里浅提一下暂存区和版本库的工作机制(从外面学到的,没得图):
Git的暂存区和版本库都各有一棵目录树,同时二者共享同一个对象库,这个对象库可以看成是一个磁盘,存放所有文件信息,而暂存区和版本库的目录树都是用来读取对象的索引。
不同的是在进行add操作之后,修改内容会被写入对象库,同时更新暂存区的目录树——此时只有暂存区能读取到最新修改的意思!
只有进行commit操作之后,暂存区的目录树被写到版本库的目录树,此时版本库才能读取到最新修改的对象信息。
这个对象很抽象啦,当成文件就行。

三、修改文件

在工作区进行修改后的文件再次上传同样需要经过addcommit两步,同时如果不确定修改内容,可以通过git statusgit diff进行查看。
超低阶只会手动修改,米娜可以用vi==
GIt使用入门教程自用总结_第7张图片GIt使用入门教程自用总结_第8张图片

四、删除文件

  1. 手动删除/git rm删除;
  2. 将此次删除操作提交至版本库。
    GIt使用入门教程自用总结_第9张图片

五、撤销提交操作

撤销已经提交至版本库的修改,即回退到某个版本,首先我们需要知道如何查看历史提交记录:
git log用于显示提交时间由近及远的提交记录。
GIt使用入门教程自用总结_第10张图片commit后面那串是经过SHA1加密后的版本号,可用来唯一确定每次提交。

另外,前面已经提到版本库有一棵目录树,该目录树由HEAD的指向来确定当前版本(可以看成头指针),则前一个版本为HEAD^,再前一个为HEAD^^,再再再再再再前一个为HEAD^^^^^^^(划掉)HEAD~n

假设我要撤销这次删除,那么从提交日志可以看到HEAD目前指向的就是删除操作这条记录,因此我需要回退到HEAD前一个版本也就是HEAD^,回退命令为:git reset --hard HEAD^,如图:
在这里插入图片描述GIt使用入门教程自用总结_第11张图片
或者,也可以用版本号来进行回退:git reset --hard 'commit-id'写前几位就行。

在执行reset命令时,版本库当前HEAD的指向改变,同时将改变后的目录树写到暂存区的目录树。

因此,回退之后重新查看历史提交记录,会发现最新的那条已经被自动删除了。

但是改变的只是HEAD指向,修改的内容一直处于对象库中。所以如果需要重新再回到最新版本b6273,可以用git reset --hard b6273

在这里插入图片描述现在又没了。

如果不知道版本号,可以用git reflog查看所有提交命令,我称为HEAD的整条链表信息(我谁啊
在这里插入图片描述总结一下:git reset 'commit-id' 可以用于版本回退和还原。

六、撤销修改操作

老师说得好,Git比其他分布式版本控制系统更优秀的地方在于其跟踪的是修改而不是文件。

1.撤销工作区的修改

还未添加至暂存区的修改,可以使用git checkout --'filename'来撤销。

2.撤销暂存区的修改

已经添加至暂存区的修改,使用git reset HEAD 'filename'来撤销,此时修改内容回退至工作区

3.撤销版本库的修……

详见第五节,不过仅在仓库未推送至远程仓库的情况下。

远程仓库

相当于在服务器上的仓库,相当于GitHub上的仓库就是了。
由于本地Git和GitHub是通过SSH加密传输的,故需要先给计算机创建SSH Key:ssh-keygen -t rsa -C 'email',之后一路默认,可以不设密码。
设置成功一般在用户文件夹里会生成一个.ssh文件夹,内含两个文件,.pub为公钥,需要复制下来,放GitHub->settings->ssh and gpg key->new ssh key。
这里不太懂,先放个坑==

从本地推送至远程

  1. 先在GitHub创建一个仓库:

GIt使用入门教程自用总结_第12张图片
GIt使用入门教程自用总结_第13张图片

  • 复制生成的仓库地址:
    GIt使用入门教程自用总结_第14张图片

  • 使用git remote add origin 'address'进行关联

  • 使用git push -u origin master进行推送
    这里擅自往本地仓库加了一个2.txt^^
    GIt使用入门教程自用总结_第15张图片然后回头看我们的GitHub就变成这样:[假设这里有张图把,其实文件已经全部上传了.jpg]

  • -u参数是为了关联远程(origin)和本地的master分支,后面可以不用写。

  • 这里的origin只是给该远程仓库的一个命名,可以瞎取(不是)

删除远程库

使用 git remote rm 'origin',其中origin为给远程库的命名。

假设因为瞎取所以忘了……可以用git remote -v或者git remote show origin查看远程库状态信息。

这里的删除是在本地操作的,实际上仅仅删除了关联,远程端需要从GitHub删除。

从GitHub克隆至本地

这里有两种情况,一是在GitHub创建全新的仓库克隆至本地,二是克隆其他人的项目至本地。
不过没啥区别,都需要获取到网址,就这个:
GIt使用入门教程自用总结_第16张图片
然后用git clone 'address'克隆至本地即可。

  • 克隆别人的项目时,需要先fork到自己仓库,从自己的仓库克隆。这样在推送修改至远程时,才能是自己的仓库。

分支管理

多人协作,主要用在工作上,使用分支,大家可以互相不受影响地进行修改再合并。
默认分支是master,其实就是版本库的HEAD指向的那个分支。一般来说master仅用于版本更新,其余操作都应该在其他分支上进行。

git branch //查看分支
git branch 'name' //创建分支
git switch 'name' //切换分支
git switch -c  //创建并切换分支
git merge 'name' //合并该分支的修改至当前分支
git branch -d  'name' //删除分支

存储工作区现场

暂未修改完成的工作内容,可以用git stash存储,此时工作区就是干净的。
所有存储的工作现场可以用git stash list查看,后续可以通过git stash apply stash@{n}git stash pop恢复。
apply恢复后并不自动删除stash里的内容,需要通过git stash drop
很显然这里我还没实操^^
再放个坑。

代码总结

  • git config --global user.name 'Name'
    git config --global user.email 'email' //绑定用户
  • git config --list //查看配置信息
  • git init //初始化仓库
  • git add 'filename' //添加文件至暂存区
  • git commit -m 'message' //提交暂存区所有文件至版本库
  • git status //查看当前目录树
  • git diff //查看改动具体信息
  • git rm 'filename'//删除文件
  • git log//查看历史提交记录
  • git reset HEAD^//回退到HEAD上一个版本
  • git reset 'commit-id'//回退或还原至commit-id版本
  • git reflog//查看所有提交命令,以及HEAD信息
  • ssh-keygen -t rsa -C 'email' //设置SSH Key
  • git remote add origin 'address'//关联远程和本地仓库
  • git push -u origin master//第一次推送本地仓库至GitHub
  • git remote -v
    git remote show origin //查看远程库状态信息
  • git remote rm 'origin'//删除本地与远程库的关联
  • git clone 'address'//克隆远程库至本地

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