zoukankan      html  css  js  c++  java
  • 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一下吧:)

  • 相关阅读:
    OpenJudge 2721 忽略大小写比较字符串大小
    Poj 2586 / OpenJudge 2586 Y2K Accounting Bug
    Poj 2109 / OpenJudge 2109 Power of Cryptography
    Poj 1328 / OpenJudge 1328 Radar Installation
    Poj 2965 The Pilots Brothers' refrigerator
    Poj 2503 / OpenJudge 2503 Babelfish
    Poj 2388 Who's in the Middle
    模板:cin.getline用法
    Poj 3094 Quicksum
    Charles-Mac安装、配置及苹果手机安装证书
  • 原文地址:https://www.cnblogs.com/wntd/p/5881710.html
Copyright © 2011-2022 走看看