“Git”的版本间的差异
(→起步) |
(→起步) |
||
第24行: | 第24行: | ||
* 完全分布式 | * 完全分布式 | ||
* 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量) | * 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量) | ||
+ | |||
+ | ;Git 基础 | ||
+ | |||
+ | * 直接记录快照,而非差异比较 | ||
+ | Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异。 | ||
+ | |||
+ | * 近乎所有操作都是本地执行 | ||
+ | |||
+ | * 时刻保持数据完整性 | ||
+ | Git使用SHA-1算法计算数据的校验和,通过对文件的内容或目录的结构计算出一个SHA-1哈希值,作为指纹字符串。 | ||
+ | 这项特性作为Git的设计哲学,建在整体架构的最底层。所以如果文件在传输时变得不完整,或者磁盘损坏导致文件数据缺失,Git都能立即察觉。 | ||
+ | |||
+ | * 多数操作仅添加数据 | ||
+ | * 文件的三种状态:committed,modified和staged。 | ||
==《Pro Git》网页版== | ==《Pro Git》网页版== |
2016年12月1日 (四) 03:44的版本
目录
Git详解
http://www.open-open.com/lib/view/open1328069609436.html
起步
关于版本控制
- 本地版本控制系统
- 集中化的版本控制系统
- 分布式版本控制系统
Git历史
1991-2002年间:绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上。
2002-2005年:整个项目组开始使用用分布式版本控制系统BitKeeper来管理和维护代码。
2005年:BitKeeper不再免费使用了。迫使Linux开源社区开发一套属于自己的版本控制系统。他们对新的系统制订了若干目标:
- 速度
- 简单的设计
- 对非线性开发模式的强力支持(允许上千个并行开发的分支)
- 完全分布式
- 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
- Git 基础
- 直接记录快照,而非差异比较
Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异。
- 近乎所有操作都是本地执行
- 时刻保持数据完整性
Git使用SHA-1算法计算数据的校验和,通过对文件的内容或目录的结构计算出一个SHA-1哈希值,作为指纹字符串。 这项特性作为Git的设计哲学,建在整体架构的最底层。所以如果文件在传输时变得不完整,或者磁盘损坏导致文件数据缺失,Git都能立即察觉。
- 多数操作仅添加数据
- 文件的三种状态:committed,modified和staged。
《Pro Git》网页版
https://git-scm.com/book/zh/v2
Git flow工作流
http://blog.tomtalk.net/uploads/e1cc9546f886773e0a3e344cf3ad80fa.png
初始化git flow,它会问你一系列的问题,蛋定!尽量使用它的默认值就好了。
$ git flow init No branches exist yet. Base branches must be created now. Branch name for production releases: [master] Branch name for "next release" development: [develop] How to name your supporting branch prefixes? Feature branches? [feature/] Release branches? [release/] Hotfix branches? [hotfix/] Support branches? [support/] Version tag prefix? []
开发流程小结:
git flow feature start xxx.1.0 (它会基于develop开一个分支,用于功能开发) git flow release start xxx.1.2 (它会基于develop开一个分支,用于提测和bug修复) git flow hotfix start xxx.1.2 (它会基于master开一个分支,用于线上bug紧急修复) ... git flow feature finish xxx.1.0 (它会merge到develop上) git flow release finish xxx.1.2(它会merge回master和develop) git flow hotfix finish xxx.1.3(它会merge回master和develop)
Master: 最近发布到生产环境的代码。
Hotfix: 热修复分支,线上项目出现debug修复时使用。
Release: 测试分支,下一个发布版本由此诞生,debug的聚集地。
Develop: 主开发分支,功能分支由此检出,功能分支的最终归宿。
Feature: 功能分支。
http://danielkummer.github.io/git-flow-cheatsheet/index.zh_CN.html git-flow 备忘清单
http://www.bkjia.com/Javabc/1156134.html git flow的使用
gitlab
配置Git支持大小写敏感
- 在新建代码文件时,不注意把文件名应该小小写搞错了
- 文件已经push到远程了
- 在windows下面将文件名字改为全小写
改好后,在Git中没有任何反应,使用git status时,如果遇到下面情况,说明GIT大小写不敏感, 如何解决Git的大小不敏感问题呢?
- 设置Git大小写敏感 ignorecase = false
- 先删除文件,再添加进去
- 使用git的rename命令
.config
user] name = tecshuttle email = tecshuttle@gmail.com [core] autocrlf = true ignorecase = false [credential] helper = store
TortoiseGit保存用户名密码的方法
- Windows中添加一个HOME环境变量,值为%USERPROFILE%
- 在“开始>运行”中打开%Home%,新建一个名为“_netrc”的文件
- 用记事本打开_netrc文件,输入Git服务器名、用户名、密码,并保存:
machine github.com #git服务器名称 login tom.xie #git帐号 password tecshuttle #git密码
让TortoiseGit记住帐号密码
在"C:\Documents and Settings\Administrator\.gitconfig" 文件 或 "项目/.git/config"文件 里增加两行(windows用wincred):
[credential] helper = store [credential] helper = wincred
帐号密码信息会保存在 C:\Documents and Settings\Administrator\.git-credentials里。
分支
创建
$ git checkout -b iss53 #这相当于执行下面这两条命令 $ git branch iss53 $ git checkout iss53
合并
$ git checkout master $ git merge hotfix
删除
git branch -d hotfix
Git基本常用命令
git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。 git add XX 把xx文件添加到暂存区去。 git diff XX 查看XX文件修改了那些内容 git log 查看历史记录 git reset –hard HEAD^ 或者 git reset –hard HEAD~ 回退到上一个版本 (如果想回退到100个版本,使用git reset –hard HEAD~100 ) cat XX 查看XX文件内容 git reflog 查看历史记录的版本号id git checkout — XX 把XX文件在工作区的修改全部撤销。 git rm XX 删除XX文件 git remote add origin https://github.com/tugenhua0707/testgit 关联一个远程库 git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库 git clone https://github.com/tugenhua0707/testgit 从远程库中克隆 git checkout –b dev 创建dev分支 并切换到dev分支上 git merge dev 在当前的分支上合并dev分支 git branch –d dev 删除dev分支 git branch name 创建分支 git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作 git stash list 查看所有被隐藏的文件列表 git stash apply 恢复被隐藏的文件,但是内容不删除 git stash drop 删除文件 git stash pop 恢复文件的同时 也删除文件 git remote 查看远程库的信息 git remote –v 查看远程库的详细信息 git push origin master Git会把master分支推送到远程库对应的远程分支上
Git使用基础篇
http://www.open-open.com/lib/view/open1332904495999.html
git clone https://github.com/tecshuttle/zenho_xs.git zenho_xs git pull git push git diff application/views/products/detail.php git commit -m 'product detail' application/views/products/detail.php #提交单个文件 git add -A #添加所有未加入版本控件的文件 git stash #取消本地修改。新加的文件还在,但所有的修改都会抹去。 git checkout xxxxx(文件名) #取消对某文件的修改。 git branch #查看当前所有的分支 git checkout branchname #切换分支
github Contributions Calendar不记录的问题
右键 settings -> Git -> User Info 改邮件名,与github帐户一致就好了。
Install git on CentOS
I wanted to put git on one of my CentOS 5.5 servers. Following the links to download the source led to a web page advising to install with yum. But when I tried,
# yum install git Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.usc.edu * extras: mirrors.usc.edu * updates: mirrors.usc.edu Setting up Install Process No package git available. Nothing to do
frustrating! Here’s the solution, add the webtatic repository first:
# Add the repository rpm -Uvh http://repo.webtatic.com/yum/centos/5/latest.rpm # Install the latest version of git yum install --enablerepo=webtatic git-all
a lot of dependencies were installed and updated. I didn’t need the workaround mentioned, but in case someone else might: To work around Missing Dependency: perl(Git) errors:
yum install --enablerepo=webtatic --disableexcludes=main git-all
git安装
wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz tar xzvf git-latest.tar.gz cd git-{date} ./configure make && make install
- 安装错误处理
git: error while loading shared libraries: libiconv.so.2:
这是由于无法加载libiconv.so.2库文件。解决方法:
echo "/usr/local/lib" >> /etc/ld.so.conf /sbin/ldconfig