git
1.Git简介
1.1 版本控制
版本控制:是一种系统(记录一个或若干文件的变化,以便将来查询特定版本修订情况)
-
本地版本控制系统:
首先,在本机上有版本控制的需要,最简单的方法,就是复制整个项目,并加上日期,版本等。现在大都采用记录文件的历次更新差异。(现在做的复制源码文件的工作,还在本地版本控制的前一阶段,只要求能够备份当前代码。没有进行版本控制。) -
集中化版本系统:
解决了再本地的版本控制,另一个问题出现了如何让不同系统的人协同开发项目。,于是出现了集中化版本系统。简单,方便控制?如果中央服务器出现问题,风险太大。 -
分布式版本控制:
1.2 来历
2005年,Bitkeeper同Linux内核开源社区的合作关系结束。使 Linux 开源社区(特别是 Linux 的缔造者 Linux Torvalds)基于使用 BitKcheper 时的经验教训,开发出自己的版本系统。 他们对新的系统制订了若干目标:
- 速度
- 简单的设计
- 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
- 完全分布式
- 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
1.3 Git基础
- 直接记录快照,而不是人间差异(快照是什么?)
- 几乎所有的操作都在本存储,快速。
- 三种状态:
- 已提交(Git仓库 .git directory(Repository储藏室))、
- 已修改(工作目录 Working Directory)
- 已暂存(Staging Area)
1.4 起步
只有在命令行中才能执行Git的所有功能。许多GitGUI实现Git所有功能的子集来降低复杂度
1.安装
windows中安装的是Git for Windows(msysGit)
英语要学好,安装时看不懂英语
2.配置
1.安装完成后打开git-bash 设置用户名和邮箱
$ git config --global user.name "github's Name"
$ git config --global user.email "github@xx.com"
--global表示全局,默认所有的账户都是这个用户名和邮箱,如果想在单个项目提交到其他项目,在项目根目录下进行单独配置(不加--global),我也不知道这个是什么,我用的自己的github账号
2. 命令:
$ git config --list:查看配置
$ git config (key):***查看key的值***
$ git help[key]:***获取帮助***
2.Git基础
2.1创建版本库:进入目录,pwd查看当前目录;git init
vc6.0编译器cl.exe
2.2将当前目录下的文件纳入版本控制
git add (file)
git commit -m '[提交说明]'
创建版本库(git init) -> 添加文件(git add) -> 提交(git commit)
2.3 从现有仓库中克隆:
git clone (git add) [name]:如果没有后面的name,原来是什么名字,现在就是什么名字
下面这个使用的是git协议,我们还可以使用http协议或者SSH协议* ***
2.4 查看状态,文件分为两种状态
- 未跟踪状态:(git add 加入暂存区)
- 已跟踪状态:
- 未修改:
- 已修改:git add 加入暂存区
- 暂存:git commit 提交,变为未修改。
git status:查看状态(git commit -h查看帮助)
现在ReadMe是已修改git add 加入暂存;
在提交git commit
记录每次更新 到仓库,上面的详细版
2.5 查看提交历史
git log
2.6撤销操作
2.7 远程仓库:
git remote:查看当前远程库
git remote add (remote name)(remote address):添加远程仓库
git fetch:从远程仓库中拉取
git pull:拉取并合并
git push:推送到远程库;
目前只能https push;添加远程库,拉取并合并,在提交
git remote rm (name)删除版本库
2.8 打标签
3.分支
1.创建分支:git branch
HEAD :ref: refs/heads/master
2.切换分支:git checkout(branch-name)
HEAD:ref: refs/heads/testing
3.新建分支并切换分支:git branch -b (branch-name)
4.合并分支:
1. 返回master;
2. git merge (branch-name)
如果要合并的分支是master同一线上的分支,直接将master指针移到最新的分支上,
如果要合并的分支不只同一条线上,则有可能要解决冲突才能合并。
3.git -d (branch-name):删除分支。
5.分支管理:
* 查看分支:git branch, git branch -v
2.切换分支:git checkout (branch-name)
利用分支进行的开发流程。
master分支放稳定版,issue-xx放解决某个问题的版本,dumbidea放为了某个想法做的实验
请务必牢记这些分支全部都是本地分支,这一点很重要。当你在使用分支及合并的时候,一切都是在你自己的 Git 仓库中进行的 — 完全不涉及与服务器的交互
4.服务器上的Git
四种协议:
Git 可以使用四种主要的协议来传输数据:本地传输,SSH 协议,Git 协议和 HTTP 协议。下面分别介绍一下哪些情形应该使用(或避免使用)这些协议。