• Git安装使用手记


    这篇主要是记录我在 Windows 平台安装 Git 的过程和git的简单使用。

    先描述一下安装的需求:

    · 用户端和服务器端的操作系统都是 Windows。

    · 用户端要能透过 HTTP 的方式存取版本库。

    · 无论是取出档案还是送交档案,都需要验证身分(输入账号密码)。

    底下是安装步骤:

    Step 1: 安装 Git for Windows

    在 Windows 环境使用 Git,可以用 msysgit (Git for Windows),我安装的版本是 v1.7.4。装好之后,程序集里面会多出一个选单:Git,里面有两个程序:Git GUI 和 Git Bash。前者是图形操作界面,后者是命令列视窗。Git 的预设安装目录是c:Program FilesGit。

    由于我要让用户端可透过 HTTP 协定来存取版本库,因此还要把 Git 安装目录下的 binlibiconv2.dll 复制到安装目录下的libexecgit-core 底下。少了这个动作,将来透过 HTTP 存取版本库时,就会出现 HTTP 500 Internal Server Error 的讯息。如下图所示:

    Step 2: 安装 Apache HTTP Server

    欲提供 HTTP 的存取方式,可以利用Apache Http Server。我安装的版本是 Apache 2.2.19(包含 OpenSSL)。

    安装好 Apache 之后,修改 httpd.conf,令它使用 8080 port,以免和 IIS 抢 80 port。

    接下来,一样是修改 httpd.conf。找到 <directory> 标签,确认其设定如下:

    <directory />

    Options FollowSymLinks

    AllowOverride None

    Order deny,allow

    Allow from all

    </directory>

    接着在 httpd.conf 的最后面加入以下文字:

    #Set this to the root folder containing your Git repositories.

    # Git 你的版本库放在哪里

    SetEnv GIT_PROJECT_ROOT D:/GitRepos

    # Set this to export all projects by default (by default,

    # git will only publish those repositories that contain a

    # file named “git-daemon-export-ok”

    # 该目录下的所有版本库都可以透过 http(s) 的方式存取

    SetEnv GIT_HTTP_EXPORT_ALL

    # Route specific URLS matching this regular expression to the git http server.

    # 令 Apache 把 Git 相关 URL 导向给 Git 的 http 处理程序

    ScriptAliasMatch 

    “(?x)^/(.*/(HEAD | 

    info/refs | 

    objects/(info/[^/]+ | 

    [0-9a-f]{2}/[0-9a-f]{38} | 

    pack/pack-[0-9a-f]{40}.(pack|idx)) | 

    git-(upload|receive)-pack))$” 

    “C:/Program Files/git/libexec/git-core/git-http-backend.exe/$1″

    <Location />

    AuthType Basic

    AuthName ”GIT Repository”

    AuthUserFile ”D:/GitRepos/htpasswd”

    Require valid-user

    </Location>

    其中第一道指令是告诉 Git 你的版本库放在哪里,第二道指令表示该目录下的所有版本库都可以透过 http(s) 的方式存取。第三道指令则是令 Apache 把 Git 相关 URL 导向给 Git 的 http 处理程序。注意:如果你的 Windows 系统是 64 位,里面的C:/Program Files/…. 就要改一下。最后的 <Location> 区段设定了虚拟根路径 “/” 的验证规则,D:/GitRepos/htpassword 是账号密码文件。

    完成上述修改之后,重启 Apache HTTP 服务。

    Note: 如果你希望将来透过远端存取版本库时,一律使用 http://my-server/git/* 开头的 URL,则可将 ScriptAliasMatch 指令改为 “(?x)^/git/(.*/(HEAD |  …….”

    Step 3: 建立版本储存库

    这里先建立一个测试用的版本库,以确认用户端可以透过 HTTP 协定取出档案。步骤如下:

    1 开启 Git Bash 命令列视窗:开始 > 程序 > Git > Git Bash。

    2 输入以下命令,以建立一个空的版本库(‘$’ 符号是提示字符,不用输入):
    $ cd D:/GitRepos
    $ git init MyProject

    参考下图:

    此范例的 git init 命令会在 MyProject 目录下建立一个名为「.git」的隐藏目录,Git 用来管理版本所需的控制档案全都放在这里。MyProject 这个目录本身则是工作目录,你可以在此目录下加入档案或子目录。

    Note: 在初次建立一个可让多人共享的版本库时,应该要使用 git init –bare 命令。加上 –bare 的参数,表示要建立「单纯的」版本库,也就是不含任何工作复本(working copy)档案,而只包含版本控制相关的档案。

    Note: 版本库的根目录(这里是 D:GitRepos)之下的第一层子目录不必一定要建立成版本库。我们也可以在其下建立单纯的子目录,然后在各个子目录底下建立版本库。例如:

    D:GitRepos

    +– Projects

    +– PrjA (版本库)

    +– PrjB (版本库)

    +– Notes

    +– DotNet (版本库)

    这样的话,以后我们就可以用类似「http://my-server/Projects/PrjA」的网址来存取版本库。

    Step 4: 取出版本库

    比较正确的说法,是把版本库复制(clone)一份回自己家里(本机)。一样开启 Git Bash 视窗,切换到你打算存放本机版本库的目录,然后使用 git clone 把档案库拉回来。指令如下:

    $ cd d:/Work

    $ git clone http://localhost:8080/MyProject

    接着应该会要求你输入账号和密码,若输入正确,便可将本库取回。参考下图:

    使用 git clone 命令时,网址也可以包含使用者账户名称,例如:

    $ git clone http://michael@localhost:8080/MyProject

    如果欲复制的远端版本库不是空的,Git 会先压缩档案再传送,而且在荧幕上显示压缩的进度,如下图:

    下一步

    后续的作业,就是在本机的工作目录下进行日常的档案修改与版本提交程序了。

    Git 基础作业流程

    1 建立一个共享的版本库。

    2 将远端主机上的版本库复制一份至本机。

    3 修改本机的工作复本,然后提交。

    4 将提交的档案推送至远端主机的版本库。

    以下是范例:

    1. 建立一个共享的版本库

    cd d:/GitRepos/Projects/MyProjectA

    git init –bare
    2. 将远端主机上的版本库复制一份至本机

    git clone http://my-server:8080/Projects/MyProjectA

    如果你的 Git 服务器支援 https:// 协定,则复制版本库的指令会类似这样:

    git clone https://my-server/Projects/MyProjectA

    若以 https:// 协定复制版本库时出现错误:

    error: SSL certificate problem, verify that the CA cert is OK. Details:

    error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify faile

    d while accessing https://localhost/Projects/test/info/refs

    fatal: HTTP request failed
    可尝试以下列指令解决:

    git config –global http.sslverify  false
    此外,你也可以在复制时直接指定账号密码,例如:

    git clone https://michael:guesswhat@my-server/Projects/MyProjectA
    如果这个「远端主机」就是你目前工作的本机,即要在同一台机器上复制出另一个版本库,则可以用 file:// 。例如:

    git clone file://d:/GitRepos/Projects/MyProjectA
    没有加 file:// 或者写 file:///(三个斜线)也可以。

    3. 修改本机的工作复本,然后提交

    git add .

    git commit -m ”提交时的说明文字“

    4. 将提交的档案推送至远端主机的版本库

    git push origin master

    其中的 push 代表要将变更推送至远端服务器;origin 代表此 local 版本库在远端服务器的来源,你可以从 local 版本库的.gitconfig 档案中找到这个远端的 “origin”;最后的参数 master 则代表 master 分支。

    所以上述指令的意思,以比较精确的解释来说,就是:将本机的 master 分支的所有变更推送至远端主机的 master 分支。

    如果没有指定 master 分支,只写这样:

    git push origin

    则表示要将本机的所有分支的变更推送至远端主机的对应分支。

    若要将本机的变更推送至远端版本库的其他分支,例如 feature101,就可以输入指令:

    git push origin feature101
    其他开发人员如果要取得最新的档案,可以在自己的 local 版本库的目录之下执行 git pull 命令。

    以上大概就是最简单、最基础的 git 作业流程。

    乐于分享
  • 相关阅读:
    安卓获取双IMEI
    NodeJS异步、同步 创建多层文件夹
    Winfrom 控件名称缩写
    Unobtrusive Ajax
    ID 为 17608的进程当前未运行
    欢迎
    路由
    VS快捷键
    Test
    并查集与带权并查集---由浅入深
  • 原文地址:https://www.cnblogs.com/aersliing/p/4214631.html
Copyright © 2020-2023  润新知