git使用笔记

git用来做代码版本管理非常合适和高效。

安装git

在ubuntu下获得git非常容易:
sudo apt-get install git

git的几个概念

git基本原理
Workspace:工作区。编写代码的位置。
Index(Staging Area):暂存区。使用add命令,将代码加入这个区。
Local Repository:本地仓库。执行commit,从暂存区提交到本地仓库。
Remote Repository:远程仓库。使用push从本地仓库推送到服务器远程仓库。

git提交到远程池

一次典型的过程,以在github建远程仓库为例,事先去github建立一个名字为test的repository之后:

1
2
3
4
5
6
7
8
9
git config --global user.name taohi            //第一次使用git时设置
git config --global user.email taohi@taohi.net //第一次时设置
mkdir test && cd test
git init //本地仓库初始化
vim hello.c
git add hello.c //加入到staging area
git commit -m "first file hello world" //提交到本地repository
git remote add origin git@github.com:taohi/test.git//设置origin别名
git push -u origin master //提交到远程repository

当然,要事先在github上设置好本地电脑生成的ssh public key,允许本地电脑的权限。

git做一次merge管理

git一般是一组人一起使用,在各自的本地repo与远程repo之间更新代码。在一定阶段后,比如说组内阶段1任务完成,此时需要将各自的分支下代码整合到master分支里。
以我自己分支taohi为例,将其merge到远程master,过程如下:

1
2
3
4
5
6
7
8
9
10
11
git checkout master  //进入本地master分支
git merge taohi //把我的分支merge到master分支
git checkout -t origin/xiaoming //取远程xiaoming的分支到我本地
git pull
git checkout master
git merge xiaoming //把小明的分支merge到master下
//如果还有其他人的分支,按上述方法都进行合并
git push origin master //把本地最后合并好的master更新到远程池
git tag topic1
git push origin --tags
结束。

git撤销一次merge合并

我在master下手贱,merge了一个分支。马上想撤销这次merge。
先git log 查看要撤销的这个merge操作的commit 编号,假设是fb10e4694ccc21321。执行:
git reset --hard fb10e4694ccc21321

git更换远程库地址

比如之前用的github的库,地址为url-github
现在用bitbucket的库,地址为url-bitbucket.

git remote rm origin
git remote add origin url-bitbucket
git push origin master

git的其他常用命令

git ls-remote   查看远程所有的分支
git remote -v   查看git远程详细地址
git branch -vv   查看本地分支跟踪的远程分支对应关系
git reset HEAD ^ 回滚到上一个提交点。注意上尖号
git branch (branchname) 查看(创建)分支
git checkout branchname 进入某分支
git branch -d banchname  删除本地分支
git push origin --delete branchname 删除远程分支
git checkout -m c4b6ec filename 强制用远程文件覆盖本地文件