Git Start

by Chunze.Huang

人生苦短,何不用GIT?

One. Why Git?
Two. 入门
Three. 工具

Four. 实践

five. 总结

一、Why Git?

1. 底层的文件系统

2. 去中心化

3. 社区趋势

1.1 文件系统

        跟SVN不同的是Git 底层文件系统存储的为文件快照,即整个文件内容保存指向快照的索引。

        考虑到性能因素,如果文件内容没有发生任何变化,该文件系统则不会重复保存文件,只是简单地保存文件的链接。

1.2 去中心化

  • 传统cvs/svn等工具容易受网络影响
  • git为分布式代码管理,可支持离线提交代码
  • 除中心仓库 origin(Git 默认远程仓库名称)之外,每一名成员都可以各自负责一个本地仓库

1.3 社区趋势

  • Google Code & Eclipse相关项目都迁移到“全球最大的同性网站”
  • Composer仓库和Sublime Text插件等均使用git维护
  • 好代码都在这里~~~

二、入门

1. 安装

2. 配置

3. 基础命令

Windows

Linux & Mac

yum install git # way 1
apt-get install git-core # for ubuntu

# way 2
yum install gettext curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel -y
yum -y install zlib-devel curl-devel openssl-devel perl cpio expat-devel gettext-devel openssl zlib autoconf tk perl-ExtUtils-MakeMaker
wget https://github.com/git/git/archive/v2.11.0.tar.gz
tar xzvf v2.11.0.tar.gz
cd git-2.11.0
autoconf
./configure
make
sudo make install
  • git-scm: 有cmd支持,及简陋的gui支持
  • TortoiseGit: windows下git gui工具

2.1 install git

~/.gitconfig

[dir]/.git/config

cat .git/config

####################################
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
	ignorecase = true
	precomposeunicode = true
[remote "origin"]
	url = http://code.xxoo.com/test/phplib.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master
[user]
	email = yourmail@mail.com
	name = yourname

2.2 git config

cat ~/.gitconfig

###############################
[user]
	name = your name
	email = yourmail@mail.com
[push]
[http]
	sslVerify = false
[push]
	default = matching
[credential]
	helper = osxkeychain
[core]
	autocrlf = false

git config [--global] [seting=values]...

如果你习惯linux or mac下开发,可以打开terminal执行下面命令

git config --global user.name "your username"
git config --global user.email "your email address"
git config --global core.autocrlf true
git config --global core.safecrlf true

2.3 基础命令

  1. git status
  2. git clone
  3. git add
  4. git commit
  5. git push
  6. git checkout
  7. git mv|rm

三、工具使用

1. 通用工具

2. 其他工具

3.1 通用工具

Windows vs Linux

相同点:都是用 Command-line 来与系统进行交互

不同点:命令基本都不一样

Windows: cmd、PowerShell、Cmder
Linux: Terminal、iTerm

使用CMDER操作

  • 安装好CMDER / GIT-SCM 
  • 设置编码chcp 65001 
  • git config 配置
  • 使用http和ssh方式克隆项目
  • 更改远程仓库地址
  • 提交代码

使用iTerm操作

  • 安装好iTerm
  • git config 配置
  • 使用http和ssh方式克隆项目
  • 更改远程仓库地址
  • 提交代码
cd /www/37/git
mkdir git-learn
cd git-learn
git init
touch 1.php
add 1.php
commit -m 'first commit'
remote add origin https://github.com/boxcore/git-learn.git
push origin master

3.2 其他工具

Linux扩展工具

  •  brew install tig
  • 安装icdiff
  • cat -e|-A 显示隐藏字符
  • vim :set list|nolist

Win扩展工具

  •  mingw
  • openssl
  • winmerge
  • 系统变量设置

四、实战

1. SVN-GIT迁移

2. 解决代码冲突

3. 合并代码

SVN-GIT迁移

  • 使用默认的 git svn 命令
  • 导出svn repo
  • merge svn repo to git repo

代码合并

  • git merge
  • git branch

代码冲突解决

  • git reflog
  • Bullet Two
  • Bullet Three

参考

1. GIT-SCM

2. 码云帮助

3. Coding.net

课前准备

1. GIT-SCM:

https://git-scm.com/downloads

2. cmder (window用户cmd替代工具):

https://github.com/cmderdev/cmder/releases

3. homebrew(Mac用户terminal工具):

https://brew.sh/

4. TortoiseGit(Win用户Git-GUI工具):

https://tortoisegit.org/download/

Git初探

By boxcore

Git初探

  • 389