git实战
https://git-scm.com/book/zh/v2
1.简介
-
git是一个分布式版本控制的软件
-
-
版本控制
-
文件发展状态
-
①文件拷贝
-
②本地版本控制
-
④分布式版本控制
-
-
-
软件 : 安装在电脑上的工具
-
2.git安装
linux/mac使用命令行安装即可,window到git官网下载即可.
git安装 :https://git-scm.com/book/zh/v2
-
在 Linux 上安装
如果你想在 Linux 上用二进制安装程序来安装 Git,可以使用发行版包含的基础软件包管理工具来安装。 如果以 Fedora 上为例,你可以使用 yum:
$ sudo yum install git
如果你在基于 Debian 的发行版上,请尝试用 apt-get:
$ sudo apt-get install git
要了解更多选择,Git 官方网站上有在各种 Unix 风格的系统上安装步骤,网址为 http://git-scm.com/download/linux。
-
在 Mac 上安装
在 Mac 上安装 Git 有多种方式。 最简单的方法是安装 Xcode Command Line Tools。 Mavericks (10.9) 或更高版本的系统中,在 Terminal 里尝试首次运行 git 命令即可。 如果没有安装过命令行开发者工具,将会提示你安装。
如果你想安装更新的版本,可以使用二进制安装程序。 官方维护的 OSX Git 安装程序可以在 Git 官方网站下载,网址为 http://git-scm.com/download/mac。

Figure 7. Git OS X 安装程序.
你也可以将它作为 GitHub for Mac 的一部分来安装。 它们的图形化 Git 工具有一个安装命令行工具的选项。 你可以从 GitHub for Mac 网站下载该工具,网址为 http://mac.github.com。
-
在 Windows 上安装
在 Windows 上安装 Git 也有几种安装方法。 官方版本可以在 Git 官方网站下载。 打开 http://git-scm.com/download/win,下载会自动开始。 要注意这是一个名为 Git for Windows 的项目(也叫做 msysGit),和 Git 是分别独立的项目;更多信息请访问 http://msysgit.github.io/。
另一个简单的方法是安装 GitHub for Windows。 该安装程序包含图形化和命令行版本的 Git。 它也能支持 Powershell,提供了稳定的凭证缓存和健全的换行设置。 稍后我们会对这方面有更多了解,现在只要一句话就够了,这些都是你所需要的。 你可以在 GitHub for Windows 网站下载,网址为 http://windows.github.com。
-
从源代码安装
有人觉得从源码安装 Git 更实用,因为你能得到最新的版本。 二进制安装程序倾向于有一些滞后,当然近几年 Git 已经成熟,这个差异不再显著。
如果你想从源码安装 Git,需要安装 Git 依赖的库:curl、zlib、openssl、expat,还有 libiconv。 如果你的系统上有 yum (如 Fedora)或者 apt-get(如基于 Debian 的系统),可以使用以下命令之一来安装最小化的依赖包来编译和安装 Git 的二进制版:
$ sudo yum install curl-devel expat-devel gettext-devel \ openssl-devel zlib-devel $ sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \ libz-dev libssl-dev
为了能够添加更多格式的文档(如 doc, html, info),你需要安装以下的依赖包:
$ sudo yum install asciidoc xmlto docbook2x $ sudo apt-get install asciidoc xmlto docbook2x当你安装好所有的必要依赖,你可以继续从几个地方来取得最新发布版本的 tar 包。 你可以从 Kernel.org 网站获取,网址为 https://www.kernel.org/pub/software/scm/git,或从 GitHub 网站上的镜像来获得,网址为 https://github.com/git/git/releases。 通常在 GitHub 上的是最新版本,但 kernel.org 上包含有文件下载签名,如果你想验证下载正确性的话会用到。
接着,编译并安装:
$ tar -zxf git-2.0.0.tar.gz $ cd git-2.0.0 $ make configure $ ./configure --prefix=/usr $ make all doc info $ sudo make install install-doc install-html install-info
完成后,你可以使用 Git 来获取 Git 的升级:
$ git clone git://git.kernel.org/pub/scm/git/git.git
3.git 三大区域
3.1.工作区
-
正在操作的文件夹,写代码.
-
已管理区
-
新增/修改 -->红色 : 自动检测 ---->git add . 提交到暂存区 绿色 ---->git commit ,提交到版本库
3.2.暂存区
-
缓存的地方
3.3.版本库
4.个人单独开发
4.1 git管理文件夹的步骤
1.进入管理的目录 2.git init 初始化,让git管理当前文件夹 3.git status 检测当前目录下文件的状态 4.三种状态的变化 1.红色: 新增/修改的文件 --> git add 文件名 / git add . 2.绿色 : git已经管理起来的 --> git commit -m "版本描述" 3.生成版本 5.个人信息配置 :用户名 邮箱 git config --global user.email "1821333144@qq.com" git config --global user.name "DengJack" 6.生成版本 git commit -m "版本描述" 7.查看版本记录 git log 只能看该版本之前的版本 git reflog 看所有的版本,之后的版本也能拿到,可以任意回滚了. 8.版本回滚 git reset --hard 版本号(前3位就可以了)
4.2分支
4.5 git rebase(变基)
-
使git记录变得简洁~
-
第一种:多个提交记录整合成一个记录
git rebase -i 老版本号 将当前版本的提交记录 合并到 老板本提交记录 git rebase -i HEAD~3 将当前开始,找最近的3条记录合并. 1.把pick改成s,只保留一个pick 2.合并往后,整合版本描述
注意: 合并记录是,不要合并已经push到仓库的记录.
-
第二种:类似合并的功能,把dev的提交记录合并到master分支上.
git checkout dev git rebase master 类似合并 git checkout master git merge dev ? #记录图形展示 git log --graph --pretty-format:"%h %s"
-
第三种:忘记推送,导致合并冲突
git pull xxx = git fetch = git merge ,会产生分叉的 不执行它了 # ==>直接执行 git fetch origin dev git rebase origin/dev -->不会有分叉
rebase 冲突处理
1.产生冲突 2.解决冲突 3.git add . 4.git rebase --continue 继续rebase
-
4.6 beyond compare软件来快速解决冲突
-
第一步 :安装beyond compare
-
第二步 :在git中配置
git config --local merge.tool bc3 git config --local meretool.path "/usr/local/bin/bccom" git config --local mergeool.keepBackup false --local 指该配置只在当前生效
-
第三步 :合并产生冲突后,解决冲突
git mergetool 自动打开,自动打开冲突文件.
5.多人协同开发
5.3.邀请小弟,小弟开发
1.小弟注册账号,获取其用户名 2.邀请成员进组织 member/owner ,小弟会接受收到邮件,同意加入组织.组织成员成为2. 3.组织内可以有很多的项目,默认权限只有read 4.进入项目,设置权限settings-->合作者,再把小弟邀请进来.小弟加入组织,也加入了这个项目,对该项目由write的权限了. ### 小弟开发 #### 5.mkdir brother cd brother/ git clone https://xxxxxxx 项目仓库 cd 项目目录(cd dbhot) git checkout dev # 切换到开发分支 git checkout -b ddz # 自己新建一个分支 开发中 ... ... ... git add . git commit -m "ddz斗地主
5.4申请代码review
通过 pull request/merge request实现 1.配置(loader来做) 项目settings > Branches 给分支添加规则 ,给 dev分支添加规则,合并前review 2.小弟发起申请pull request 把ddz 分支 合并到dev分支,写描述信息 3.loader会受到一个pull request申请. add your review 查看所有新代码 merge pull request 可以让你进行合并,已经review confirm merge 确定合并,完成合并. 功能开发完了,ddz分支,可以删除了.
5.5测试&上线
# 测试团队&loader来做 1.在dev分支下, git checkout -b release # release测试分支 在release测试 2.申请pull request. release --> master 3.代码view , 同意合并 4.在dev下,把release分支合并,release分支删除. git branch -d release 5. git checkout master git pull origin master # 拉取最新master版本 6.创建版本tag git tag -a v2 -m "第二版,斗地主功能" git push origin --tags 7.运维人员就可以下载代码做上线了 git clone -b v2 地址
6.给开源项目贡献代码
-
fork源代码 --->将别人的代码fork到自己的远程仓库里去
-
在自己仓库修改代码从自己的远程仓库git clone https://github.com/DengJackNo1/tornado.git
-
在电脑本地修改bug
-
git add git commit -m "修复bug/贡献代码" git push origin master ,提交到自己的仓库 .
-
给源代码的作者提交 修复bug 的申请(create new pull request)
11.大总结
git init git add . git add filanme git commit -m "xxx" git status git config --global user.email "1821333144@qq.com" git config --global user.name "DengJack" git log git reflog git reset --hard 添加远程连接(别名) git remote add origin 地址 推送代码 git push origin dev 下载代码 git clone 地址 (所有的分支) 拉取代码 git pull origin dev 等价于 git fetch origin dev git merge origin/dev 保持代码提交整洁(变基) git rebase 分支 # -->保持代码提交简洁 ,和 merge 差不多 . 记录图形展示 git log --graph --pretty=format:"%h %s" 创建并切换到分支 git checkout -b dev