Git 最核心的概念就是工作流
- 工作区是电脑中实际的目录
- 暂存区类似于缓存区域,临时保存你的改动
- 仓库区,分为远程仓库和本地仓库
常用指令
- git status:检查当前文件状态
- git add:把文件添加至仓库
- git commit:把文件提交给仓库
- git diff:查看修改情况
- git log:显示最近到最远的提交日志
- git log --pretty=online 单行显示提交日志版本信息
- git reset:回退到某一个版本
- git remote add origin xxx:连接到某远程仓库
- git pull origin master:将远程仓库中的项目拉下来(与本地合并)
- git push origin master:将本次更改内容更新到远程仓库中
- git fetch -all:拉取远程仓库的分支,并不与本地的合并
- git merge:合并分支
- git branch -d:删除分支
Git 和 SVN 的区别
- Git 是分布式的,SVN 是集中式的
- Git 复杂概念较多,SVN 简单容易上手
- Git 分支廉价,SVN 分支昂贵
Git 冲突回滚
- git merge --ab(git merge --abort),该命令仅仅在合并后导致冲突时才使用,命令将会抛弃合并过程并尝试重建合并前的状态。但是,当合并开始时如果存在未 commit 的文件,命令在某些情况下将无法重现合并前的状态
Git 分支合并(仅部分提交记录)
- git cherry-pick < commitHash >,该命令只会将指定的提交应用于其他分支
Git 对文件换行符的设置
- 不同操作系统,对处理行尾结束符的方法是不同的:
- Windows 下:CRLF(表示句尾使用回车换行两个字符,即"\r\n"换行)
- Unix 下:LF(表示句尾,只使用换行)
- Mac 下:CR(表示只使用回车)
- git config --global core.autocrlf false,关闭对文件换行符的修改,如自动把 CRLF 换成 LF 等
- config --global core.autocrlf true,意味着在任何时候添加(add)文件到 Git 仓库时,Git 都会视为是一个文本文件(text file),并将把 CRLF 变成 LF
- config --global core.autocrlf false,line endings 将不做转换操作,文本文件将保持原来的样子
- config --global core.autocrlf input,添加文件到 Git 仓库时,Git 把 CRLF 变成 LF,当有人 Check 代码时,还是 LF 方式,因此在Windows 操作系统下不要使用这个设置