Fork me on GitHub
25 September 2017

目录:

在多人协作开发中CVS的重要性不言而喻。Git是近年来风头正盛的分布式代码关系系统。本文简要描述如何快速的使用Git和一些简单的Git操作。

1. 安装

1.1 Windows

通过git-scm下载。

1.2 macOS

brew install git

如果没有安装Homebrew,可到git-scm下载,对于macOS/iOS 开发者直接安装Xcode即可。

1.3 Linux

# Debian/Ubuntu
sudo apt install git

# RedHat/Centos
sudo npm install git # 或是dnf

2. 操作

安装成功后,打开Terminal,输入git,会打印如下信息:

usage: git [--version] [--help] [-C <path>] [-c name=value]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]

These are common Git commands used in various situations:

start a working area (see also: git help tutorial)
   clone      Clone a repository into a new directory
   init       Create an empty Git repository or reinitialize an existing one

work on the current change (see also: git help everyday)
   add        Add file contents to the index
   mv         Move or rename a file, a directory, or a symlink
   reset      Reset current HEAD to the specified state
   rm         Remove files from the working tree and from the index
......

如果需要查看帮助,使用git --helpman git即可。

2.1 常用命令

生成SSH-key

# 生成 SSH-key
ssh-keygen -C "${YOUR_EMAIL}" -t rsa
# 拷贝公钥到指定服务器
ssh-copy-id ${USER_NAME}@${HOST}

简单配置

# 个人信息
git config [--global] user.name "[name]"
git config [--global] user.email "[email]"

添加文件到版本库

# 添加文件到暂存区,可以为单个文件,目录,多个文件
git add [file]

# 提交暂存区的文件到版本库
git commit -m "[描述信息]" [file]

分支管理

# 列出所有分支
git branch -a

# 列出远程分支
git branch -r

# 创建分支
git branch [branch-name]

# 切换分支
git checkout [branch-name]

# 创建并切换到指定分支
git checkout -b [branch-name]

# 删除分支
git branch -d [branch-name]

# 删除远程分支
git push origin :[branch-name]

和远程版本库交互

# 拉取远程版本库记录到本地, 一般直接使用git fetch即可
git fetch [options] [<repository> [<refspec>...]]

# 拉取远程记录并修改到本地
# 如果要拉取所有分支,直接git pull即可
git pull [options] [<repository> [<refspec>...]]

# git push 推送本地提交到远程版本库

# 推送当前分支
git push

# 推送所有分支
git push --all

# 推送tag
git push tags

配置保存账户信息策略, 参考: Git Tools - Credential Storage

# git credential
# .gitconfig
[credential]
    helper = store --file ~/.git-credentials
    helper = cache --timeout 30000

更多命令可参考阮一峰老师的 常用 Git 命令清单

3. 图形化软件

  • GitKraKen
  • SourceTree
  • Git-GUI
  • TortoiseGit
  • SmartGit
  • Gitg
  • GitHub Desktop

4. 常用技巧

4.1 合并两个独立仓库

合并两个独立仓库A, B:

  1. 添加仓库 A 远程地址到 B 仓库 git remote add a ${a_url}
  2. 拉取别名为 a 的分支信息 git fetch a (注意tag)
  3. 本地创建新分支跟踪 a git checkout -b a a/master
  4. 切换分支到 B/master git checkout master
  5. 合并分支 a 到 master git merge a --allow-unrelated-histories, --allow-unrelated-histories 允许没有交集的两个分支进行合并

为保证各个仓库在不同文件夹,合并之前可进行迁移,创建同名文件夹,把原文件放到各自文件夹内,合并之后自然分布到各自目录,避免冲突,易于管理