Git起步
Git是什么?
我们都知道,Git是目前世界上最先进的分布式版本控制系统(没有之一)。
简单来说,Git就是让我们编写代码的时候可以存储各个版本代码,并且也可以回退到任何历史版本的一种控制系统。
Git有哪些功能?
1.备份文件
类似于用优盘网盘备份电影。我们的代码也需要备份。修改完了以后提交给版本库进行保管,哪一天代码没了也可以找回来。
比如我们打游戏就要存档,万一挂了还可以从上个存档的地方重玩。
2.记录历史
Git相较于网盘,更加有利于保存代码。网盘只能保留最新的状态,文件覆盖了,历史文件的就没了。而git在保存覆盖的时候,可以清楚的记录你是哪一天哪个时候哪个用户保存的代码,增加了什么,删除了什么,备注信息等等都有记录。
3.回到过去
当然,Git记录了历史日志,当然是为了可以回到过去。你每一次的保存都有日志记录,你可以回到历史的任何版本。
4.团队协作
Git可以创建很多分支,支持多个人一起协作,并且对冲突处理的也很好。
5.开源协作
在GitHub上可以看到很多别人的项目,也可以发表自己的项目,增强交流沟通。
安装Git
1.在window上安装Git
有高人已经把模拟环境和Git都打包好了,名叫 msysgit ,只需要下载一个单独的exe安装程序,其他什么也不用装,绝对好用。
msysgit 是Windows版的Git,从 http://git-scm.com/ 下载,然后按默认选项安装即可。
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
2.在linux上安装Git
首先,你可以试着输入git,看看系统有没有安装**Git**:
$ git program 'git' is currently not installed. You can install it by typing: sudo apt-get install git
像上面的命令,有很多Linux会友好地告诉你Git没有安装,还会告诉你如何安装**Git**。
如果是其他Linux版本,可以直接通过源码安装。先从Git官网下载源码,然后解压,依次输入:
./config
make
sudo make install
这几个命令安装就好了。
3.在Mac OS X上安装Git
如果你正在使用Mac做开发,有两种安装Git的方法。
第一种是安装 homebrew ,然后通过homebrew安装Git。先打开网站 http://brew.sh/。 拷贝对应脚本到终端下安装homebrew.然后在终端执行 brew install git命令。
第二种方法更简单,也是推荐的方法,就是直接从 AppStore 安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。
设置配置
安装完成后,还需要最后一步设置,在命令行输入:
git config --global user.name "zfpx" git config --global user.email "[email protected]"
因为Git是分布式版本控制系统,所以每个机器都必须自报家门:你的名字和Email地址。
注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。在这里,我们配置的环境中Git已安装好,我们课程提供也是在Linux系统中命令进行操作 。
开始Git
对于git的工作流以及基本分区,这里简单介绍一下有那几个常用区
以上的专有名词在这里解释一下:
- Workspace:工作区
- Index / Stage:暂存区
- Repository:仓库区(或本地仓库)
- Remote:远程仓库
1.创建工作区
在自己的目标文件空白处右键,选择Git Bush(安装git-scm后会有此选项),打开命令行。
使用管理员身份打开系统cmd命令行也可,按住shift键的同时,点击右键在此处打开命令行窗口即可进入当前文件的命令行。
$ git init //创建一个工作区
这时候当前目录下就有一个.git方法,这个目录是Git来跟踪管理版本库的,最好别改动。如果没有看到.git目录,那可能因为这个目录默认是隐藏的,设置一下即可。
2.添加文件
$ echo 111 > index.html //清空index.html并且写入111 $ echo 222 >> index.html //往index.html文件中添加222
添加了内容后看可以通过下面代码查看文件内容
$ cat index.html //查看index文件内容
同时也可以通过以下代码查看当前文件的状态,git 的 status 方法可以常用,了解当前的状态。
$ git status //查看当前状态 $ git status -s //查看当前状态(第一列绿色字母含义是:暂存区中和版本库中的文件的改动;第二列红色字母含义是:工作区和暂存区的文件改动)
用git的add命令可以把文件添加到仓库中暂存区
$ git add index.html //把index.html文件添加到暂存区
$ git add . //将工作区所有文件提交到暂存区
当然,提交到暂存区的文件也可以撤销
$ git rm --cached index.html //将刚提交到暂存区的东西撤销
3.提交文件
Git可以通过git commit来讲代码提交到仓库
$ git commit -m "初始化index.html" //将暂存区提交到历史区(引号中的是上传描述) $ git commit -am "添加了 xxx" //直接将暂存区提交到历史区,不需要add步骤
上传后的上传日志可以通过git log查看
$ git log //查看历史区的上传日志 $ git log --oneline //查看历史区的上传日志(单行显示) $ git log --graph //查看历史区的上传日志(图形化显示) $ git reflog //查看所有的提交
当然,也可以查看当前每个区的区别
$ git diff //查看工作区与暂存区的区别 $ git diff head //查看工作区与历史区的区别 $ git diff --cached //查看历史区与暂存区的区别
4.版本回退与删除文件
git可以通过 reset 来回退到历史版本
$ git reset --hard e8007ab //回退到编号为e8007ab的历史版本
$ git reset --hard HEAD^ //回退到上一个版本
以上代码中,e8007ab是历史版本的编号的前7位。
git可以通过 rm 来删除对应文件
$ rm index.html //删除文件 $ git checkout -- index.html //删除文件后(误删),尚未上传暂存区,可以这样撤销 $ git rm index.html //删除文件后(确定删除),并上传暂存区
到这里,你基本已经可以掌握了 git 的基本用法了,可以使用 git 来存储各个版本的代码,也可以回退到各个历史版本。但是,开发避免不了团队协作,git 在团队协作中也起了很大一部分作用。
Git团队协作/分支
1.Git的分支系统
git 的分支系统非常的好用,有了 git 的分支,你可以在你们团队的项目创建一个你自己的分支,然后在这里编写你的代码,等到开发结束后再合并到原来的分支上,不会影响别人,也可以方便自己。是团队开发的重要保证。
下面附上关于 branch 的主要代码:
# 列出所有本地分支 $ git branch # 列出所有远程分支 $ git branch -r # 列出所有本地分支和远程分支 $ git branch -a # 新建一个分支,但依然停留在当前分支 $ git branch [branch-name] # 新建一个分支,并切换到该分支 $ git checkout -b [branch] # 新建一个分支,指向指定commit $ git branch [branch] [commit] # 新建一个分支,与指定的远程分支建立追踪关系 $ git branch --track [branch] [remote-branch] # 切换到指定分支,并更新工作区 $ git checkout [branch-name] # 切换到上一个分支 $ git checkout - # 建立追踪关系,在现有分支与指定的远程分支之间 $ git branch --set-upstream [branch] [remote-branch] # 合并指定分支到当前分支 $ git merge [branch] # 选择一个commit,合并进当前分支 $ git cherry-pick [commit] # 删除分支 $ git branch -d [branch-name] # 删除远程分支 $ git push origin --delete [branch-name] $ git branch -dr [remote/branch]
对于 git 的学习我暂时只到这里,日后还需要学习,感觉各路大神指点指点。
参考网站: Git 系列教程 http://bbs.duchengjiu.top/read.php?tid=42&fid=5
阮一峰的Git常用清单 http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html