Skip to content

Commit

Permalink
更新
Browse files Browse the repository at this point in the history
  • Loading branch information
jerryzhang committed Nov 1, 2015
1 parent 34d3c6e commit 129eaa5
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 16 deletions.
36 changes: 23 additions & 13 deletions 版本管理/git.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# 分布式管理系统 Git

1. 入门和学习Git的最好资料是:[pro git](http://iissnan.com/progit/),本文档主要记录我们在开发、发布过程中一些常用的 Git 命令。
2. [Git 风格指南](https://github.com/aseaday/git-style-guide)

## 一、Git基础

Expand All @@ -7,6 +9,14 @@
+ `git config user.name your_name` : 设置你的用户名, 提交会显示
+ `git config user.email your_email` : 设置你的邮箱
+ `git config core.quotepath false` : 解决中文文件名显示为数字问题
+ `git config --list` : 查看现有的配置

几个 alias 方便操作:

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

### 1.2 基本操作

Expand All @@ -18,6 +28,7 @@
+ `git checkout -- <file>` : 还原未暂存(staged)的文件
+ `git reset HEAD <file>...` : 取消暂存,那么还原一个暂存文件,应该是先 `reset``checkout`
+ `git stash` : 隐藏本地提交记录, 恢复的时候 `git stash pop`。这样可以在本地和远程有冲突的情况下,更新其他文件
+ `git log --name-status` : 查看详细的 log

### 1.3 分支

Expand All @@ -30,23 +41,27 @@
+ `git checkout --track origin/<origin-branch-name>` : 跟踪远程分支(创建跟踪远程分支,Git 在 `git push` 的时候不需要指定 `origin``branch-name` ,其实当我们 `clone` 一个 repo 到本地的时候,`master` 分支就是 origin/master 的跟踪分支,所以提交的时候直接 `git push`)。
+ `git push origin :<origin-branch-name>` : 删除远程分支

**Tips**: 放弃所有本地提交/改动,强制更新:

git fetch --all
git reset --hard origin/master
git pull

### 1.4 标签

+ `git tag -a <tagname> -m <message>` : 创建一个标签
+ `git tag` : 显示已有的标签
+ `git show tagname`: 显示某个标签的详细信息
+ `git checkout -b <tag-name>` : 基于某个 tag 创建一个新的分支

### 1.5 补丁
### 1.5 回退到某一次提交

先占个坑。
+ step 1: 使用 `git log` 查看提交的 hash 值
+ step 2: `git reset --hard hash`

### 1.6 Git shortcuts/aliases
可在本地回退到某一次提交,撤掉回退 `git pull` 即可。

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
如果想回退到远端分支的某一次提交,需要强制推送到远端分支: `git push origin master -f`

## 二、知识点

Expand Down Expand Up @@ -149,8 +164,3 @@ Git的核心数是很简单的,就是一个链表(或者一棵树更准确一

*理论部分是我个人对 Git 的理解,难免有偏差,看看就可以了。*


## 三、参考资料

+ [Pro Git](http://iissnan.com/progit/)
+ [Git shortcuts/aliases - How to create](http://alvinalexander.com/git/git-shortcuts-aliases-long-commands-how-to-create)
14 changes: 11 additions & 3 deletions 版本管理/svn.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
# 版本管理工具: SVN

本文由 [svn book 1.4](http://svndoc.iusesvn.com/svnbook/1.4) 整理而来。

`svn help <SUBCOMMAND>`: 查看子命令用法、参数及行为方式。
Expand Down Expand Up @@ -52,6 +50,8 @@ SVN 忽略方法和 git 不同,git 是在本地加一个 `.gitigore` 即可,

`svn propedit svn:ignore work_dir` : 在工作目录 work_dir 下添加过滤文件

在个人目录下编辑 `.bash_profile` 文件, 添加 SVN\_EDITOR 环境变量, `export SVN_EDITOR=vim`.

### 3.3 外部定义

引用场景:多个目录共享同一个目录。以游戏开发为例,UI、服务器、策划共享的数据表,这个时候就可以用到 *外部定义* 这个概念了。我理解外部定义就相当于 linux 下的软链接。
Expand Down Expand Up @@ -86,6 +86,11 @@ SVN 分支其实只是做了一份拷贝而已(svn copy), 但是它并不是物

[版本库管理](http://svndoc.iusesvn.com/svnbook/1.4/svn.reposadmin.html) 之后的章节感兴趣去看看(上面提供的命令足够应付大多数使用情况了)

### 4.4 查看所有分支

1. 在根目录下 `svn info` 找到版本库根路径,比如: `https://10.0.128.1/svn/HotCode`
2. `svn ls https://10.0.128.1/svn/HotCode/branches` 就可以看到其他分支了

## 五、知识点

### 5.1 四种文件状态(svn status)
Expand All @@ -99,7 +104,7 @@ SVN 分支其实只是做了一份拷贝而已(svn copy), 但是它并不是物

这些关键字可以用来代替 `--revision(r)` 的数字参数,这会被 Subversion 解释到特定的修订版本号。

+ `HEAD` : 版本库中最新的(或者是 "最年轻的")版本。
+ `HEAD` : 版本库中最新的(或者是 "最年轻的)版本。
+ `BASE` : 工作拷贝中一个条目的修订版本号,如果这个版本在本地修改了,则“BASE版本”就是这个条目在本地未修改的版本。
+ `COMMITTED` : 项目最近修改的修订版本,与BASE相同或更早。
+ `PREV` : 一个项目最后修改版本之前的那个版本,技术上可以认为是COMMITTED -1。
Expand All @@ -108,3 +113,6 @@ SVN 分支其实只是做了一份拷贝而已(svn copy), 但是它并不是物

我感觉 SVN 和 Git 设计的本质区别在于 SVN 核心点在于它的目录,而 Git 的核心点在于它的 Commit(结点)。这也就说明了 SVN 可以 checkout 某一个目录,Git 不行。SVN 的分支可以理解成一个目录,而 Git 的分支只不过是某个 Commit 上的快照而已。

## 六、常见问题

+ [svn diff: file marked as binary type](http://stackoverflow.com/questions/2634043/svn-diff-file-marked-as-binary-type)

0 comments on commit 129eaa5

Please sign in to comment.