一 git是什么玩意儿

git是一个开发者常常使用的神秘工具,那么git到底是什么呢?

其实git和svn是同样的东西,都是一个版本管理工具,都是为了对开发代码和文档的集中管理。

二 透过svn看git

SVN是采取集中式管理

1.搭建一个SVN服务器;

2.客户端安装SVN软件,然后去访问SVN服务器,从中获取/下载文档;

3.当我们更改了文档后,我们需要将文档上传到SVN服务器中;

可见,SVN缺陷有:

1.如果SVN服务器崩了,那么整个SVN系统也就没法用了。

2.如果我们总是在本地更改一个文件,那么如果改错了,肯定是回滚不了的。那么要实现版本管理,我们每次更改就需要上传到SVN服务器,如果网络有问题,那么你的这次迭代就会让你头疼脑大

那么git则采用了一种分布式的管理方式,即你的客户机就是一个你自己的SVN服务器,同时我们还可以在github上搭建一个管理仓库。

三 下载安装本地git库

第一步:在Windows上使用Git,可以从Git官网直接下载安装程序,(网速慢的同学请移步国内镜像),然后按默认选项安装即可。

安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

第二步:安装完成后,还需要最后一步设置,在git bash命令行输入:

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

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。

注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

第三步:生成公钥密钥对,

$  ssh-keygen -t rsa -b 4096 -C "your_email@example.com"          使用邮箱,生成公钥

第四步:打开 git bash 

$ cd ~/.ssh

$ cat id_rsa.pub  这里面放的就是公钥。需要将这个复制到git仓库/码云中,

第四步:选择一个合适的地方,创建一个空目录(即:随便在任意盘区里,创建一个空文件夹),在git bash命令行输入:

$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit

pwd命令用于显示当前目录。如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。

第五步,通过git init命令把这个目录变成Git可以管理的仓库,在git bash命令行输入:

$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

到此在本地建立gitf服务器就建立好了,那么learngit目录就是你在本地可以进行版本控制的目录。如果你去该文件夹下,打开查看隐藏文件,当前目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

四 玩转git推送代码

第一步:一定要在learngit目录下,创建文件,如:readme.txt.并编写内容

第二步:设置要提交到的远程地址 。

$ git remote -v  查看有哪些远程地址

$ git remote rm origin 删除远程名字叫origin

$ git remote add origin git@github.com:michaelliao/learngit.git 构建一个名字叫origin 的远程地址

注意,如果你想通过远程地址,提交,你需要设置公钥的。

第三步:拉取代码。这一步是为了避免,远程仓库中必须有某个文件(如:README.md),但是当前代码中却没有的问题。

$ git pull --rebase origin master

第四步:将readme.txt 推到git库中。

$ git add readme.txt
执行上面的命令,没有任何显示,这是将readme.txt 放到缓存中,表示需要提交的代码。 可以通过git status查看。

$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt
引号后面的内容是说明:说明你为什么要做这次提交,这步是为了让你知道这次提交,是对readme.txt文档做了什么

第五步:就是如何回滚,前进和查询readme.txt的操作

$ git log  #查日志记录,
commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master)  版本号
Author: Michael Liao <askxuefeng@gmail.com>  谁做的
Date:   Fri May 18 21:06:15 2018 +0800        时间

    append GPL  说明

commit e475afc93c209a690c39c13a46716e8fa000c366  前一个版本号
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 21:03:36 2018 +0800

    add distributed

commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 前前版本号
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 20:59:18 2018 +0800

    wrote a readme file

回滚:

$ git reset --hard 1094a   #1094a是要回滚到的版本号
HEAD is now at 83b0afe append GPL

有回滚就有前进

$ git reflog   #查你最该文件做的所有操作的记录, 从里面找到你最新的版本号
e475afc HEAD@{1}: reset: moving to HEAD^   这步说你回滚了
1094adb (HEAD -> master) HEAD@{2}: commit: append GPL  这步说你提交了
e475afc HEAD@{3}: commit: add distributed   这步说你提交了
eaadf4e HEAD@{4}: commit (initial): wrote a readme file

从上面找到最新的版本号后,你就可以继续git reset --hard <版本号>了。

第六步:提交代码

$ git push -u origin master 

注意:git的分支合并其实是对文件的覆盖

 

posted on 2018-08-09 15:16  进_进  阅读(132)  评论(0)    收藏  举报