git是一个开源的分布式版本控制系统。用于高效敏捷的管理大小项目代码。
什么是分布式和集中式呢:
集中式 : 代码集中管理,需要上传到中央服务器。每次更新都从中央服务器下载。 (svn)
分布式 : 每个节点都保存完整的代码,没有中央服务器。节点之间相互推送下载完成代码共享。 (git)
git的特点:
*git可以管理各种文件,特别是代码项目,多在unix系统中使用
*是分布式管理,不同于集中式,这个git和svn的核心区别
*git可以更好的支持分支,方便多人协同工作
*git分布式代码更安全,有全球唯一的commit版本号
*git是开源的系统
*使用git可以脱网工作,且数据传输速度较快
Git配置:
用git config配置 Git,要做的第一件事就是设置名字和邮箱地址:
一共分层:有系统上的所有用户,有当前用户和当前项目仓库
$ git config --system user.name "zengsf" $ git config --system user.email fengshao@163.com
配置好了,如果要查看配置内容,想要找到相对应的文件的话,它们分别在/etc/gitconfig, ~/.gitconfig, .git/config中,当然也可以利用命令来查看,git config --list
git命令:
git init------初始化仓库,之后会在目录中自动生成.git目录
git status------查看分支状态,默认是在master中工作
git add [file]------文件提交到暂存区,如果用*号是提交所有文件,多个文件是用空格分开
git rm --cached [file]------删除暂存区文件提交记录,用*号表示所有文件
git commit -m "message"------提交暂存区的文件到本地仓库
git log,git log --pretty=oneline,git reflog------都是查看日志,只不过还是有点区别
工作区的命令:
git diff file------查看当前文件和已提交内容的差别
git checkout file------从本地仓库恢复文件,一般是误删之后使用
git mv file dir------将本地文件移动到某个文件夹中
git rm file------将本体文件删除
git checkout --file------丢弃工作区的修改
版本控制命令:
git reset --hard HEAD^------回到上一个版本,如果想要回到前两个版本,就在HEAD后面用两个^^
git reset --hard commit_id------回到指定版本,这里用git reflog配合好使用
标签管理:
git tag v1.0 [-m "message"]------创建一个位v1.0的标签
git tag v1.0 commit_id------指定commit_id打标签
git tag,git show v1.0------前者是列出当前标签,后者是显示标签的具体信息
git tag -d v1.0------删除标签
git reset --hard v1.0------前往到v1.0中的标签版本
临时工作区操作:
git stash------创建保存临时工作区
git stash list------查看保存的工作区
git stash apply stash@{n}------应用哪个工作区
git stash drop stash@{n}------删除指定的工作区
git stash clear------清空临时的工作区
分支操作:
git branch------查看当前分支,注意前面带*号的分支代表当前正在工作的分支
git branch [name]------创建新的分支,注意在创建分支前尽量保持当前分支是干净点,减少冲突发生
git checkout [name]------切换工作分支
git checkout -b [name]------创建并切换新的分支
git merge [name]------将某个分支合并到当前分支
git branch -d [name],git branch -D [name]------删除分支,-D强制删除没有合并的分支