Contents

使用Git以及Github进行版本控制

git是一个很好用的版本控制系统,使用它可以很好的完成项目的多人协作、版本恢复等任务。本博客的源代码就是保存在github里进行本地到远程服务器的同步的,本篇博文记录一下常见的git命令以及git与github交互,也是方便自己使用啦。

git基本命令

首先是安装git,这一步就不赘述啦。

1. 创建新仓库

创建新文件夹,打开,然后执行

1
 git init 

以创建新的 git 仓库。

2. 克隆仓库

执行如下命令在当前目录下创建一个本地仓库的克隆版本:

1
 git clone /path/to/repository  

如果是远端服务器上的仓库,你的命令会是这个样子:

1
git clone username@host:/path/to/repository 

3. 文件(改动)的添加与提交

本地仓库由 git 维护的三棵“树”组成:

  • 第一个是你的 工作目录,它持有实际文件;
  • 第二个是 缓存区(Index),它像个缓存区域,临时保存你的改动;
  • 最后是 HEAD,指向你最近一次提交后的结果。

git的文件流示意图如下:


把把文件添加到版本库分为两步:

3.1 将文件添加到缓存区:

1
2
git add <filename>
git add *

这是 git 基本工作流程的第一步;

3.2 实际提交改动:

1
git commit -m "代码提交信息"

现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库。

4. 远端仓库的同步

你的改动现在已经在本地仓库的 HEAD 中了。执行如下命令以将这些改动提交到远端仓库:

1
git push origin master

可以把 master 换成你想要推送的任何分支。

如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:

1
git remote add origin <server>

如此你就能够将你的改动推送到所添加的服务器上去了。

5. 分支操作

在你创建仓库的时候,master 是“默认的”。在其他分支上进行开发,完成后再将它们合并到主分支上。
创建一个叫做“feature_x”的分支,并切换过去:

1
git checkout -b feature_x

切换回主分支:
1
git checkout master

再把新建的分支删掉:
1
git branch -d feature_x

除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的:
1
git push origin <branch>

6. 更新与合并

要更新你的本地仓库至最新改动,执行:

1
git pull

以在你的工作目录中 获取(fetch) 并 合并(merge) 远端的改动。
要合并其他分支到你的当前分支(例如 master),执行:
1
git merge <branch>

两种情况下,git 都会尝试去自动合并改动。不幸的是,自动合并并非次次都能成功,并可能导致 冲突(conflicts)。 这时候就需要你修改这些文件来人肉合并这些 冲突(conflicts) 了。改完之后,你需要执行如下命令以将它们标记为合并成功:
1
git add <filename>

在合并改动之前,也可以使用如下命令查看:
1
git diff <source_branch> <target_branch>

7. 替换本地改动

假如你做错事(自然,这是不可能的),你可以使用如下命令替换掉本地改动:

1
git checkout -- <filename>

此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到缓存区的改动,以及新文件,都不受影响。

假如你想要丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它:

1
2
git fetch origin
git reset --hard origin/master

8.配置git

8.1 代理配置

1
2
3
4
5
6
7
8
9
# 打开代理
git config --global http.proxy 'socks5://127.0.0.1:1080' 
git config --global https.proxy 'socks5://127.0.0.1:1080'
# 关闭代理
git config --global --unset http.proxy
git config --global --unset https.proxy
# 查看代理状态
git config --get http.proxy
git config --get https.proxy

使用 Github 作为远程仓库

1. 查看当前远程仓库

1
2
3
4
5
$ git remote
origin
$ git remote -v
origin  [email protected]:your-name/your-repo.git (fetch)
origin  [email protected]:your-name/your-repo.git (push)

2. 添加与删除远程仓库

1
2
3
4
# 添加仓库 origin2
git remote add origin2 [email protected]:your-name/your-repo.git
# 删除仓库 origin2
git remote rm origin2

3.配置验证信息

由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息,使用以下命令生成SSH Key:

1
ssh-keygen -t rsa -C "[email protected]"

后面的 [email protected] 改为你在 github 上注册的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在~/下生成.ssh文件夹,进去,打开 id_rsa.pub,复制里面的 key。
1
2
cd .ssh
cat id_rsa.pub

回到 github 上,进入 Account => Settings(账户配置)。左边选择 SSH and GPG keys,然后点击 New SSH key 按钮,title 设置标题,可以随便填,粘贴在你电脑上生成的 key。

4. 验证是否配置成功

1
2
ssh -T [email protected]
# You've successfully authenticated, but GitHub does not provide shell access.

总结

配置好本地仓库以及github上的远程仓库后(remote设置好),常用操作如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 初始化
git init
# 添加所有文件
git add -A
# 提交并备注信息
git commit -m "message"        
# 把本地库的所有内容推送到远程库
git push -u origin master
# 强制覆盖push
git push -u origin master -f

参考

  1. Git教程 - 廖雪峰的官方网站 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
  2. git - 简易指南 http://www.bootcss.com/p/git-guide/
  3. git教程-菜鸟教程 http://www.runoob.com/git/git-tutorial.html