一种常见的版本控制工具
获取
克隆仓库
git支持以ssh或者http的方式来标识远程仓库
git clone git@github.com:username/project.gitgit clone https://github.com/username/projectgit clone git@github.com:username/project.git ~/projects/path # 将远程仓库克隆到本地指定目录
以上两条命令作用相同,均是将github上的仓库克隆到本地
拉取远程仓库
git pull # 拉取远程仓库的更新,并与本地修改合并git fetch --all # 获取最新代码到本地,不进行合并操作git reset --hard origin/master # 把HEAD指向最新的版本
在拉取更新时,若直接执行git pull操作,则会将远程更新与本地更新合并,此时本地文件将出现待提交状态,即使本地并未修改
若仅仅想拉取远程修改并覆盖更新本地的文件,需执行以上fetch及reset命令暂存
在git中,可通过stash子命令将本地修改暂存起来,并在合适时取出来并合并。
假如项目中遇到类似这种情况:当前本地正处于主分支上开发,功能做了一半,尚未提交修改
被告知线上稳定分支存在bug,急需修复
此时便可通过git stash命令将本地修改移至暂存区,同时本地切换至稳定分支进行修改bug,并进行提交等操作。
完成后再切换回主分支,同时通过stash pop或stash apply命令将之前暂存的修改取出来,便可继续之前的开发工作。暂存当前修改
每次暂存都会在暂存区中产生一条暂存记录
git stash
查看暂存列表
列表中每条暂存记录会有一个编号,类似于stash@{x}这种格式
git stash list
取出暂存记录
stash pop 命令取出暂存记录,与当前分支合并,同时该记录会从暂存列表中删除
stash apply 作用与stash pop,但取出后不会将记录删除,所以可以多次执行git stash pop stash@{x}git stash apply stash@{x}
删除暂存记录
git stash drop stash@{0}
提交
git提交需要两步操作,首先将修改commit到本地仓库,再将本地的提交push到远程仓库,之后才可被其它人下载到。
查看本地仓库状态
git status
status子命令显示当前本地仓库的状态。未提交、未加入版本控制、已删除、版本冲突等可通过该命令查看。
将本地修改加入待提交列表
git add . # 将所有本地修改加入版本控制git add abc.txt # 将指定文件的修改加入版本控制
提交本地更改
git commit -m "提交备注"
在commit时仅仅将修改提交的本地仓库,其它人无法获取到,直到执行push操作,将本地仓库的提交推到远程仓库
远程仓库
查看
远程仓库可以通过remote子命令查看,-v参数可以查看远程仓库具体的指向地址。
$ git remoteorigin$ git remote -vorigin git@github.com:username/project.git (fetch)origin git@github.com:username/project.git (push)
删除
通过remote rm 子命令删除远程仓库
$ git remote rm origin # 移除origin远程仓库
添加
使用remote add子命令添加远程仓库,其中origin无特殊意义,是远程仓库在本地的一个助记简称。
$ git remote add origin https://github.com/pnnh/chatcpp.git
修改
使用remote rename子命令修改远程仓库在本地的助记简称。
$ git remote rename origin master # 将origin仓库重命名为master
详情
remote show子命令可以查看远程仓库的详情描述,这些信息包括:
比如查看所有处于跟踪状态中的远端分支,查看运行 git push 时缺省推送的分支是什么,哪些已同步的分支在本地存在,但在远端服务器上已被删除 ,运行 git pull 时将自动合并哪些分支等等。$ git remote show origin
推送本地修改
git push# 只推送本地master分支的提交到origin远程仓库,需要先设置本地分支与远程分支的跟踪关系git push origin master
将修改commit到本地仓库时,无法被其它人下载到,版本还保留在本地。此时可通过push子命令将本地修改推送到远程仓库。