Git的新手教程

Git简介

Git是目前为止,世界上最好用的分布式版本控制系统。
那么,什么是版本控制系统?
可以这么说,假设你要写一篇论文,在写的过程中你肯定避免不了修修改改,那这个时候你又不想把之前写的全部删掉,那你就只能新建一个文档,把之前写的保存下来,如此反复几次就会成这样了。

当你想要看看之前写的东西的时候,你已经不知道他在那个文件里面了。十分的尴尬。
而版本管理系统就是为了帮助我们解决这个问题而出现的。他会自动的帮助我们管理之前的版本,记录下来每个版本的改动。这样你回头在看的时候就方便很多了。

分布式VS集中式

现有的版本控制系统分为分布式和集中式两种,Git就是分布式,CVS和SVN是集中式。
而分布式和集中式的区别就是,集中式的版本库是集中存放在中央服务器,工作的时候用的都是自己的电脑,需要先从服务器中获取最新的版本,然后开始工作,完成之后再把自己的工作推送给中央服务器。集中式的最大问题就是必须联网才能工作,如果在局域网内还好,速度还是有保障的。但是在互联网下,有时候速度会慢的一批,影响工作效率。
分布式版本控制系统根本就没有中央服务器,每个人的电脑都是一个完整的版本库,这样,工作的时候哦就不需要联网,速度上就有了保障。那么,如何实现多人协作呢?比如说,你在自己的电脑上改了文件A,你的同事也在他的电脑上改了文件A,这是,你们俩之间只需要把各自的修改推送给对方,就可以互相看到对方的修改了。

Git的下载

百度搜索Git,进入官网
下载

选择下载
系统

选择系统,等待下载完成!!!

windows上安装:
傻瓜式安装,不需要配置什么东西。全部下一步就可以了。
安装完成之后,在开始菜单中找到Git Bash,打开。输入:
git config --global user.name “用户名”
git config --global user.email “邮箱”

OK,Git安装完成

Git的基础操作

Git下载完成之后就是创建自己的第一个版本库了。创建版本库的意义可以理解为建立了一个仓库,把所有需要Git管理的文件都放在这个仓库里。

$ mkdir learngit
$ cd learngit
$ pwd
/c/Users/Administrator/learngit

mkdir是用来创建一个文件夹,cd是切换盘符,pwd用来查看当前目录,比如我的当前目录就是*/c/Users/Administrator/learngit*
当然,你也可以通过cd命令切换到其他盘符,在别的地方建立版本库。比如:

$ cd D:\
$ mkdir learngit
$ cd learngit
$ pwd
/d/learngit

此时就是在D盘下新建了一个learngit文件,以此作为版本库。
注意:在Windows系统,尽量不要用中文去命名文件名,以免出现不必要的麻烦。
第二步,通过git init命令把这个目录改成Git可以管理的仓库。

$ git init
Initialized empty Git repository in D:/learngit/.git/

OK,此时第一个版本库已经建立好了。接下来就是向版本库中添加第一个文件了。在这里大家只要注意一下,尽量不要用Windows自带的记事本,因为它的编码方式有一点问题,又是后可能不好使。推荐大家使用Notepad++代替,好用而且还是免费的,只需要在使用的时候把编码方式改成UTF-8 BOM就可以了。Notepad++中文版
首先我们编写一个readme.txt文件,内容如下:

hello world

注意,一定要把它放在learngit下,否则Git是找不到的。
然后git add告诉Git,把文件添加进去。

$ git add readme

执行上面的命令。咦!! 怎么一点提示都没有的呢?这就对了,没有消息就是好消息,这就说明添加成功了。
然后git commit告诉Git把文件提交到仓库。

$ git commit -m "new file"
[master b59af06] new file
 2 files changed, 2 insertions(+), 6 deletions(-)
 create mode 100644 readme

-m后面跟的是这个文件的备注,可以输入任意说明。注意,一定不能少了*-m “”,少了就会出现问题。具体的解决方案看我的下一篇播客吧。
文件添加完成后就可以查看一下了,输入
cat <文件名>*查看

$ cat readme
hello world

连接远程版本库

基本操作介绍了一点,接下来就是连接远程仓库了,连接了远程仓库就可以不用担心文件丢失的问题了。接下来,我们只需要在GitHub这个神奇的网站上注册一个账号,就可以建立我们的远程仓库了。
在创建好GitHub帐号之后,看一下用户主目录下有没有.ssh文件夹,如果没有就执行:

$ ssh-keygen -t rsa -C "邮箱"

打开.ssh文件夹,在这下面由id_rsa和id_rsa.pub两个文件。id_rsa是私钥,是不能泄露的,id_rsa.pub是公钥,可以放心的告诉任何人。
登录GitHub,打开“setting”(就在右上角),点击“SSH and GPG keys”,然后"new SSH key",Title按自己的习惯填写,在Key文本框粘贴id_rsa.pub的内容。注意:id_rsa.pub用记事本打开就可以。
新建仓库
在GitHub上新建一个仓库。
登录GitHub,点击“New”,

新建仓库
输入新建仓库名“learngit”,选择“public”(公共的)“private”是要收费的。然后“Create repository”,创建成功。
目前,在GitHub上的这个learngit仓库还是空的,我们可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
在这里插入图片描述
现在,在本地的learngit下运行:

$ git remote add origin [email protected]:用户名/learngit.git

添加后,远程库的名字就是origin,这是git默认的叫法,也可以改成别的。
下一步就是把本地库的内容上传到远程库。

$ git push -u origin master
Enumerating objects: 43, done.
Counting objects: 100% (43/43), done.
Delta compression using up to 4 threads
Compressing objects: 100% (32/32), done.
Writing objects: 100% (43/43), 3.52 KiB | 124.00 KiB/s, done.
Total 43 (delta 13), reused 0 (delta 0)
remote: Resolving deltas: 100% (13/13), done.
To github.com:Han-ya-dong/learngit.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'

上传完成。
git push <库名> <当前分支名>是将当前分支推送到远程库,第一次推送时需要加上“-u”。此时进入learngit中可以看到,远程库中的内容已经与本地库一样了。
当你第一次使用git的clone和push命令时会出现一个警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。此时GitHub的key会被添加到信任列表里,以后就不会出现警告了。
既然我们可以把本地文件推送到GitHub,那么肯定也可以从GitHub上把文件克隆下来了。在GitHub上新建库gitskills,选中Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件,创建之后:

$ git clone [email protected]:库名/gitskills.git
Cloning into 'gitskills'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
Receiving objects: 100% (3/3), done.

git clone会从GitHub上克隆我们选中的库到本地库。

git基本命令行

mkdir <文件名>
创建文件
cd
切换盘符
git init
把当前目录设置为git可以管理的仓库
git add <文件名>
添加文件到仓库(实际上时添加到暂存区)
git commit <文件名>
提交文件(提交到版本区)

查看:

pwd
查看当前目录
git status
可以查看仓库当前的状态
git diff <文件名>
查看文件的变化
git log
查看历史记录
git log --pretty=oneline
查看精简的历史记录
git reflog
查看之前的每一次命令
cat <文件名>
查看文件内容
git diff HEAD – <文件名>
查看该文件在工作区和版本区的区别

返回:

git reset --hard HEAD^
返回到上一个版本
git reset --hard HEAD^^
返回到上上一个版本
git reset --hard HEAD~100
返回到上一百个版本
git reset --hard 版本号
返回到某个版本(版本号没必要写全)

撤销:

git checkout – <文件名>
撤销文件在工作区的修改//旧版本
git reset HEAD <文件名>
撤销暂存区的修改//旧版本
旧版本在新版本中也可以使用
git restore <文件名>
也可以撤销文件在工作区的修改//新版本
git restore --staged <文件名>
也可以撤销暂存区的修改//新版本

删除:

rm <文件名>
删除文件,但是如果该文件已经保存在版本库中,那删除之后在版本库中还会存在此文件
git checkout – <文件名>
从版本库中恢复被删除的文件
git rm <文件名>
git commit -m “”;
从版本库中删除文件,不可被恢复,如果只执行了git rm <文件名>,还是可以恢复的,
前提是文件已经保存到版本库

发布了88 篇原创文章 · 获赞 47 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/dai_ma_dong/article/details/103356253
今日推荐