Keen的博客

记录所思、所想、所遇

欢迎来到我的个人站~


Git使用方法

Git原理

Git工作区、暂存区、仓库区

Git工作区:Work Directory

Git暂存区:Stage Index

Git仓库区:Repository,master、branch等,分为本地仓库和远程仓库

png
jpg

各个区的文件树展示:

(1)工作区:ls  
(2)暂存区:git ls -files -s
(2)仓库区:git ls -tree HEAD

注意:

(1)当执行 "git reset HEAD" 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。  
(2)当执行 "git checkout ." 或者 "git checkout -- <file>" 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。  
(3)当执行 "git checkout HEAD ." 或者 "git checkout HEAD <file>" 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。  

Git与SVN的区别

分布式和集中式

(1)git分布式存储结构,每一个分支,用户本地和云端各有一份(本地仓库和远程仓库)。因为是本地仓库和远程仓库,所以.git目录会远比.svn目录打  
(2)svn是集中式存储结构,只有一个云端中央版本库

分支

(1)git可以在本地建立分支,只要不提交到主版本库,就不会同步给其他任何一个开发人员。当然也可以在云端建立分支主版本库,然后本地再另外建立分支,最后自己写的代码再整体同步到分支主版本库中。  
(2)svn需要在云端开一个分支库,然后任何一个人的修改,影响所有人。相当于无法本地管理个人分支代码。  

对网络依赖

(1)git由于在本地存在仓库,所有可以认为对网络没有依赖,在无网络的时候,提交到本地即可,相当于一个本地历史提交记录的管理工具,特别适合本地开发,比如需要的时候本地回滚。  
(2)svn则需要网络,没有网络无法提交

Git命令

实战命令

# 场景一:某个信息commit了,但是不想要push,想要回滚
git reset --mixed <回滚到的目标commid>

Git常用命令思维导图

git常用命令,简化为如下思维导图

jpg

Git中使用ssh来更新文件

为啥要使用ssh,而非https,原因如下:

jincaideMacBook-Pro:blog keenjin$ git clone https://github.com/Keenjin/Keenjin.github.io.git
Cloning into 'Keenjin.github.io'...
remote: Enumerating objects: 530, done.
remote: Counting objects: 100% (530/530), done.
remote: Compressing objects: 100% (418/418), done.
Receiving objects:  16% (148/877), 1.07 MiB | 0 bytes/s        

error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

使用ssh的教程:
(1)使用教程,增加ssh key:https://help.github.com/en/articles/adding-a-new-ssh-key-to-your-github-account
(2)使用命令:git clone git@github.com:Keenjin/Keenjin.github.io.git

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少