Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。现在很多的项目都使用git来做版本控制管理,比如googled 开源项目android系统等
先从整体流程上对git有一个整体认识,上图:
如图所示,git有四个工作区,工作区,暂存区,本地仓库,远程仓库;
git config:
git config --global user.name <name> #设置提交者名字
git config --global user.email <email> #设置提交者邮箱
git config --list #列出已有的配置信息
克隆版本库到本地并初始化:
git clone <url> #克隆远程版本库
git init #初始化本地版本库
修改提交代码:
git status #查看当前仓库修改的文件
git diff . #查看文件修改后的差异 添加到暂存区则查看不了,可加--stage查看
git Add .#添加改动的文件到暂存区
git Add file #添加指定的文件 多个文件用逗号隔开
git commit #提交暂存区的文件到本地仓库并生成commitId
git commit --amend #追加修改的文件到最后一次提交
查看提交记录:
git log #查看当前仓库提交历史
git log -p <file> #查看指定文件的提交历史
git blame <file> #显示某个文件每行的修改记录和修改人
git log <branch> #查看某分支历史纪录
git log --all #查看所有分支历史纪录
git show commitId#查看某个提交的所有信息
也可以使用gitk工具 GUI工具
撤销操作:
git reset HEAD^2 --hard#撤销本地文件提交 2表示撤销二个提交
git rest commitId #撤销到某个commited提交 文件修改还保留
git reset commitId -hard #撤销到某个commited提交 文件修改不保留
git checkout .#撤销当前路径下未提交的改动
git checkout HEAD <file1> <file2> #撤消指定的未提交文件的修改内容
git checkout HEAD. #撤消所有文件
git revert <commit> #撤消指定的提交
分支管理:
git branch -a #显示所有本地分支
git checkout <branch/tagname> #切换分支或标签
git branch <new-branch> #新建分支
git branch -d <branch> #删除本地分支
git tag -a #列出本地所有标签
git tag <tagname> #基于最新提交创建标签
git tag -d <tagname> #删除标签
git push origin --delete <branchName>#删除一个远程分支
远程操作:
git remote -v #查看远程版本库信息
git fetch <remote> #从远程仓库获取代码
git pull <remote> <branch> #从远程仓库拉取代码并合并
git push <远程主机名> <本地分支名> <远程分支名>#推送本地分支到远程分支,如果远程分支被省略则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建
git push origin master:refs/for/master#origin是远程主机名 refs/for 的意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge 而refs/heads不需要
git push --tags #上传所有标签