代码改变世界

Git分布式版本控制系统基本使用介绍

2014-06-08 11:46  hduhans  阅读(195)  评论(0)    收藏  举报

  Git是一个分布式版本控制系统,用来保存工程源代码历史状态,是开源软件版本控制的首选工具。与SVN等传统版本控制想比,Git提出了一个本地存储的概念,即所有代码可以离线提交至本地存储,联网时再提交至GitHub总库,因此Git称得上是分布式处理。此外,Git的项目分支具有机极大的及时性和灵活性,使得开源项目的开发维护变得快速、简单、安全。本文按照官方安装配置,摘记了部分重要的配置步骤,便于日后查询。

 

一、安装和基本配置

1、下载Git安装程序:①官网(http://git-scm.com/downloads) ②网盘(Git-1.9.2-preview20140411 for Windows)  PS:安装各步骤建议使用默认配置

2、配置提交用户信息(运行Git Bash)。

   1) 用户级配置用户名与邮箱

     $ git config --global user.name "hduhans"   --配置提交标记用户名(可自定义)

     $ git config --global user.email "315649920@qq.com"   --配置提交邮箱信息(最好与GitHub账户邮箱一致,不一致配置方法)

   2) Git三种不同级别的配置文件

     ① 系统级/etc/gitconfig或安装目录/etc/gitconfig:对系统中所有用户都适用的配置。配置参数:git config --system

     ② 用户级~/.gitconfig(Windows下一般为C:\Documents and Settings\$USER):只对系统中当前用户适用的配置。配置参数:git config --global

     ③ 项目级./.gitconfig(当前项目路径):只对当前项目适用的配置。无配置参数:git config  

   3) 查看当前配置

     $ git config --list   --查看当前git所有配置,若出现重复项,则为不同级别的配置,低级别配置会覆盖高级别配置

     $ git config user.name   --查看具体变量配置

3、配置与GitHub的连接。

   1) 检查是否已配置ssh-key

     ① $ cd ~/.ssh   --若不存在该目录,说明本机是第一次配置Git

     ② $ ls -al   --查看目录下是否存在文件id_rsa.pub或id_dsa.pub,不存在看步骤2,否则看步骤3

   2) 生成ssh-key、配置passphrase

     ① $ ssh-keygen -t rsa -C "315649920@qq.com"   --生成ssh-key,这里使用GitHub注册邮箱 

         →Enter file in which to save the key(../.ssh/id_rsa):   --使用默认文件名,直接回车

       →Enter passphrase (empty for no passphrase):   --提示输入passphrase,强烈建议使用密码短语,否则每次提交更新需输入GitHub的帐号密码,非常麻烦。

     ② 若配置了密码短语passphrase,则建议配置ssh-agent来保存密码短语,在文件提交时不必每次输入passphrase,Git会自动去ssh-agent获取。自动启动ssh-agent配置,在根目录下新建文件~/.profile或~/.bashrc,并填写以下文件内容,下次打开Git Bash时会提示输入passphrase并保存在~/.ssh/id_rsa文件中,以后每次启动Git Bash无需再次输入passphrase。

# Note: ~/.ssh/environment should not be used, as it
#       already has a different purpose in SSH.

env=~/.ssh/agent.env

# Note: Don't bother checking SSH_AGENT_PID. It's not used
#       by SSH itself, and it might even be incorrect
#       (for example, when using agent-forwarding over SSH).

agent_is_running() {
    if [ "$SSH_AUTH_SOCK" ]; then
        # ssh-add returns:
        #   0 = agent running, has keys
        #   1 = agent running, no keys
        #   2 = agent not running
        # if your keys are not stored in ~/.ssh/id_rsa.pub or ~/.ssh/id_dsa.pub, you'll need
        # to paste the proper path after ssh-add
        ssh-add -l >/dev/null 2>&1 || [ $? -eq 1 ]
    else
        false
    fi
}

agent_has_keys() {
    # if your keys are not stored in ~/.ssh/id_rsa.pub or ~/.ssh/id_dsa.pub, you'll need
    # to paste the proper path after ssh-add
    ssh-add -l >/dev/null 2>&1
}

agent_load_env() {
    . "$env" >/dev/null
}

agent_start() {
    (umask 077; ssh-agent >"$env")
    . "$env" >/dev/null
}

if ! agent_is_running; then
    agent_load_env
fi

# if your keys are not stored in ~/.ssh/id_rsa.pub or ~/.ssh/id_dsa.pub, you'll need
# to paste the proper path after ssh-add
if ! agent_is_running; then
    agent_start
    ssh-add
elif ! agent_has_keys; then
    ssh-add
fi

unset env
View Code

      PS:有关密码短语passphrase的变更、自动开启ssh-agent等官方详细介绍点击此处

   3) 将根目录下的文件~/.ssh/id_rsa.pub中的内容复制到剪贴板。打开GitHub网站并登录,点击右上角"Account setting",左侧菜单栏选择"SSH keys",点击页面右边新增按钮"Add SSH key",填写标题,粘贴剪贴板内容到Key,并保存。

   4) 验证连接是否成功

     ① $ ssh -T git@github.com   --验证是否连接成功

   ② 若出现如下提示文字,输入yes

The authenticity of host 'github.com (207.97.227.239)' can't be established.
# RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
# Are you sure you want to continue connecting (yes/no)?

     ③ 出现如下提示文字,说明连接成功

Hi hduhans! You've successfully authenticated, but GitHub does not provide shell access.

 

二、创建项目等常用操作

1、登录GitHub网站,创建一个新项目,命名为skyland。

   PS:1) 项目https地址:https://github.com/hduhans/skyland.git

    2) 项目SSH地址:git@github.com:hduhans/skyland.git

2、关联本地项目并提交(Git Bash进入本地项目文件路径)。

   1) $ git init   --初始化本地项目,会在项目路径下生成隐藏文件夹.git  

   2) $ git add .   --添加本地项目所有文件也即提交至本地存储,也可以写成git add ./*

   3) $ git commit -m "first commit"    --为本次更新添加描述

   4) $ git remote add origin git@github.com:hduhans/skyland.git   --将GitHub远程项目与本地项目关联,第一次提交这句话非常关键,下一次提交可忽略此语句

   PS:此处orgin可改为其他名称,但下一次提交必须用对应名称。该项目资源保存文件路径:项目/.git/config。

   5) $ git push -u origin master   --将本地存储项目文件提交至GitHub

3、克隆项目  

   1) $ git clone git@github.com:hduhans/skyland.git   --应用SSH协议克隆GitHub上的项目到本地(带skyland文件夹)

   2) $ git clone git://github.com/hduhans/skyland.git   --功能同上,使用协议git://

   3) $ git clone https://github.com/hduhans/skyland   --功能同上,使用协议https://

4、更新项目

   1) $ git fetch origin   --获得远程更新到本地,不会自动merge

       $ git merge origin/master   --把更新的内容合并到本地分支 

   2) $ git pull origin master   --将远程项目文件更新并合并到本地项目,相当于fetch和merge的结果

   PS:若GitHub远程端项目版本与本地项目版本不一致,则无法提交,因此建议每次更新后提交

5、删除文件或文件夹并提交

   1) 删除暂存区与工作目录文件

     $ git rm ./newfile.txt   --删除文件newfile.txt

     $ rm -r ./files   --删除文件夹files

   2) 进删除暂存区域文件,保留工作目录文件

     $ git rm --cached ./newfile.txt   --删除暂存区域对应文件

   PS:删除文件必须要调用git rm,必须删除本地暂存区域中对应文件才可以提交,普通删除文件只能删除项目文件而不能删除本地暂存区域文件。

6、移动文件

   $ git mv file_from file_to   --文件重命名,不要手动在文件夹中修改,必须通过此命令,否则git会找不到原文见

   其实此命令相当于执行如下命令组合:①$ mv file_from file_to ②$git rm file_from ③$ git add file_to。

7、撤销提交操作

   $ git commit --amend [ -m "repeat commit" ]   --覆盖上次提交

8、查看提交历史

   $ git log   --查看项目提交历史,按提交时间逆序列出所有的更新(推出键:q)

   $ git log -p -2   --展开每次提交的内容差异,选择前2次更新

9、远程仓库操作

   $ git remote -v   --查看当前项目远程连接仓库地址

   $ git remote show origin   --查看远程仓库信息 

   $ git remote rename old_name new_name   --重命名远程仓库在本地的名称

   $ git remote rm origin   --移除远程仓库

10、常用配置

   $ git config --global alias.ci commit   --取ci为commit的别名,以后提交适用git ci 

11、其他常用命令

   $ git status   --查看当前项目所有文件状态,会自动将本地存储与本地项目文件比较,红色表示文件未更新至本地存储,调用git add或git rm更新

   $ git --helpgit config --help   --查看当前命令帮助

   $ git diff   --查看当前工作目录文件与暂存区域对应文件的差异

   $ git diff --cached 或 $ git diff --staged   --查看暂存起来的文件和上次提交时的快照之间的差异

   $ git commit -a -m "commit description"   ---跳过暂存区域直接提交(添加参数-a

   $ git reset HEAD newfile.txt   --取消对文件暂存状态

   $ git checkout -- newfile.txt   --取消文件的修改,将文件恢复到修改前的版本 

12、本地保存账号密码

   方法一:

     cd $HOME

     touch .git-credentials

     vi .git-credentials

     编辑内容:https://{username}:{password}@github.com

   方法二:

    cd $HOME

    vi .gitconfig

    添加内容:

[credential]    
    helper = store