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 基础命令
- git status
- git clone
- git add
- git commit
- git push
- git checkout
- 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初探
- 394