git bash【初级入门篇】
最近公司打算使用git代替之前的svn版本控制工具,趁此机会打算好好学学git,这个号称当今世界最牛的分布式版本控制工具。
一、【git和svn的主要区别】
1、去中心化 svn以及微软的TFS均采用中心服务器架构,即所有的提交、获取都需要与中心服务器交互。如果开发人数较多会导致中心服务器流量压力大,并且一旦中心服务器挂掉(之前公司使用TFS中心服务器硬盘坏掉),所有的提交记录、稳定版本代码等均存在丢失的风险。而git采取分布式架构,即所有开发者服务器上均存在完整的本地仓库,则不存在这些问题。
2、本地独立使用 使用git可以进行本地提交/撤销,即没有中心服务器一样可以进行完整的版本控制;而svn则必须存在可用的中心服务器才能使用。
3、集成式提交 刚接触git时可能对git add命令有些难以理解,因为使用svn时并没有这一中间环节,每次进行提交时都必须对修改的文档进行add操作会觉得麻烦。但使用习惯之后便会由心的接受这一步骤,因为它有许多的好处。当我们使用svn进行大功能开发时,每完成一个单独的小模块时都会很想提交,但若提交到服务器则可能会影响别的开发人员,因为该功能的开发并未完成,此时svn则无法对我们本地正在开发的代码进行有效的控制。而使用git则可以每完成一个小步骤,就进行add提交到暂存区,并随时可以在此基础上进行撤销等操作;通过集成这样的细粒度暂存区提交,让我们对本地仓库进行真正提交时有更好的备注说明,以便后期对版本历史进行追踪。
4、便捷的分布式开发 使用git后你会发现原来在公司和在宿舍一样开发。特别对于一些工作之余开发的个人小项目,既会在公司进行开发,亦可能在宿舍进行修改,使用git可以进行方便同步的分布式开发,即使偶尔没有网络。同时,使用如github/oschina这样的免费代码托管网站会使这一过程变得简单自然。
5、不同存储区域 git不同于svn将所有的版本数据都放在中心服务器【远程仓库】,而在本地也存在所有提交的版本数据【本地仓库】,并且还存在一个【暂存区】版本存储区域,它可以在未正式提交到【本地仓库】时,暂存下我们当前版本的修改【工作区的修改】。
二、【msysgit (git for windows)的安装】
通过http://msysgit.github.io/获取最新版本的git安装包,其自带git bash命令式交互与简单的GUI交互界面。下载后傻瓜式安装,根据提示进行选择性安装,若不习惯使用msysgit自带的GUI,可以选择不加入右键菜单。习惯windows交互界面的可自行安装source tree,通用的git客户端界面管理工具。
三、【git bash基础命令】
安装好msysgit后,使用window自带资源文件管理器进入需要进行版本控制的目录,就可以正式开始使用git对咱们的项目进行版本控制了。下面按照一般使用顺序介绍git bash日常使用中会用到一些命令:
- git config --global user.name "your name" 设置全局提交代码人的名称
- git config --global user.email "your email" 设置全局提交代码人的邮件地址
- git init 将当前目录初始化为git仓库 (成功初始化git仓库后会在当前目录生成.git隐藏文件夹,里面存放了版本数据以及各种git配置数据,并会将当前目录、所属子目录纳入版本控制范围)
- git status 查看当前git仓库代码/文件的状态,在每次提交时都可以使用该命令查看修改状态
- git add . 添加当前目录所有文件到暂存区 (暂时忽略已添加的多余的文件)
- git commit -m "提交说明" 提交到本地仓库的备注,以便后期进行版本追踪
到此为止,第一次初始化git仓库并向其提交一次修改就结束了。当然这只是一个顺利的开始,但我们在实际工作中可能会遇到更多的问题,比如撤销、比较、推送、获取等,在此就不能根据顺序一一介绍了。常用的操作命令请参见附录。
四、【git bash使用代码比较/合并工具Beyond Compare】
在git日常使用中,我们难免会在提交前、审核代码时,比较本次提交代码的具体修改。使用git diff命令只能在当前命令窗口查看,并不能很好的体现代码的具体修改。而相信使用过文本比较工具如 Beyond Compare的童鞋都会更想使用友好的第三方专业文本比较工具来进行这项工作。
下面简单介绍如何配置git使用Beyond Compare 4来进行代码比较与合并,其中Beyond Compare 4的路径为默认安装路径:
在配置了git全局代码提交人名称之后,git会自动将其配置存放在当【系统前用户目录】下的.gitconfig文件中,而我们只需要打开这个文件,并在其中追加文本:
[diff] tool = bc4
[difftool] prompt = false
[difftool "bc4"]
cmd = "\"c:/program files (x86)/beyond compare 4/bcomp.exe\" \"$LOCAL\" \"$REMOTE\""
[merge] tool = bc
[mergetool] prompt = false
[mergetool "bc4"]
cmd = "\"c:/program files (x86)/beyond compare 4/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\""
现在,我们便可以在提交代码前,使用命令git difftool来对工作区和暂存区的代码进行友好的比较了。
由于时间关系,本文先介绍到此,若有机会将后续将分享使用git进行团队开发中的一些问题与解决方案
五、【附录】常用git命令
初始化:
git clone 远端仓库地址 (克隆远端项目)
git init (将当前路径设为git仓库)
git config --global core.excludesfile "file" (配置全局忽略文件)
git config -l (查看全局配置)
提交修改到暂存区:
git add . (将当前路径所有文档添加到暂存区, 初始化仓库时使用)
git add -A (推荐使用, 将所有新增、修改和删除的进行标记)
撤销暂存区修改
git reset <HEAD> fileName (丢弃[暂存区]的修改)
git reset . 取消所有add文件(丢弃暂存区的修改)
git reset --hard commit_id
撤销工作区修改
git checkout -- file (丢弃[工作区]的修改)
git checkout . 撤销所有工作区修改
删除暂存区文件
git rm --cached <file> add之后, 取消add部分文件
比较(使用比较工具)
git difftool 比较当前工作区与暂存区之间的区别
git difftool <版本号1> <版本号2> <file> 比较文档不同版本号
查看历史
git log <file> 查看某文档的历史版本(之后按end光标跳到最后,s键生成log记录文档,q退出)
分支操作:
git branch 分支名 (创建分支)
git checkout 分支名 (切换到分支)
git checkout -b "name" 创建并切换至分支
其他
git push 远端名 分支名 (将本地当前分支推送到远端)
git pull --rebase origin master(将本地origin/master同步到最新)
git bash【初级入门篇】的更多相关文章
- git的使用(入门篇)
1.Git 的安装 Window 下的安装 从 http://git-scm.com/download 上下载window版的客户端,然后一直下一步下一步安装git即可,请注意,如果你不熟悉每个选项的 ...
- SpringBoot从零单排 ------初级入门篇
有人说SSM已死,未来是SpringBoot和SpringCloud的天下,这个观点可能有点极端,但不可否认的是已经越来越多的公司开始使用SpringBoot.所以我将平时学习SpringBoot的内 ...
- ADO数据库编程详解(C++)----初级入门篇
一.概述 ADO即Microsoft ActiveXData Object,是Microsoft继ODBC之后,基于OLE DB技术的一种数据库操作技术,使您能够编写通过 OLE DB提供者对在数据库 ...
- Linux入门篇(六)——Shell(二)
这一系列的Linux入门都是本人在<鸟哥的Linux私房菜>的基础上总结的基本内容,主要是记录下自己的学习过程,也方便大家简要的了解 Linux Distribution是Ubuntu而不 ...
- .NET Core实战项目之CMS 第四章 入门篇-Git的快速入门及实战演练
写在前面 上篇文章我带着大家通过分析了一遍ASP.NET Core的源码了解了它的启动过程,然后又带着大家熟悉了一遍配置文件的加载方式,最后引出了依赖注入以及控制反转的概念!如果大家把前面几张都理解了 ...
- 版本控制工具Git工具快速入门-Windows篇
版本控制工具Git工具快速入门-Windows篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近在学习Golang语言,之前的开发环境在linux上开发的,后来由于办公用的是w ...
- SpringCloud实战之初级入门(三)— spring cloud config搭建git配置中心
目录 1.环境介绍 2.配置中心 2.1 创建工程 2.2 修改配置文件 2.3 在github中加入配置文件 2.3 修改启动文件 3. 访问配置中心 1.环境介绍 上一篇文章中,我们介绍了如何利用 ...
- shell脚本从入门到精通(初级)之入门篇
写在开头 本文是阅读<Linux命令行与shell脚本编程大全>时的一些笔记,主要是shell脚本的一些基本语法, 还有很多细节和高级内容没有写到. 笔者也是shell script菜鸟, ...
- Linux入门篇(四)——Vim的使用与Bash
这一系列的Linux入门都是本人在<鸟哥的Linux私房菜>的基础上总结的基本内容,主要是记录下自己的学习过程,也方便大家简要的了解 Linux Distribution是Ubuntu而不 ...
随机推荐
- EnumWindows 使用
转载自csdn:http://blog.csdn.net/hairi/article/details/548064 EnumWindows 用来列举屏幕上所有顶层窗口. MSDN原话: The E ...
- DataList分页-增加自动编号列
<asp:DataList ID="dl_XUDAXIA" runat="server"> <HeaderTemplate> <t ...
- 线程池ThreadPoolExecutor使用简介
一.简介 线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为: ThreadPoolExecutor(int corePoolSize, int ...
- Masonry等比缩放
第一种: CGFloat width = CGRectGetWidth([[UIScreen mainScreen] bounds]); CGFloat aspectRatio = 1 ...
- WPF 启动初始界面
不经意间发现了wpf的这个小玩意,感觉蛮有意思的.我在项目中添加了一张图片 如图: wpf-1.JPG(10.73 K) 2010-6-6 17:04:47 然后再这张图片的属性中设置它的生成操作为S ...
- web常用正则表达式
1. 平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用: 2. "^\d+$" //非负整数(正整数 + 0) 3. "^[0-9]*[1-9] ...
- centos下的lnmp环境搭建
1.配置centos的第三方yum源,因为原始的yum是无法安装nginx的 wget http://www.atomicorp.com/installers/atomic 下载atomic yum ...
- 使用python实现HMM
一直想用隐马可夫模型做图像识别,但是python的scikit-learn组件包的hmm module已经不再支持了,需要安装hmmlearn的组件,不过hmmlearn的多项式hmm每次出来的结果都 ...
- JSON字符串序列化与反序列化浅试
一.添加引用(using Newtonsoft.Json.Linq;) 二. 1.生成json字符串源码 List<string> list = new List<string> ...
- Java客户端协议处理框架简介
无论FTP客户程序,还是HTTP客户程序,或是其他基于特定应用层协议的客户程序,在与远程服务器通信时,都需要建立与远程服务器的连接,然后发送和接收与协议相符的数据.客户程序还需要对服务器发送的数据进行 ...