Git是一个分布式版本控制系统
安装
Linux(ubuntu: sudo apt-get install git)
Windows(PortableGit)
配置
安装git后设置git:
$git config --global user.name "MyName"
$git config --global user.email "MyEmail@example.com"
使用
创建repository:
$mkdir git_dir
(创建目录)$cd git_dir
$git init
(初始化目录)
- 版本控制系统只能跟踪文本文件内容的改动而无法跟踪二进制文件内容的改动
添加文件test.txt到repository:
$git add test.txt
提交文件到repository:
$git commit -m "notes"
(-m “notes”为提交说明)
查看repository当前状态(未提交内容):
$git status
查看被修改部分内容:
$git diff "file_name"
删除文件:
$git rm "file_name"
$git commit -m "xxxx"
仓库管理
添加远程repository(远程服务器已经有公钥(Windows本地密钥在C:\Users\chenx.ssh目录下)):
$git remote add origin git@github.com:chenxfeng/repository_name.git
推送本地内容到远程repository(master分支):
$git push origin master
(-u: 关联本地分支和远程分支的参数, used at first time)更新本地仓库至最新(在工作目录中获取
且合并 远端的改动): $git pull
从远程repository克隆到本地:
$git clone git@github.com:chenxfeng/repository_name.git
到服务器获取最新的版本历史并将本地主分支指向它(丢弃在本地的所有改动与提交):
$git fecth origin
$git reset --hard origin/master
忽略不想提交的文件:
添加并配置 .gitignore文件
强制添加(被忽略的)文件: -f 参数
暂缺(尚未使用的部分git功能):版本控制、分支管理、标签设置等
分支管理
创建分支branch_x并切换到该分支:
$git checkout -b branch_x
切换到主分支:
$git checkout master
删除分支branch_x:
$git checkout -d branch_x
推送分支branch_x到远程仓库:
$git push origin branch_x
合并其他分支branch_x到当前分支:
$git merge branch_x
git尝试自动合并改动可能会出现冲突(conflcts) : 手动合并冲突,再标记为合并成功($git add "filename"
)查看分支差异:
$git diff <source_branch> <target_branch>
标签设置
创建标签beta-1.0.0:
git tag beta-1.0.0 xxx
xxx是标记的提交ID($git log
获取)的前n位,只需要保证指向唯一