git版本控制 for window安装和命令行使用
Git 安装配置
Windows 平台上安装
在 Windows 平台上安装 Git 同样轻松,有个叫做 msysGit 的项目提供了安装包,可以到 GitHub 的页面上下载 exe 安装文件并运行:
安装包下载地址:https://git-scm.com/download/win
安装完后,就可以打开命令行控制台进行操作:
Git 配置
Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。
这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:
/etc/gitconfig
文件:系统中对所有用户都普遍适用的配置。若使用git config
时用--system
选项,读写的就是这个文件。~/.gitconfig
文件:用户目录下的配置文件只适用于该用户。若使用git config
时用--global
选项,读写的就是这个文件。- 当前项目的 Git 目录中的配置文件(也就是工作目录中的
.git/config
文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以.git/config
里的配置会覆盖/etc/gitconfig
中的同名变量。
在 Windows 系统上,Git 会找寻用户主目录下的 .gitconfig 文件。主目录即 $HOME 变量指定的目录,一般都是 C:\Documents and Settings\$USER。
此外,Git 还会尝试找寻 /etc/gitconfig 文件,只不过看当初 Git 装在什么目录,就以此作为根目录来定位。
(1) 用户名与Email:由于GIt是分布式版本控制系统,在本地上有一个版本库,我们可以设置自己的用户名与联系方式:
代码 ken@Linux:~/project$ git config --global user.name "rock"
ken@Linux:~/project$ git config --global user.email "rock@163.com"
ken@Linux:~/project$ git config --global --list
user.name=rock
user.email=rock@163.com
其中,--global指明user.name, user.email是全局变量。所谓全局变量,就是在你的PC上任何版本库这些变量都是有效的。
user.name, user.email分别表示用户名与邮箱。我们可以通过--list列举出我们已经设置过的内容。需要说明的是,user.name,
user.email是必须设置的,以后才知道是谁修改了项目。实际上git可设置的选项超过130个,只是大部分我们是不常用的。
(2)Git输出颜色:如果你想git反馈的信息中以不同颜色代表不同类型内容,那么可以设置颜色为"always"/'auto':
ken@Linux:~/project$ git config --global color.ui "always"
ken@Linux:~/project$ git config --global --list
user.name=ken
user.email=ken@gmail.com
color.ui=always
(3)git help:git有着非常丰富的用户手册,只要在命令行上敲入:
git help <comand>
当然,前提是要安装好git-doc。也可以在线浏览:http://www.kernel.org/pub/software/scm/git/docs/
创建版本库
接下来我们可以开始学习如何用git来管理我们的项目了。
第一步,我们必须在本地创建一个版本库,即:.git目录。创建版本库很简单,用Git 提供的git init命令就可以创建了:
rock@Linux:~$ mkdir project
rock@Linux:~$ cd project/
rock@Linux:~/project$ git init
Initialized empty Git repository in /home/ken/project/.git/
上面的操作我们先创建了project目录,你的项目文件都存放在这个目录下。接着在目录执行:git init。OK。很简单,这时候会在/project/目录下生成一个.git目录,ls -a就可以看到。切换进去该目录,会看到一些文件和目录,主要用来存放版本库的元数据。
3、添加和提交记录
假设我们的项目只有一个C文件,这里用经典的hello world作为例子:
添加文件到库
提交保存到库
然后修改main.m文件内容
查看修改的文件:
可以看到main.m文件显示红色的modified为修改状态。
两次添加并提交保存
查看是否提交成功:
我们已经又提交了一次,为了查看是否提交成功,可以用git log -1。最后面是数字'1',不是字母'l'。数字1表示我要查看最近的一次提交,如果不加上这个参数,那么以往的提交就会全部打印出来了。而事实上,我们并不需要查看那么多的记录。
4、分支
分支是维护项目中并行历史记录的方法。分支如何理解?我们打两个比方来说明:
第一种情况:有两个人A和B走在同一条大路上(主分支master)要去同一个目的地C,在这条大路上有一条小路可以绕过去到达目标C,但是沿途风景不一样嘛。A还是直接走大路,而B选择了小路,绕了一个弯最后跟A在C相遇了。A跟B这时候交流自从分别后各自沿途看到了什么,于是他们对对方的见闻都有了了解。
第二种情况:A走在一条大路,中途有一条小路,A不知道这条小路能不能成功通向某一个地方,于是A记录了自己现在的位置,走小路一边走一边做记录沿途的风景,最后得到了一个结果:可以通向(或者不可以)。这时候A如果觉得这次实验他只是想知道结果,过程不重要,那么就扔掉刚才的记录(删除分支),如果他觉得有必要留下记录,那就不扔了,暂且保留(不删除分支)。
其实刚才说的两种情况就是最常用到的两种分支:用来支持不同版本的分支(第一个比喻)和特定功能开发的分支(第二个比喻)。接下里我们准备创建一个分支,看看分支有什么特点:
rock@Linux:~/project$ git branch sub_1 master
这条命令中,第三个参数是新的分支,第四个参数表示父分支,在这里我们的父分支是主分支master。所以这条命令就是在主分支master上创建一条新分支sub_1。我们可以用git branch命令来查看一共有多少个分支已经我们现在所在的分支:
rock@Linux:~/project$ git branch
* master
sub_1
前面的星号表示所在分支,所以我们现在有两个分支,所在的分支是master。
这个时候我们想修改刚才的文件。随便条件一个打印语句:printf("Hello, Git!\n");在打印"Hello, world!"的后面,然后提交:
代码 rock@Linux:~/project$ git commit -a -m "add a print line after print hello world"
[master 97661f6] add a print line after print hello world
1 files changed, 1 insertions(+), 0 deletions(-)
ken@Linux:~/project$ git log -1
注意到commit 前面有个-a参数,这个参数表示提交全部修改过的文件,连add指令也省了。
那么我们如何切换到新的分支上面去呢?很简单,用checkout命令就OK了。
rock@Linux:~/project$ git checkout sub_1
Switched to branch 'sub_1'
切换成功了,如果你现在执行git branch命令,星号应该是在sub_1前面了。这时候你再去看看你的helloworld.c,里面的内容跟刚才修改后的一样吗?
5、发布版本
假如我们要发布项目,定版本号为1.0,那么可以为这个版本打一个标签:
rock@Linux:~/project$ git tag 1.0 sub_1
rock@Linux:~/project$ git tag
1.0
上面第一条指令中,第三个参数是标签,最后一个则是表示打标签的点;接下来呢,我们要做的最后一件事是为发布的版本做打包成一个tar或者zip包。命令git archive可以实现这个功能:
rock@Linux:~/project$ git archive --format=tar \
> --prefix=helloworld-1.0/ 1.0 \
> | gzip > helloworld-1.0.tar.gz
rock@Linux:~/project$ ls
helloworld-1.0.tar.gz helloworld.c
上面的命令相对来说复杂了点。如果你的命令太长,可以用'\'来分行;format参数指定哪种格式输出,也可以是zip;prefix表示发布的包前缀;1.0是指定要对哪个标签打包;最后面就是压缩了,用的是Unix的管道,假如不熟悉的话,baidu一下吧:)
git版本控制 for window安装和命令行使用的更多相关文章
- mac安装GNU命令行工具
mac安装GNU命令行工具 2.添加的repo tap home/dupes brew install coreutils binutils diffutils ed -- ...
- 【Mac】Mac OS X 安装GNU命令行工具
macos的很多用户都是做it相关的人,类unix系统带来了很多方面,尤其是经常和linux打交道的人. 但是作为经常使用linux 命令行的人发现macos中的命令行工具很多都是bsd工具,跟lin ...
- NodeJS 安装cnpm命令行工具
在安装之前,请确保已安装Git和NodeJS. cmd机内命令窗口,输入以下命令: git config --system http.sslcainfo /bin/curl-ca-bundle.crt ...
- 【分布式】ZooKeeper学习之一:安装及命令行使用
ZooKeeper学习之一:安装及命令行使用 一直都想着好好学一学分布式系统,但是这拖延症晚期也是没得治了,所以干脆强迫自己来写一个系列博客,从zk的安装使用.客户端调用.涉及到的分布式原理.选举过程 ...
- Django之win7下安装与命令行工具
Django之win7下安装与命令行工具 下载安装 pip3 install django 注意:自动添加环境变量 测试是否安装成功 1.输入python 2.输入import django 3.输入 ...
- 你使用 Web 平台安装程序命令行工具
你使用 Web 平台安装程序命令行工具 获取的软件由其所有者授权给你.Microsoft 未授予你第三方软件的任何权利.已成功加载主源: https://go.microsoft.com/?linki ...
- IntelliJ IDEA下Git的配置与使用(命令行下)
1. 安装Git并配置好Git 安装与配置参见Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(1)中的2.在本机安装Git与3.1 配置git. 2. 创建远程仓库 在gitee. ...
- Webpack 入门(一):安装 / 打包 / 命令行
一:安装webpack和基本环境搭建 新建一个工作的文件夹(我取的名字叫Webpack) 打开命令行,cd进入该文件夹 //初始化一下npm > E:\work\Webpack>npm i ...
- Sass学习之路:Sass、Compass安装与命令行
导言 CSS不是一门真正意义上的编程语言,很多编程语言理所当然的特性(比如变量),都不被支持.同时再开发模块化的web项目的时候,也要避免相互干扰.为了弥补CSS的这些不足,就产生了CSS预处理器,S ...
随机推荐
- python+NLTK 自然语言学习处理:环境搭建
首先在http://nltk.org/install.html去下载相关的程序.需要用到的有python,numpy,pandas, matplotlib. 当安装好所有的程序之后运行nltk.dow ...
- [leetcode-572-Subtree of Another Tree]
Given two non-empty binary trees s and t, check whether tree t hasexactly the same structure and nod ...
- git的使用[转]
本节内容 github介绍 安装 仓库创建& 提交代码 代码回滚 工作区和暂存区 撤销修改 删除操作 远程仓库 分支管理 多人协作 github使用 忽略特殊文件.gitignore 为什么要 ...
- 【summary】JQuery 相关css、ajax、数据操作函数或方法
总结一下JQuery常用的函数方法,更加系统的整理一下. JQuery遍历的一些函数: 函数 描述 .add() 将元素添加到匹配元素的集合中. .andSelf() 把堆栈中之前的元素集添加到当前集 ...
- DOM编程从入门到忘记
文档对象模型(Document Object Model,DOM)是使用 W3C 定义的 API (Application Program Interface) 来操作 HTML 文档 (此处不局限于 ...
- python中的可变与不可变对象
Python中的可变对象和不可变对象 什么是可变/不可变对象 不可变对象,该对象所指向的内存中的值不能被改变.当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一 ...
- FAT文件系统学习和思考
FAT(File Allocation Table)文件系统 前两天面试,导师说我基础差,要赶紧补起来了.今天晚上看了FAT32文件系统,基本的信息都是百度百科中"FAT文件系统" ...
- 为实体类增加toJSON方法
后期子类继承该基础类即可. package com.lichmama.test; import java.io.Serializable; import java.lang.reflect.Field ...
- Spring事务管理的两种方式
参考文档: http://www.iteye.com/topic/1123347 http://blog.csdn.net/lcj8/article/details/2835432 PS:好像还是tx ...
- Struts2的知识点小总结
strust2是 struts1和webwork的结合 (本质相当于servlet) 核心:拦截器 interceptor action ognl和valuestack 使用struts的准备工作 ...