1. 基本概念
- Workspace:工作区,工程文件
- Index:暂存区,也叫待提交更新区,在提交进入 repo 之前,把所有的更新放在暂存区
- Local Repository:本地仓库,存放在本地的版本库,HEAD 指向当前的开发分支
- Remote Repository:远程仓库,远程服务器的版本库
基本的 Git 工作流程如下:
在工作目录中修改某些文件
对修改后的文件进行快照,然后保存到暂存区,git add
提交更新,将保存在暂存区域的文件快照永久转储到本地 Git,git commit
更新到远程,将本地 Git 推送到远程,git push
2. 初始化
1
|
$git clone <git-base-url>
|
3. 分支
* 不带参数,仅列出本地
* `-a` 参数,列出本地和远程
* `-r` 参数,仅列出远程
1
|
git checkout <branch_name>
|
*`-a`参数,拉取全部分支更新
1
|
$git branch <branch_name>
|
1
|
$git branch <branch_name> origin/<branch_name>
|
1
|
$git checkout <branch_name>
|
1
|
$git push origin <branch_name>
|
1
|
$git push origin --delete <branch_name>
|
或者,推送一个空的本地分支到远程
1
|
$git push origin :<branch_name>
|
1
|
$git branch -D <branch_name>
|
4. 版本
1
2
3
4
5
6
7
8
9
10
|
# 查看命令历史,常用于帮助找回丢失掉的 commit
git reflog
# 回退到具体某个版本
git reset --hard c7926e6
# 显示当前分支的版本历史
git log
# 显示commit历史,以及每次commit发生变更的文件
git log --stat
# 搜索提交历史,根据关键词
git log -S [keyword]
|
5. 提交
1
|
git commit -m "commit msg"
|
1
|
$git checkout -- <file_name>
|
1
2
|
$git checkout <branch_name>
$git merge master
|
- 从远程获取最新版 master 并 merge 到自己的分支
1
|
$git pull origin master
|
相当于先 fetch ,然后合并
1
2
3
|
git fetch origin master:tmp
git diff tmp
git merge tmp
|
6. 标签
1
2
3
4
5
6
7
8
9
10
11
12
|
# 查看全部标签
git tag
# 切换标签
git checkout <tag_name>
# 新建标签
git tag v1.0 #新建标签,默认位 HEAD
git tag v1.0 c7926e6 #对指定的 commit id 打标签
git tag -a v1.0 -m 'v1.0 r' #新建带注释标签
# 删除标签
git tag -d <tag_name>
# 删除远程标签
git push origin :refs/tags/<tag_name>
|
7. 参考
- http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html