本章学习常用的git指令,git是分布式版本管理的典型代表。在实际的工程项目中通常会有多个工程师在多个场合下工作,因此有必要对工程进行管理。目前开始学习git,为自己的项目管理打下基础。
1,git环境配置
git的安装就不说了,OSX、linux和windows都有对应的安装版本。在安装好git后需要对git环境进行配置,git使用git config工具进行配置,主要有以下三个配置文件:
- /etc/gitconfig文件:存放对系统中所有用户都有效的配置。对应的命令为:git config –system……读写的就是这个文件。
- ~/.gitconfig文件:存放对本地用户有效的配置。对应的命令为:git config –global……读写的就是这个文件。
- 当前项目中的配置文件(项目根目录下的.gitconfig文件):仅针对于当前项目有效。
每一级的配置都会覆盖上一层的配置,也就是说越接近工作项目的配置会越有效。
配置用户信息
git config --global user.name "chr1s"
git config --global user.email "chr1s@csdn.cn"
每次git提交时都会引用这两条信息,说明是谁提交了更新。
配置文本编辑器
git config --global core.editor vim
当git需要用户输入时,会调用配置的文本编辑器
差异分析工具
git config --global merge.tool vimdiff
配置合并冲突时采用的差异分析工具
查看配置信息
git config --list
用户可以查看所有与git相关的配置信息
2, 使用git创建仓库
新建一个仓库
在要创建仓库的目录下执行一下指令,此时目录下会自动生成一个隐藏的.git目录。千万不要手动修改这个目录,维持整个仓库正常工作的文件
git init
查看当前仓库状态
git status
这条指令会查看当前仓库的状态,如果初始化仓库时目录中已经有文件存在,则系统会显示untracked file(s).
如果有文件改动,则可用git diff
查看改动的文件
提交
git commit -m "manifest about your commit"
日志
git log
显示从最近到最远的提交日志
在git中,用HEAD表示当前版本,当前版本的上一个版本用HEAD^表示,当前版本的前10个版本可以用HEAD~10表示。
回退操作
git reset HEAD^
表示回退到当前版本的上一个版本。
git reset --hard version-number
指定滚到具体的版本。
可以使用git reflog
来显示每一次的命令
git checkout -- file
可以丢弃file在工作区的全部修改。
两种情况:
- file自修改后还没有放到暂存区,撤销修改file就会回到和版本库一模一样的状态;
- file已经放到暂存区,又作了修改,撤销修改后file就会回到添加到暂存区后的状态。
git reset HEAD file
可以把暂存区的修改撤销掉,重新放回工作区。
git rm 用于删除一个文件
3,远程仓库
添加远程仓库之前需要有一个远程仓库,以github为例。github默认以ssh进行通信,在添加远程仓库之前,先在github上添加一个ssh-key公钥,具体做法参考ssh通信原理。在github上新建一个工程,使用git remote add origin git@github.com:myname/repoit.git
. origin是为远程仓库起的一个别名。
使用git push -u origin master
将当前版本的master分支推送到远程。-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
使用git clone
指令克隆一个远程仓库。
4,分支管理
git branch branch-name
创建一个分支
git checkout branch-name
切换分支
git checkout -b branch-name
创建新分支并切换过去
git merge branch-name
合并分支到当前分支