Git是什么?

  Git是分布式版本控制系统,与SVN类似的集中化版本控制系统相比,集中化版本控制系统虽然能够令多个团队成员一起协作开发,但有时如果中央服务器宕机的话,谁也无法在宕机期间提交更新和协同开发。甚至有时,中央服务器磁盘故障,恰巧又没有做备份或备份没及时,那就可能有丢失数据的风险。

  但Git是分布式的版本控制系统,客户端不只是提取最新版本的快照,而且将整个代码仓库镜像复制下来。如果任何协同工作用的服务器发生故障了,也可以用任何一个代码仓库来恢复。而且在协作服务器宕机期间,你也可以提交代码到本地仓库,当协作服务器正常工作后,你再将本地仓库同步到远程仓库。

为什么要使用Git

能够对文件版本控制和多人协作开发

拥有强大的分支特性,所以能够灵活地以不同的工作流协同开发

分布式版本控制系统,即使协作服务器宕机,也能继续提交代码或文件到本地仓库,当协作服务器恢复正常工作时,再将本地仓库同步到远程仓库。

当团队中某个成员完成某个功能时,通过pull request操作来通知其他团队成员,其他团队成员能够review code后再合并代码。

  Git有哪些特性

文件三种状态(modified, staged, committed)

直接记录快照,而非差异比较

多数操作仅添加操作

近乎所有操作都是本地执行

时刻保持数据完整性


  Git基本工作流程

1.git版本控制的目录下修改某个文件

2.使用git add命令对修改后的文件快照,保存到暂存区域

3.使用git commit命令提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中

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

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。

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

Git版本控制

  创建仓库

git init

git clone

git config

  保存修改

git add

git commit

  查看仓库

git status

git log --oneline

  撤销修改

  查看之前的commit

git checkout <commit> <file>

git checkout <commit>

git checkout <branch>

  撤销公共修改

git revert <commit>

  撤销本地修改

git reset

git clean

  重写Git历史记录

git commit --amend

git rebase

git reflog

 Git协作开发

  分支

git branch

git checkout

git merge

  仓库同步

git remote

git fetch

git pull

git push

何时发生冲突:在开发者发布它们功能之前,他们需要fetch远程仓库已更新的commit到本地仓库和rebase到已更新的commit的上面。有时,本地提交与远程提交会发生冲突,git会暂停rebase过程来让你手动解决冲突。

如何解决冲突:你可以使用git statusgit add来手动解决合并时冲突。

1. 仍然使用远程仓库(central repository)和主分支(master branch)仍记录官方工程的历史

2. 开发者每次开发新功能时都创建一个新分支 --- git checkout -b

3. Feature branches应该推送到远程仓库(central repository) --- git push

4. 发送pull request来请求管理员能否合并到主分支(master branch)

5. 发布新功能到远程仓库(central repository)

01-11 18:14