新手问题 对 git 的分支还没理解到位

drine · 2015年03月06日 · 最后由 peter 回复于 2015年03月13日 · 2412 次阅读

例如,你的项目进行中遇到了一个问题,解决方案不确定,但是你不希望因此影响到当前的开发,那么你可以为此创建分支,然后在分支上测试你的方案,如果可行那么可以通过合并分支功能将你的更新应用到主干,反之你可以放弃它。

这是网上 找到的比较形象的解释。

我不理解的是,我现在正在开发的是 master 分支,现在突然有个紧急更新,我创建到了 A 分支上,但这时怎么不会影响当前的开发?(我的意思是要做这个紧急更新,我始终得修改本地文件吧,这样不就影响了吗?)

不知道我叙述清楚我不明白的那个点上没有..比如我在 master 上,现在要做个分支 A,但 A 分支失败了,而这时本地文件不都是已经被修改了吗?回到 master 分支上就可以撤销 A 分支里做的任何本地 修改?

回到 master 分支上就可以撤销 A 分支里做的任何本地 修改?

是的。

#1 楼 @Rei 原来已经理解了还以为自己没理解..谢谢!

Git 是个很抽象的系统,需要系统的学习 http://git-scm.com/book/zh/v1

谷歌 一个成功的 git 模型,适用于中小型团队或单干的。

永远不要在 master 上开发。

http://git-scm.com/book/zh/v1 把 Git 的文档好好读读,否则你永远搞不懂 Git 该怎么用!

git stash 一下?

我愚钝地把 git 当做压缩工具,然后将代码压缩后标上日期的版本,新分支当做新的压缩包吧,切换回 master,你就当做用回原来 master 的压缩包

@drine

http://www.yinwang.org/blog-cn/2015/03/11/git-etiquette/ 你本来不该知道这些的,可是现在我们没有更好的工具,所以你跟着做一遍就大概知道了:

$ mkdir temp
$ cd temp
$ git init
$ echo "aaaaa" > a.txt
$ git add *.txt
$ git commit -a -m "add one file on master"
$ git branch
* master
# git branch testing 这个命令只创建分支,一般用下面的,创建并切换到分支
$ git checkout -b testing #这时相当于把当前的master做了一个快照, 取名为testing,并切换到 testing
$ git branch #显示当前的分支, 一共有两个, 一个master, 一个testing, *号表示用户所在的分支
  master
 *testing
$ ls
a.txt
$ echo 'bbbbb' > b.txt
$ echo 'ccccc' > c.txt
$ git add *.txt
$ git commit -m 'added two files on testing '
[testing 8bd6d8b] added two files on testing
2 files changed, 2 insertions(+), 0 deletions(-)
create mode 100644 b.txt
create mode 100644 c.txt
$ ls
a.txt b.txt c.txt
$ git checkout master
Switched to branch 'master'
$ ls
a.txt # b.txt c.txt 不在 master 上
$ git checkout testing # 回去 testing 看看
Switched to branch 'testing'
$ ls
a.txt b.txt c.txt
需要 登录 后方可回复, 如果你还没有账号请 注册新账号