git使用的入门教程

GIT的官网:https://git-scm.com/

不过下载比较慢;

本章介绍开始使用 Git 前的相关知识。我们会先了解一些版本控制工具的历史背景,然后试着让 Git 在你的系统上跑起来,直到最后配置好,可以正常开始开发工作。读完本章,你就会明白为什么 Git 会如此流行,为什么你应该立即开始使用它。

如果你们团队以前用的是SVN,那么也没有必要为了换GIT而用GIT;只是一个版本控制和协作的工具,只是因为免费和极客精神火起来的,请勿神话;

基本的 Git 工作流程如下:

  • 1. 在工作目录中修改某些文件。
  • 2. 对修改后的文件进行快照,然后保存到暂存区域。
  • 3. 提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。

所以,我们可以从文件所处的位置来判断状态:如果是 Git 目录中保存着的特定版本文件,就属于已提交状态;如果作了修改并已放入暂存区域,就属于已暂存状态;如果自上次取出后,作了修改但还没有放到暂存区域,就 是已修改状态。到第二章的时候,我们会进一步了解其中细节,并学会如何根据文件状态实施后续操作,以及怎样跳过暂存直接提交。

分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

下图是经典的git开发过程。

Git的功能特性:从一般开发者的角度来看,git有以下功能:

  • 1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
  • 2、在自己的机器上根据不同的开发目的,创建分支,修改代码。
  • 3、在单机上自己创建的分支上提交代码。
  • 4、在单机上合并分支。
  • 5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
  • 6、生成补丁(patch),把补丁发送给主开发者。
  • 7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
  • 8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。

从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:

  • 1、查看邮件或者通过其它方式查看一般开发者的提交状态。
  • 2、打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。
  • 3、向公共服务器提交结果,然后通知所有开发人员。

优点:

  • 适合分布式开发,强调个体。
  • 公共服务器压力和数据量都不会太大。
  • 速度快、灵活。
  • 任意两个开发者之间可以很容易的解决冲突。
  • 离线工作。

缺点:

  • 学习周期相对而言比较长。
  • 不符合常规思维。
  • 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

git的使用 #

1.版本控制 #

1.1 备份文件 #

  • 类似于网盘备份
  • 我们的代码也需要备份。修改完了以后提交给版本库进行保管,哪一天代码没了也可以找回来。

1.2 记录历史 #

  • 比如我们打游戏就要存档,万一挂了还可以从上个存档的地方重玩。
  • 和网盘不同,网盘保留的是最新的状态,历史的记录都没有了,修改的记录也都找不回来了
  • 网盘无法知道文件里的某行代码是何人在哪个时间添加进去的

1.3 回到过去 #

  • 如果我有一天不小心删除了某个文件,我们可以通过历史备份找回来

1.4 多端共享 #

  • Git仓库可以通过PC端、Android、IOS移动端等各个终端访问
  • 可以随时随地修改代码,公司没干完的工作回家接着干

1.5 团队协作 #

  • 多个人或团队合作编写一个项目
  • 合并代码处理冲突

2.什么是git #

  • 为了告别手动方式管理Linux代码,并且符合开源和免费,Linus花了两周时间自己用 C 写了一个分布式版本控制系统,这就是Git
  • Git迅速成为最流行的分布式版本控制系统,尤其是 2008 年 GitHub 网站上线了,它为开源项目 免费提供Git存储 ,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

3.git的安装 #

3.1 windows下安装 #

下载地址 http://git-scm.com

 

3.2 mac下安装 #

下载Homebrewhttp://brew.sh
  

  • 拷贝对应脚本到终端下安装HomeBrew
  • 然后在终端执行 brew install git命令安装*git

安装xcode会默认下载git

4. 配置git用户和邮箱 #

$ git config --global user.name "你的github用户名"    
$ git config --global user.email "你的github邮箱"

不配置用户名和邮箱的话无法提交,因为git不知道你是谁

查看配置

$ git config --global user.name 
$ git config --global user.email

查看所有配置

$ git config --list

5.初始化git #

  • 先创建一个空目录 ,然后进入此目录
  • 点击右键选择Git-Bash打开命令行
  • 输入git init命令把这个目录变成Git可以管理的仓库
$ git init

通过ls -al命令查看所有文件

6.git中的三个区 #

工作流
http://card.mugeda.com/campaigns/56d2c4a0a3664e3308000407/20160304090522/56d97729a3664e9c65000047/index.html

  • 工作区

    通过git add 添加到暂存区

      $ git add '文件名'
    
  • 暂存区
    特点:过渡的作用,避免误操作保护工作区和历史区,分支处理;

    通过git commit 添加到历史区

      $ git commit -m"注释内容"
    
  • 历史区

    查看历史状态

      $ git log
    

    修改时通过git status查看当前状态

7.git diff #

不同区的代码比较

7.1 工作区和暂存区 #

$ git diff

7.2 暂存区和历史区 #

$ git diff --cached(--staged)

7.3 工作区和版本库 #

$ git diff master

8. 撤销 #

8.1 撤销回git add的内容 #

git reset Head "文件名"

8.2 撤回文件 #

  • 先从缓存区撤销,缓存区无内容,从历史区域撤销
    $ git checkout "文件名"
    

有的时候我们希望提交时合并到上一次的提交 git commit –amend

9.删除 #

9.1 删除暂存区和工作区 #

删除暂存区中的内容,并且保证工作区中的内容已经不存在

$ git rm "文件名"

若本地文件存在则不能删除,需要通过-f参数删除

9.2 仅删除缓存区 #

$ git rm --cached "文件名"

10. 恢复 #

10.1 恢复某个版本文件 #

$ git checkout commit_id filename 某个文件

10.2 通过版本id恢复 #

$ git reset --hard commit_id

10.3 恢复未来 #

查看当时回滚时的版本

$ git reflog

10.4 快速版本回退 #

$ git reset --hard HEAD^
$ git reset --hard HEAD~3

11. 同步远程仓库 #

11.1 gitHub #

  • 注册账号
  • 新建项目

11.2 添加远程仓库 #

$ git remote add origin "地址"

11.3 添加忽略文件 #

$ touch .gitignore
$ echo .DS_Store
$ echo node_modules
$ echo .idea

11.4 推送代码 #

$ git push origin master

11.5 查看 #

$ git remote 查看名字
$ git remote -v 查看地址

12.代码的合并 #

12.1 git fetch #

$ git fetch

拉取过来手动合并

$ git diff master origin/master
$ git merge origin/master

12.2 git pull #

拉取并合并

git pull

13. 分支 #

git branch
git branch 创建分支
git checkout a
git checkout -b c切换分支
在master  git merge
git checkout b
git branch --merged 合并了哪些分支
git branch --no-merged 合并了哪些分支
git branch -d a 删除分支
git branch -D a 删除分支

14. tag版本 #

git tag v1.0

15. 作业提交流程 #

15.1 第一次交作业流程(组长) #

  • fork珠峰培训讲师的作业仓库
  • 把自己的仓库下载到本地
  • 把自己的作业 上传到自己的github仓库
  • pull request给讲师
  • 添加组员账号

15.2 第二次交作业流程(组员) #

  • 克隆组长项目
  • 拉取组长仓库最新代码
  • 将自己的作业(放入对应的文件夹)
  • git add/git commit
  • 再push前拉取组长仓库最新代码
  • push到组长仓库

15.3 第二次交作业流程(组长) #

  • 在本地增加讲师仓库
  • 拉取自己的最新代码
  • 拉取老师的最新的代码,如果冲突需要解决冲突
  • 把自己的作业 拷贝进去(如果组长没有要提交的东西可省略)
  • 把自己的作业上传到自己的github仓库(如果组长没有要提交的东西可省略)
  • pull request给讲师

未经允许不得转载:WEB前端开发 » git使用的入门教程

赞 (0)