Git配置
设置你的名字和email,这是commit时的签名
git config --global user.name "username"
git config --global user.email "your email address"
获得一个Git仓库
一种从已有的Git仓库中clone(克隆,复制)
一种新建一个仓库,把未进行版本控制的文件进行版本控制
clone一个仓库
为了得到一个项目的拷贝(copy),我们需要知道这个项目仓库的地址(Git URL). Git能在许多协议下使用,所以Git URL可能以ssh://, http(s)://, git://. 有些仓库可以通过不只一种协议来访问。
git clone https://
你就会在本地发现这个克隆的仓库
初始化一个新的仓库
初始化Git仓库
git init
Git基本流程
1.创建或修改文件
2.使用git add命令添加新创建或修改的文件到本地的缓存区(Index)
3.使用git commit命令提交到本地代码库
4.(可选,有的时候并没有可以同步的远端代码库)使用git push命令将本地代码库同步到远端代码库
1.创建或修改文件
在版本库的目录下自行创建。
可以使用git status
查看当前git仓库状态
2.使用git add 加入缓存区
git add filename
或者可以
git add .
此时你现在为commit做好了准备,你可以使用 git diff 命令再加上 --cached 参数,看看缓存区中哪些文件被修改了。进入到git diff --cached界面后需要输入q才可以退出
3.使用git commit提交修改
当所有新建,修改的文件都被添加到了缓存区,我们就要使用git commit提交到本地仓库
git commit -m "注释"
下面命令可以使得没有加到缓存区的修改一起提交 , 但加上-a不会添加新建的文件
git commit -a -m "注释"
git rm
命令删除文件后会自动将已删除文件的信息添加到缓存区
如果我们希望本地仓库关联到远端服务器,我们可以使用git remote
命令
git remote add origin 远程仓库地址
如果本地的仓库连接到远程Git服务器, 可以使用下面命令将本地仓库同步到远程服务器
git push origin master
分支与合并
Git 的分支可以让你在主线(master分支)之外进行代码提交,同时又不会影响代码库主线。分支的作用体现在多人协作开发中,比如一个团队开发软件,你负责独立的一个功能需要一个月的时间来完成,你就可以创建一个分支,只把该功能的代码提交到这个分支,而其他同事仍然可以继续使用主线开发,你每天的提交不会对他们造成任何影响。当你完成功能后,测试通过再把你的功能分支合并到主线。
1.创建分支
git branch newbranchname
可以使用git branch命令来产看当前的分支列表
2.切换分支
git checkout 分知名
可以切换到其他分支
3.合并分支
可以使用git merge
合并分支到主线
git merge -m "注释" branchname
4.删除分支
git branch -d branchname
但是它只能删除那些已经被当前分支的合并的分支,如果要强制删除某个分支的话就用git branch -D
5.撤销一个合并
如果你觉的你合并后的状态是一团糟,你可以使用
git reset --hard HEAD^
回到合并之前的状态
6.快速向前合并
还有一种需要特殊对待的情况,在前面没有提到。通常,一个合并会产生一个合并提交(commit), 把两个父分支里的每一行内容都合并进来。
但是,如果当前的分支和另一个分支没有内容上的差异,就是说当前分支的每一个提交(commit)都已经存在另一个分支里了,git 就会执行一个“快速向前"(fast forward)操作;git 不创建任何新的提交(commit),只是将当前分支指向合并进来的分支。
Git日志
查看日志
git log命令可以显示所有的提交(commit):
git log
如果提交的历史纪录很长,回车会逐步显示,输入q可以推出。
git log有很多选项,可以使用git help log查看。
会时间顺序显示相关的提交commit。
日志统计
如果用--stat选项使用git log,它会显示在每个提交commit中那些文件被修改,添加或删除了多少行内容
git log --stat
格式化日志
你可以按你的要求来格式化日志输出,--pretty参数可以使用诺干个表现格式
online
git log --pretty = oneline
short
git log --pretty = short
你可以用medium , full , fuller, email或raw。如果这些格式不完全符合你的需求,你也可以用--pretty = format参数定义格式
--graph选项可以可视化你的提交图(commit graph),会用ASCLL字符来画出一个很漂亮的提交历史(commit history)线:
git log --graph --pretty = oneline
日志排序
日志记录可以按不同的顺序来显示。如果你要指定一个特定的顺序,可以为git log命令添加顺序参数
按默认情况,提交会按你时间顺序显示,可以指定--topo-order参数,让提交按拓扑顺序来显示(就是子提交)
$ git log --pretty=format:'%h : %s' --topo-order --graph
可以用--reverse参数来你想显示所有提交日志
git config:配置相关信息
git clone:复制仓库
git init:初始化仓库
git add:添加更新内容到索引中
git diff:比较内容
git status:获取当前项目状况
git commit:提交
git branch:分支相关
git checkout:切换分支
git merge:合并分支
git reset:恢复版本
git log:查看日志