一 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的分支合并其实是对文件的覆盖
浙公网安备 33010602011771号