git简易教程 一看就会
2015-07-02 00:25
281 查看
很久之前知道git,也使用过,但一直挺困惑,打了命令行提交之后总不知处于什么位置,也搞不懂这个可以纯打命令行进行版本控制的软件为什么这么让人着迷,很多高手都用github。这些天重新学习了一下,对git有了更深一层的了解,分享一下,希望可以给新手一些参考,看了就会用,不足之处也请指出。
git是一个神奇的软件,分布式,即使不用github远程仓库,你一样可以在本地进行版本控制,这一点跟svn很不一样。
下面主要对本地的操作讲解一下:
git分为工作区,暂存区(stage area)和提交之后的区域,这里的stage area也是跟svn很不一样的地方:工作区——>暂存区——->提交之后的区域。这个很关键,一定得记住。有了这个概念基础之后,下面来模拟一下整个流程:
如果你是第一次安装git的话,那么首先需要配置一下,
git config –global user.name “your name”
git config –global user.email “emai@example”
配置之后,以后每一次提交都会显示你的名字和邮箱。
下面创建一个仓库,仓库其实就是一个文件夹,把文件夹初始化为仓库:
git init
你也可以:
git init filename 直接创建一个仓库。
当然,还可以从别人的仓库克隆下来:
git clone url
创建完仓库之后呢,你就可以在里面添加文件,开发你的程序,修改你的代码……假设现在仓库里面有文件a.cpp b.java c.py,你可以
git add . #全部add 到 stage
git add a.cpp b.java c.py #单独添加
添加了之后,就要提交,提交了才会有历史记录,
git commit -m “commit message”
到此为止,你已经会用本地git做版本控制啦! 当然,会这些还是不够的,那么下面继续进一步学习:
如果你想查看当前的状态,那么使用
git status
若你想查看工作区与暂存区的差别,使用
git diff
若你想查看暂存区与上一次提交的区别,更新了什么,使用
git diff –cached 或者 git diff –staged
若你git add 之后,想撤回stage area的file,使之unstaged,那么,
git reset file
既然是版本管理器,那么怎么回退之前提交的到工作区呢?使用
git reset –hard HEAD^ ,HEAD表示当前版本,HEAD^表示上一个版本,那么上一千个版本是不是HEAD^^^……一千次呢,当然不是,使用HEAD~1000
当然,这里可以不用HEAD来表示,可以用使用commit id来回滚,commit id怎么查呢?查出日志就可以看到了,
git log
如果你嫌内容太多,可以用
git log –pretty=oneline,这样就是一行显示了,然后取出id值,
git reset commit id即可
你还可以打上一个标签,下次可以回滚到这个标签,
git tag v0 -m “message”
v0是标签名,使用git tag可以查看当前的tag。
如果你想删除工作区及暂存区的文件,使用
git rm file
若你只想删除暂存区的文件,而保留工作区的,那么
git rm –cached file
最后,提交
git commit -m “message” 这样就删除了指定的file了
往往在开发项目的时候,你需要修复一些bug或者开发新功能,但是不想动原来的master分支,那么,你需要创建一个分支,
git branch clean ,clean就是你的新分支了。
如果你想查看所有分支,那么
git branch
如果你想切换分支,使用
git checkout clean
假设现在你已经改好了
那么使用先切换到master,然后
git merge clean 就可以了,当然,有conflict就解决一下再merge
到此为止,基本的本地操作就全都没问题了。
如果你要push到远端仓库,那么,首先你要
git remote add origin
然后再push,使用-u可以让git记住参数,之后直接git push就可以,
git push -u origin master
若你想把远程仓库pull down下来,使用
git pull origin master
pull相当于fetch之后再merge
git fetch origin master
git merge origin/master
这样,就合并分支到本地了。
现在,相信你已经能基本操作git了!
最后,再分享一本git的好书,可以更进一步加深理解
http://git-scm.com/book/zh/v1
git是一个神奇的软件,分布式,即使不用github远程仓库,你一样可以在本地进行版本控制,这一点跟svn很不一样。
下面主要对本地的操作讲解一下:
git分为工作区,暂存区(stage area)和提交之后的区域,这里的stage area也是跟svn很不一样的地方:工作区——>暂存区——->提交之后的区域。这个很关键,一定得记住。有了这个概念基础之后,下面来模拟一下整个流程:
如果你是第一次安装git的话,那么首先需要配置一下,
git config –global user.name “your name”
git config –global user.email “emai@example”
配置之后,以后每一次提交都会显示你的名字和邮箱。
下面创建一个仓库,仓库其实就是一个文件夹,把文件夹初始化为仓库:
git init
你也可以:
git init filename 直接创建一个仓库。
当然,还可以从别人的仓库克隆下来:
git clone url
创建完仓库之后呢,你就可以在里面添加文件,开发你的程序,修改你的代码……假设现在仓库里面有文件a.cpp b.java c.py,你可以
git add . #全部add 到 stage
git add a.cpp b.java c.py #单独添加
添加了之后,就要提交,提交了才会有历史记录,
git commit -m “commit message”
到此为止,你已经会用本地git做版本控制啦! 当然,会这些还是不够的,那么下面继续进一步学习:
如果你想查看当前的状态,那么使用
git status
若你想查看工作区与暂存区的差别,使用
git diff
若你想查看暂存区与上一次提交的区别,更新了什么,使用
git diff –cached 或者 git diff –staged
若你git add 之后,想撤回stage area的file,使之unstaged,那么,
git reset file
既然是版本管理器,那么怎么回退之前提交的到工作区呢?使用
git reset –hard HEAD^ ,HEAD表示当前版本,HEAD^表示上一个版本,那么上一千个版本是不是HEAD^^^……一千次呢,当然不是,使用HEAD~1000
当然,这里可以不用HEAD来表示,可以用使用commit id来回滚,commit id怎么查呢?查出日志就可以看到了,
git log
如果你嫌内容太多,可以用
git log –pretty=oneline,这样就是一行显示了,然后取出id值,
git reset commit id即可
你还可以打上一个标签,下次可以回滚到这个标签,
git tag v0 -m “message”
v0是标签名,使用git tag可以查看当前的tag。
如果你想删除工作区及暂存区的文件,使用
git rm file
若你只想删除暂存区的文件,而保留工作区的,那么
git rm –cached file
最后,提交
git commit -m “message” 这样就删除了指定的file了
往往在开发项目的时候,你需要修复一些bug或者开发新功能,但是不想动原来的master分支,那么,你需要创建一个分支,
git branch clean ,clean就是你的新分支了。
如果你想查看所有分支,那么
git branch
如果你想切换分支,使用
git checkout clean
假设现在你已经改好了
那么使用先切换到master,然后
git merge clean 就可以了,当然,有conflict就解决一下再merge
到此为止,基本的本地操作就全都没问题了。
如果你要push到远端仓库,那么,首先你要
git remote add origin
然后再push,使用-u可以让git记住参数,之后直接git push就可以,
git push -u origin master
若你想把远程仓库pull down下来,使用
git pull origin master
pull相当于fetch之后再merge
git fetch origin master
git merge origin/master
这样,就合并分支到本地了。
现在,相信你已经能基本操作git了!
最后,再分享一本git的好书,可以更进一步加深理解
http://git-scm.com/book/zh/v1
相关文章推荐
- [转载] Java学习之Hessian通信基础
- 通过Span设置TextView中字体的样式、大小
- 黑马程序员-OC语言-@synthesize关键字介绍和使用(听课笔记)
- 2015年7月1日 课设日志
- 2015070110 - java bin下的命令解释
- how-to-install-kippo-an-ssh-honeypot-on-an-ubuntu-cloud-server
- STL中的容器使用比较(string vector list deque set map)
- 想打造一款成功的移动应用?你最需要关注性能指标!
- ubuntu下安装boost环境
- [转载] 基于Dubbo的Hessian协议实现远程调用
- 某会已疯
- Android-Webview支持缩放并隐藏讨厌的缩放控制条
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第七章 类
- 2015070109 - 水杯
- Android Studio创建项目
- Remoting
- [转载] 基于Dubbo框架构建分布式服务
- Java容器:HashMap和HashSet解析
- 从XML文件乱码问题,探寻其背后的原理 (ZHUAN)
- Linux下编译C/C++时,出现/usr/bin/ld: cannot find -l*** 错误的处理