Git入门这件小事

一、Git的安装:

1、linux下:sudo apt-get install git 这条命令即可;
2、windows下:官网下载相关镜像文件安装即可。安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
然后输入以下命令:

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

二、创建版本库:

1. 首先,选择一个合适的地方,创建一个空目录(空文件夹):
2. 通过git init命令把这个目录变成Git可以管理的仓库:
Git入门这件小事_第1张图片
Paste_Image.png

注意:

  • 使用git init命令后,会在learngit文件夹中创建一个 .git 文件夹,这个目录是Git来跟踪管理版本库的
  • 如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。
3. 向版本库里添加一个文件,如readme.txt文本:

先创建一个文本文件readme.txt,在里面输入一些内容(如下面两句话),然后把这个文件放到learngit目录下

Git is a version control system.
Git is free software.

然后使用 git add readme.txtgit commit readme.txt命令.

//用命令git add告诉Git,把文件添加到仓库(也就是暂存区)
git add readme.txt
//用命令git commit告诉Git,把文件提交到仓库:
git commit readme.txt
Git入门这件小事_第2张图片
Paste_Image.png

注:

  • -m后面输入的是本次提交的说明,最好不要省略;
  • commit可以一次提交多个文件
4. 查看当前库的状态:

首先,我们先修改readme.txt文件中的内容,改为:

Git is a distributed version control system.
Git is free software.

然后使用git status命令:

$ git status
Git入门这件小事_第3张图片
Paste_Image.png

然后用git diff命令查看修改了什么内容

$ git diff readme.txt
Git入门这件小事_第4张图片
Paste_Image.png
  • 知道了被修改的内容之后,我们就可以放心的提交了。先git add添加到暂存区,然后git commit提交;
  • commit之前,我们先git diff一下,然后再commit,最后再git status查看库的状态。
Git入门这件小事_第5张图片
Paste_Image.png
5. 版本回退:

现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下:

Git is a distributed version control system.
Git is free software distributed under the GPL.

然后尝试提交。

Paste_Image.png

此时,我们回顾一下readme.txt文件一共有几个版本被提交到Git仓库里了:
版本1:wrote a readme file

Git is a version control system.
Git is free software.

版本2:add distributed

Git is a distributed version control system.
Git is free software.

版本3:append GPL

Git is a distributed version control system.
Git is free software distributed under the GPL.

此时,git log命令显示从最近到最远的提交日志

$ git log
Git入门这件小事_第6张图片
Paste_Image.png

注: 跟在commit后面的一大串数字字母,是版本号

此时,我们把版本回退到上一个版本,也就是add distributed版本。

//这两条命令等价,写其中一条即可
$ git reset --hard HEAD^
$ git reset HEAD

注:在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

Git入门这件小事_第7张图片
Paste_Image.png

最新的那个版本append GPL已经看不到了,如果想要再次返回这个版本怎么办?
找到那个append GPLcommit idb1a356679,然后输入以下命令:

$ git reset --hard b1a356679
Paste_Image.png
6. 工作区和暂存区:

工作区(Working Directory)

  • 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区;

版本库(Repository)

  • learngit文件夹有一个隐藏目录.git,是Git的版本库;
  • Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD
Git入门这件小事_第8张图片
Paste_Image.png

说明:

  • git add实际上就是把文件修改添加到暂存区;
  • git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建的Git版本库是,Git自动为我们创建了唯一一个master分支,所以,现在git commit就是往master分支上提交更改。(因为以后还有可能往分支上提交啊!)

7. 管理修改:

git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别。

$ git diff HEAD -- readme.txt
8. 撤销修改:

git checkout -- file命令可以丢弃工作区的修改:

$ git checkout -- readme.txt

有两种情况:

  • 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
  • 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态。

9. 删除文件:

一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm命令删了:

$ rm test.txt

这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了。

此时你有两个选择:

  • 一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit
$ git rm test.txt
$ git commit -m "remove test.txt"
  • 误删,因为版本库里还有,可以很轻松的把误删的文件恢复到最新版:
$ git checkout -- test.txt

三、远程仓库:

  • 第一步:创建SSH Key。
    C:\Users\ZL用户根目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建新的SSH Key:
$ ssh-keygen -t rsa -C "[email protected]"

然后一路按回车键即可。此时我们可以在用户主目录下找到.ssh目录,里面有id_rsaid_rsa.pub两个文件:
id_rsa是私钥,不能泄露出去;
id_rsa.pub是公钥,可以放心地告诉任何人。

  • 第二步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
    然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
Git入门这件小事_第9张图片
Paste_Image.png
1.添加远程仓库:

首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库。

Git入门这件小事_第10张图片
Paste_Image.png

在Repository name填入learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:

Git入门这件小事_第11张图片
Paste_Image.png

目前,在GitHub上的这个learngit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

现在,我们根据GitHub的提示,在本地的learngit仓库下运行命令:

git remote add origin [email protected]:ZL6666/learngit.git
Paste_Image.png

请千万注意,把上面的ZL6666替换成你自己的GitHub账户名

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

下一步,就可以把本地库的所有内容推送到远程库上:

$ git push -u origin master

把当前分支master推送到远程。由于之前远程库是空的,第一次推送master分支时,加上了-u参数。git不但把本地的master分支内容推送到远程新的master分支,还会把本地master分支和远程的master分支关联起来,以后推送或者拉取就可以简化命令。

Git入门这件小事_第12张图片
Paste_Image.png

从现在起,只要本地作了提交,就可以通过命令:

$ git push origin master
2. 仓库克隆:

首先在GitHub上新建一个仓库gitskills,然后使用以下命令即可:

$ git clone [email protected]:ZL6666/gitskills.git

这条命令执行之后,会在用户主目录下新建一个gitskills文件夹,此文件夹即为版本库。

Paste_Image.png

四、分支管理:

1. 创建和合并分支:

首先,我们创建dev分支,然后切换到dev分支:

$ git checkout -b dev

相当于下面两条命令:

$ git branch dev
$ git checkout dev
Paste_Image.png

然后用git branch查看当前分支:

$ git branch
Paste_Image.png

然后,我们就可以在dev分支上正常提交,比如对readme.txt做个修改,加上一行:

Creating a new branch is quick

然后提交:

$ git add readme.txt 
$ git commit -m "branch test"

现在,dev分支的工作完成,我们就可以切换回master分支:

$ git checkout master

切换回master分支后,再查看一个readme.txt文件,刚才添加的内容不见了!因为那个提交是在dev分支上,而master分支此刻的提交点并没有变:

Git入门这件小事_第13张图片
Paste_Image.png

现在,我们把dev分支的工作成果合并到master分支上:

$ git merge dev

合并完成后,就可以放心地删除dev分支了:

$ git branch -d dev
Git入门这件小事_第14张图片
Paste_Image.png

删除后,查看branch,就只剩下master分支了:

$ git branch
Paste_Image.png

参考

  1. 廖雪峰git教程

你可能感兴趣的:(Git入门这件小事)