Git新手学习使用总结


开始学习使用git bash惹,一边摸索一边记录下自己的学习过程。



关于Git

Git是什么

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git的主要功能:版本控制

关于版本控制我是这样理解的:一个文件你做了修改,得到一个新的版本,可很多时候你无法使文件回到以前的样子。所以很多人会选择把修改过后的保存到一个新文件中。久而久之文件越来越多,你很难弄清楚哪个文件做了什么修改。这个时候就需要进行版本管理。
Git来对这些不同的版本进行控制。还可以很方便地查看两个不同版本之间的不同之处。

Git的工作流程

  • 克隆 Git 资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
    在这里插入图片描述

工作区、暂存区和版本库

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
    在这里插入图片描述我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
以下是菜鸟对这些知识的解释:

图中的 objects 标识的区域为 Git 的对象库,实际位于 “.git/objects” 目录下,里面包含了创建的各种对象及内容。
当对工作区修改(或新增)的文件执行 “git add” 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
当执行 “git reset HEAD” 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
当执行 "git rm --cached " 命令时,会直接从暂存区删除文件,工作区则不做出改变。
当执行 “git checkout .” 或者 "git checkout – " 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。
当执行 “git checkout HEAD .” 或者 "git checkout HEAD " 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。


Git bash使用

登录

申请了自己的github账号,下载git之后打开git bash。
配置本机的用户名和邮箱。


    $ git config --global user.name "Your Name"
    $ git config --global user.email "[email protected]"

本地使用

创建仓库并初始化

新建一个文件夹,在目录下建一个test文本,**创建test.txt的时候记得编码设置为UTF8,否则会出现乱码。右键点击git bash。
在这里插入图片描述
test的内容随便写啦。。。。
在这里插入图片描述
输入git init初始化仓库
在这里插入图片描述
.git文件自动生成了,作用上文已经讲过啦,不能删噢。

文件添加和提交

$ git add 文件名.文件类型

添加我们之前创建的test文件
如果一个个添加太麻烦惹,我们还有其他方法!

git add -A 提交所有变化
git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

by the way! 我们可以使用git status来查看状态
在这里插入图片描述
添加成功辣,我们先在可commit了

$ git commit -m “修改注释”
提交后git log可以查看日志!

在这里插入图片描述

文件修改

在这里插入图片描述
我们添加文件后,文件开始被追踪了,这时我们可以git status看看两次的不同喔!
在这里插入图片描述
怎么看我们修改了什么呢?

使用$ git diff 文件名+类型

在这里插入图片描述

也可以查看文件的内容

$ cat 文件名
这个要注意的是必须在文件夹里有那个文件你才可以查看。

如果我现在想撤销更改,执行git checkout – .
在这里插入图片描述
然后打开文件看看,它果然复原辣!
在这里插入图片描述
然后我们再次修改文件内容。
在这里插入图片描述
执行添加,提交步骤。查看日志可以看到两个版本辣。
在这里插入图片描述

版本回退

从上面的提交日志,黄色commit后面的一串数字,我们把它称为版本号吧!版本回退命令 :

$ git reset --hard 版本号前7位

在这里插入图片描述
查看文件,已经回到第一个状态了!
在这里插入图片描述
这是再git log查看日志,commit记录只有一个了,
在这里插入图片描述
想了解版本回退的原理看廖雪峰老师这个解释!很清楚鸭!

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013744142037508cf42e51debf49668810645e02887691000/

版本恢复

输入git reflog查看之前的版本,然后再次git reset --hard到需要的版本即可。
在这里插入图片描述

本地仓库关联远程仓库

配置ssh

首先生成ssh

$ssh-keygen -t rsa -C “你的邮箱”

在这里插入图片描述
出现了这两行。这是让你输入保存这个秘钥的文件,不输入直接回车它会自动生成。
回车以后让你输入push的时候需要的密码,也可以不输入直接回车,这样push的时候就没有密码。
再回车。
在这里插入图片描述
这样ssh key已经创建成功辣
然后我们输入以下命令复制ssh key

clip < ~/.ssh/id_rsa.pub

进入github,进入Settings
在这里插入图片描述
点击左边的ssh and GPG keys
在这里插入图片描述
点击New SSH key,title随便起就好辣,然后把之前复制的ssh key粘贴,然后点击下面的Add SSH key。
在这里插入图片描述

添加成功后你的邮箱会受到信息!执行以下命令测试连接是否成功。

$ ssh -T [email protected]

连接成功
在这里插入图片描述
这里出现了SSH警告 Are you sure you want to continue connecting (yes/no)?

这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:Warning: Permanently added ‘github.com’ (RSA) to the list of known hosts.
这个警告只会出现一次,后面的操作就不会有任何警告了。

本地连接github仓库

创建一个新仓库
在这里插入图片描述
在这里插入图片描述
复制SSH地址,然后执行以下命令

$git remote add origin 你复制的地址

在这里插入图片描述
我的出现了fatal: remote origin already exists.错误,解决方案如图所示。
输入git remote -v验证一下会出现你添加成功的远程仓库。
如果你以后不想连接这个远程仓库了,只需要输入git remote remove +代称即可

by the way!如果你在创建 repository 的时候,加入了 README.md 或者 LICENSE ,那么 github 会拒绝你的 push 。你需要先执行 git pull origin master。

然后执行如下命令:把本地仓库上传至Github的仓库并进行关联

$ git push -u origin master

在这里插入图片描述
刷新github,关联成功了。
在这里插入图片描述

克隆远程库

执行 git clone 复制的SSH地址

如果是直接clone了别人的仓库是没法push自己的修改的。你需要先fork到自己的远程仓库,然后再从自己那里clone。
如果clone了一个项目,并想为这个项目贡献自己的力量,你就可以往自己的仓库推送!然后在GitHub上发起一个pull request。

本地更新远程仓库的修改

因为一个项目有很多人参与,如果远程仓库改变了,你想确保自己的文件和远程的一样。执行以下代码

$ git pull origin

或者

可以输入两句“git fetch”和“git merge”
$ git fetch
$ git merge

以下是我学习的一些博客,感谢这些大神们无私的分享!

https://blog.csdn.net/qazwsxpcm/article/details/68946736?utm_source=blogxgwz0#t1

http://www.cnblogs.com/schaepher/p/5561193.html#function

https://blog.csdn.net/qq_36667170/article/details/79085301#t0

猜你喜欢

转载自blog.csdn.net/weixin_43738731/article/details/85346457