git日常使用解析

编程

Git有什么特点?

高端大气上档次!

什么是版本控制系统?

口述:一份文档经过多次修改,会得到最新版,但是很难记得前几次做了什么修改,Git可以帮你做到所有的记忆:修改的时间,内容,修改人,文件名等等。

(更多详细了解请访问: https://cn.bing.com/search?q=Git )

 

Git安装

$ git    查看git是否安装

$ sudo apt-get install git    安装git(Debian  or  Ubuntu)

$ ./config → make → sudo make install    其他版本Linux官网下载源码,解压后依次执行 

设置用户名密码

$ git config --global user.name "Your Name"

$ git config --global user.email "email@example.com"

--global 参数:所有仓库将都使用该配置

 

Git版本库

$ mkdir XXX    创建目录(注意:目录名不要包含中文)

$ git init    赋予Git管理权

Initialized empty Git repository in /Users/michael/Git-tutorial/.git/

Git-tutorial:这个就是你的目录名字

看到这句话表示创建好了一个空的仓库,后面的.git目录是Git用来跟踪管理的,不要修改其目录文件!如果没有看到这个目录也没关系,ls -ah 就可以看见了,因为目录是默认隐藏的

添加文件

$ git add XXX    没有任何显示说明添加成功

$ git status    查看当前工作区状态,比如修改了哪些文件等

$ git diff    查看修改动作的具体内容,比如添加了什么,删除了什么等

$ git commit -m "说明“    提交到仓库

-m 后为提交说明(建议使用添加说明方法,都自己和别人都有益,其他方法问谷歌)

add 可以多次使用添加多个文件,最后附上 commit 即可。示例如下:

$ git add XXX

$ git add XXX

$ git add XXX

$ git commit -m "说明“

后面会讲到为什么可以这样做。

 

版本回退

$ git log    查看记录

$ git log --pretty=oneline    查看commit ID(版本号:一大串数字字母)

Git中, HEAD 表示当前版本, HEAD^ 表示上个版本......太多时就写为 HEAD~数字:第几个版本

$ git reset --hard HEAD^    回退版本

$ git reset --hard 版本号     回退指定版本

HEAD作为每个版本号的指针,所以回退非常快

$ git reflog    用来记录每一次命令,当然和上下箭头找命令还是有区别的,当你忘记了版本号,查一下记录,瞬间帮你找回记忆

 

Git工作区与暂存区

白话文简易描述:

工作区:就是肉眼可见的目录,比如打开一个文件夹,显示的窗口就是一个工作区。

前面说到,有一个.git的目录,这个是工作区一个隐藏目录,不算是工作区,而是版本库,里面放着许多东西,最为重要的就是stage暂存区(也叫index),还有git自动创建的一个分支master,以及指向master的指针HEAD。

暂存区:是隐藏的,前面之所以提交两次的原因:add 实际上就是把修改从工作区添加到暂存区,commit 实际上就是把暂存区的修改提交到分支(即当前版本)

上图:(是不是想要giao一下)

如何管理修改

解释了工作区和暂存区,再具体说一下逻辑:

假设现在有两个文件在工作区,一个进行add,另一个不进行add,然后commit,这时,只会提交进行了add 的文件到分支。所以,每次修改过文件,都要进行add 传到暂存区,才可更新到分支。

但是,是不是每次add 之后是不是都要commit 呢?并不是,上文也提到过,可以多个add,然后commit,这样就将所有add 到暂存区的文件一起更新到分支

撤销修改

老版本Git为reset和checkout --

新版本Git为restore和restore --staged 

解析一下:reset和checkout --

在工作区,你修改错误了一些文件,想直接丢弃这些修改时,$ git checkout -- file 就可以了,(注意:-- 必须有,少了 -- ,就变为了切换分支的命令)。

在暂存区,你已经将工作区add 到暂存区,这时,你checkout 是不行的,到了暂存区,可以使用$ git reset HEAD file 进行撤回。

restore和restore --staged 

$ git restore 代替了原来的reset 和 checkout 命令

工作区:$ git restore file丢弃在工作区的修改。

暂存区:$ git restore --staged file 进行撤回。

注意:如果不小心提交到了master,记得前面说的版本回退吗?退回去就行了,但是前提条件是你还没有推送到远程仓库。

 

Git删除文件

通常,Linux的删除文件的操作为 rm file / rm -rf 但是,你只是删除掉了工作区的文件,就会和版本库不一致,这时$ git status 你会看到哪些文件被删除了, 然后$git rm file 就可以了,记得$git commit -m “说明”

如果不小心删除错误了,(前提:文件已经更新到版本库)$ git checkout -- file 就可以进行恢复,其实就相当于恢复了版本库当前版本的文件,但是,如果没更新到版本库,你就删除了,那就真的死了-无法恢复!

 

远程仓库

请各位自行准备好个人GitHub账号

  1. 在你的Linux下主目录查看是否有 .ssh 目录(cd /home/你的虚机名字/.ssh/),如果有,再cd 进去查看是否有id_rsa和id_rsa.pub这两个文件,如果有,直接进行下一步,没有的话,打开命令窗口创建SSH Key:

    $ ssh-keygen -t rsa -C"youremail@XXXX.com"顺利的话就会出现 .ssh 目录,id_rsa 是私钥,id_rsa.pub是公钥
  2. 登录Github,进入首页,右上角进入设置页面,点击SSH and GPG keys ,new 一个SSH Key ,写入任意Title,粘贴 id_rsa.pub 文件内容到 key 文本框内,点击左下ADD 按钮,即可添加,如果绑定邮箱,可能还会收到绑定信息,在SSH Keys 页面也会显示已经添加的key,包括添加日期等。

添加远程库

先在Github 上创建一个仓库,添加一个仓库名,其他默认设置就行,直接Create

创建完成后在本地的仓库下就可以运行命令进行远程关联了

$ git remote add origin git@github.com:你的GitHub账户名/Git-tutorial.git

-----------------------------------------------------------------------git@github.com 国内的话,可能会被墙拦住,也可用 https://github.com 代替

origin:是远程库的默认名字,也可以修改,但默认是一个通常叫法,易于辨识

Git-tutorial:是GitHub 的仓库名字。

注意:别人的SSH Key公钥添加到你的账户SSH Key列表后,远程库才可以推送上来。

远程库添加之后,开始推送本地库到远程吧 $ git push -u origin master 

-u:关联本地和远程的master分支,便于以后简化拉取或推送的命令 。

如果遇到这个错误,(fetch first)第一次要获取元数据,需要$ git fetch 来从Github获取元数据

:这一步可能会遇到各种各样的错误,就不一一列举了,请自行谷歌)

没有错误之后,每次本地提交后,就可以通过$ git push origin master 推送修改了

 

后续 are on the way...

 

以上是 git日常使用解析 的全部内容, 来源链接: utcz.com/z/516034.html

回到顶部