标签:版本控制 git
1、版本控制(vcs):记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统。
1)本地版本控制系统:
1.1 直接复制整个项目目录,然后加上时间戳。
1.2 通过基础文件和增量(补丁)计算每个版本。
2)集中化版本控制系统(svn):
2.1 不同系统上协同工作。
2.2 中央仓库单点故障。
3)分布式版本控制系统(git):
3.1 客户端并不只是提取最新版本的文件快照,而是把代码仓库完整地镜像下来。
3.2 不存在单点故障问题。
2、git起源于linux内核开源提交。
2)svn 关注文件增量,git 关注文件整体。
1.1 为了提高效率,对于没有修改的文件,git只保存一个上次快照的链接(例如软链)。
1.2 几乎所有操作都是本地执行。
1.3 git通过计算文件内容或者目录结构的sha1值来判定文件是否有修改。
3、git clone
git clone --bare
git config --global
git init
工作目录,缓存区,git仓库。
.git目录
git add
git commit -m "some message"
1)在工作目录初始化仓库
2)从现有仓库克隆
git status 查看文件状态
.gitignore文件
git diff 修改之后还没暂存的详情。
git diff --cached 暂存的和上次提交的差异。
git commit -a -m "some message" :add 和 commit一起搞了。
git rm之后在commit就可以不再跟踪了。
git rm --cached 仅删除缓存区里的文件,工作区的文件没有删除。
git mv重命名文件。
git log 查看提交历史。
git log -p
git log --stat
gitk : git log 的图形化工具。
git commit --amend 重新提交。
git reset HEAD :反add。
git checkout -- : 放弃文件修改。
git remote :查看远程仓库。 -v列出详情。
git remote add :添加远程仓库
git fetch :从远程仓库抓取数据到本地。
git pull :从远程仓库拉取数据到本地,并且自动合并。
git push origin master :克隆操作会自动默认使用master 和origin名字。
git remote show : 查看远程仓库信息。
git remote rm :移除远程仓库。
git tag :标签。
在git中提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存区内容快照的指针,包含本次提交的作者等相关附属信息,包含零个或多个指向该提交对象的父对象指针:首次提交是没有直接祖先的,普通提交有一个祖先,由两个或多个分支合并产生的提交则有多个祖先。
快照被保存为blob对象。
分支其实就是从某个提交对象往回看的历史。
git branch :创建分支。
HEAD : 当前分支的别名。
git checkout :分支切换。
由于 Git 中的分支实际上仅是一个包含所指对象校验和(40 个字符长度 SHA-1 字串)的文件,所以创建和销毁一个分支就变得非常廉价。说白了,新建一个分支就是向一个文件写入 41 个字节(外加一个换行符)那么简单,当然也就很快了。
git checkout -b :新建并切换到新分支。
git merge :分支合并。
git branch -d :删除分支。
同一个文件的同一个部分,产生冲突。
任何包含未解决冲突的文件都会以未合并(unmerged)的状态列出。
git branch -v :查看各个分支最后的提交对象。
*表示当前所在的分支。
git branch --merged :查看已经合并到当前分支的分支。(其实可以删掉了)
git branch --no-merged :查看还未合并到当前分支的分支。
合并分支会自动生成一个新的提交对象。
直接从尾部开始的分支在合并时,会提示fast forward,即直接移动指针。
远程仓库名/分支名。
远程分支无法修改。
自动合并是:两个分支的最新提交对象已经共同祖先,三方合并。
标签:版本控制 git
原文地址:http://happyyoung.blog.51cto.com/11290868/1765424