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
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
# 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)?
③ 出现如下提示文字,说明连接成功
二、创建项目等常用操作
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 --help 或 git 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
浙公网安备 33010602011771号