一、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@example.com"
二、创建版本库:
1. 首先,选择一个合适的地方,创建一个空目录(空文件夹):
2. 通过git init
命令把这个目录变成Git可以管理的仓库:
注意:
- 使用
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.txt
和git commit readme.txt
命令.
//用命令git add告诉Git,把文件添加到仓库(也就是暂存区)
git add readme.txt
//用命令git commit告诉Git,把文件提交到仓库:
git commit readme.txt
注:
-
-m
后面输入的是本次提交的说明,最好不要省略; -
commit
可以一次提交多个文件
4. 查看当前库的状态:
首先,我们先修改readme.txt文件中的内容,改为:
Git is a distributed version control system.
Git is free software.
然后使用git status
命令:
$ git status
然后用git diff
命令查看修改了什么内容
$ git diff readme.txt
- 知道了被修改的内容之后,我们就可以放心的提交了。先
git add
添加到暂存区,然后git commit
提交; - 在
commit
之前,我们先git diff
一下,然后再commit
,最后再git status
查看库的状态。
5. 版本回退:
现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下:
Git is a distributed version control system.
Git is free software distributed under the GPL.
然后尝试提交。
此时,我们回顾一下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
注: 跟在commit后面的一大串数字字母,是版本号 。
此时,我们把版本回退到上一个版本,也就是add distributed
版本。
//这两条命令等价,写其中一条即可
$ git reset --hard HEAD^
$ git reset HEAD
注:在Git中,用HEAD
表示当前版本,上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。
最新的那个版本append GPL
已经看不到了,如果想要再次返回这个版本怎么办?
找到那个append GPL
的commit id
是b1a356679
,然后输入以下命令:
$ git reset --hard b1a356679
6. 工作区和暂存区:
工作区(Working Directory)
- 就是你在电脑里能看到的目录,比如我的
learngit
文件夹就是一个工作区;
版本库(Repository)
-
learngit
文件夹有一个隐藏目录.git
,是Git
的版本库; -
Git
的版本库里存了很多东西,其中最重要的就是称为stage
(或者叫index
)的暂存区,还有Git为我们自动创建的第一个分支master
,以及指向master
的一个指针叫HEAD
。
说明:
-
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 "youremail@example.com"
然后一路按回车键即可。此时我们可以在用户主目录下找到.ssh
目录,里面有id_rsa
和id_rsa.pub
两个文件:
id_rsa
是私钥,不能泄露出去;
id_rsa.pub
是公钥,可以放心地告诉任何人。
- 第二步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
1.添加远程仓库:
首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库。
在Repository name填入learngit
,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:
目前,在GitHub
上的这个learngit
仓库还是空的,GitHub
告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub
仓库。
现在,我们根据GitHub的提示,在本地的learngit仓库下运行命令:
git remote add origin git@github.com:ZL6666/learngit.git
请千万注意,把上面的ZL6666
替换成你自己的GitHub账户名
添加后,远程库的名字就是origin
,这是Git
默认的叫法,也可以改成别的,但是origin
这个名字一看就知道是远程库。
下一步,就可以把本地库的所有内容推送到远程库上:
$ git push -u origin master
把当前分支master
推送到远程。由于之前远程库是空的,第一次推送master
分支时,加上了-u
参数。git
不但把本地的master
分支内容推送到远程新的master
分支,还会把本地master
分支和远程的master
分支关联起来,以后推送或者拉取就可以简化命令。
从现在起,只要本地作了提交,就可以通过命令:
$ git push origin master
2. 仓库克隆:
首先在GitHub上新建一个仓库gitskills
,然后使用以下命令即可:
$ git clone git@github.com:ZL6666/gitskills.git
这条命令执行之后,会在用户主目录下新建一个gitskills
文件夹,此文件夹即为版本库。
四、分支管理:
1. 创建和合并分支:
首先,我们创建dev
分支,然后切换到dev
分支:
$ git checkout -b dev
相当于下面两条命令:
$ git branch dev
$ git checkout dev
然后用git branch
查看当前分支:
$ git branch
然后,我们就可以在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分支此刻的提交点并没有变:
现在,我们把dev分支的工作成果合并到master分支上:
$ git merge dev
合并完成后,就可以放心地删除dev分支了:
$ git branch -d dev
删除后,查看branch,就只剩下master分支了:
$ git branch