“Git”的版本间的差异

来自tomtalk
跳转至: 导航搜索
1 起步
Tom讨论 | 贡献
2 基础
第42行: 第42行:
  
 
工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。
 
工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。
 +
 +
===3 分支===
 +
 +
接下来,我们将学习 Git 的必杀技特性:分支模型。
  
 
==《Pro Git》网页版==
 
==《Pro Git》网页版==

2016年12月1日 (四) 03:58的版本

Git详解

http://www.open-open.com/lib/view/open1328069609436.html

1 起步

关于版本控制
  • 本地版本控制系统
  • 集中化的版本控制系统
  • 分布式版本控制系统
Git历史

1991-2002年间:绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上。

2002-2005年:整个项目组开始使用用分布式版本控制系统BitKeeper来管理和维护代码。

2005年:BitKeeper不再免费使用了。迫使Linux开源社区开发一套属于自己的版本控制系统。他们对新的系统制订了若干目标:

  • 速度
  • 简单的设计
  • 对非线性开发模式的强力支持(允许上千个并行开发的分支)
  • 完全分布式
  • 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
Git 基础
  • 直接记录快照,而非差异比较

Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异。

  • 近乎所有操作都是本地执行
  • 时刻保持数据完整性

Git使用SHA-1算法计算数据的校验和,通过对文件的内容或目录的结构计算出一个SHA-1哈希值,作为指纹字符串。 这项特性作为Git的设计哲学,建在整体架构的最底层。所以如果文件在传输时变得不完整,或者磁盘损坏导致文件数据缺失,Git都能立即察觉。

  • 多数操作仅添加数据
  • 文件的三种状态:committed,modified和staged。

2 基础

工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。

3 分支

接下来,我们将学习 Git 的必杀技特性:分支模型。

《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支持大小写敏感

  1. 在新建代码文件时,不注意把文件名应该小小写搞错了
  2. 文件已经push到远程了
  3. 在windows下面将文件名字改为全小写

改好后,在Git中没有任何反应,使用git status时,如果遇到下面情况,说明GIT大小写不敏感, 如何解决Git的大小不敏感问题呢?

  1. 设置Git大小写敏感 ignorecase = false
  2. 先删除文件,再添加进去
  3. 使用git的rename命令

.config

user]
	name = tecshuttle
	email = tecshuttle@gmail.com
[core]
	autocrlf = true
        ignorecase = false
[credential]    
        helper = store

TortoiseGit保存用户名密码的方法

  1. Windows中添加一个HOME环境变量,值为%USERPROFILE%
  2. 在“开始>运行”中打开%Home%,新建一个名为“_netrc”的文件
  3. 用记事本打开_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

Linux的XZ压缩

http://blog.csdn.net/wendaotaoa/article/details/8147496