Git 简易指北

推荐先阅读一下在线版本Git简明指南 http://rogerdudler.github.io/git-guide/index.zh.html

如果你的一台电脑上管理多个Github帐号的SSH Keys,请参照SSH协议的应用 &为Github配置SSH Key

Git工作流的概念
你的本地仓库由 git 维护的三棵“树”组成。
第一个是你的 工作目录,它持有实际文件;
第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动;
最后是 HEAD,它指向你最后一次提交的结果。
盗用一下别人的图:

1.新建仓库

首先在github上创建一个新的repository,然后

$ cd ~/repos_name/
$ touch README.md
$ git init
$ git add .
$ git commit -m "first commit"
$ git remote add origin https://github.com/username/repos_name.git
$ git push -u origin master

如果是已有项目:

cd existing_git_repo
git remote add origin https://git.oschina.net/whatsdjgpp/CodeBox.git
git push -u origin master

2.提交代码

$ git add *
$ git commit -m "代码提交信息"
$ git push origin master

执行git commit之后只是将改提交到了本地的HEAD, 而git push将改动提交到远端仓库, 可以把 master 换成你想要推送的任何分支.

如果你还没有克隆现有仓库,又想将代码改动某个远程服务器,你可以使用如下命令添加:
git remote add origin

3.修改默认值

$ git config --global user.name "xxx"
$ git config --global user.email xxx@gmail.com
$ git config --global core.editor gvim
$ git config --global merge.tool gvimdiff

注意, 这里加了“–global”参数,设置参数会存储在~/.git/config。
如果要针对某个仓库进行设置,则是:

cd repos_dir
git config user.name "your-id"
git config user.email "your-id@gmail.com"

配置会写入“仓库目录/.git/config”

4.从Git上删除文件

$ git rm test.txt
$ rm 'test.txt'
$ git commit -m "remove test.txt"

5.从服务器获取最新代码

$ git pull

相当于两个命令 Git fetch + Git merge, 从服务器的仓库中获取代码,和本地代码合并.

6.对比代码

$ git diff

7.检出别人的仓库

执行如下命令以创建一个本地仓库的克隆版本:

git clone /path/to/repository

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

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

如何让git忽略某些文件

在本地仓库目录新建.gitignore文件并添加以下内容:

obj\
*.so
*.o
*.swp

将会自动忽略目录“obj”,以及.so,.o等类型的文件

如果你手误了…

干掉本地的改动, 以服务器上的代码为准:

git fetch origin
git reset --hard origin/master

分支概念

Git在创建仓储的时候, 默认有一个”master”分支, 可以在”master”上拉出分支, 修改完成后再merge到master上.
创建一个叫做“feature_x”的分支,并切换过去:git checkout -b feature_x
切换回主分支:git checkout master
再把新建的分支删掉: git branch -d feature_x
除非你将分支推送到远端仓库,不然该分支就是不为他人所见的:git push origin