一次提交的对象数据
多次提交后形成指向上次的指针
分支是指向一个commit对象的一个 可变指针
master是分支的默认名字,指向最后一次commit对象的指针
创建分支就是创建分支指针
head指针指向当前工作目录
为分支合并自动识别出最佳的同源合并点
01 |
git clone url #克隆新的版本库 |
02 |
git init |
03 |
git pull repo_name #有关联的远程库,抽取并和本地合并 |
04 |
git fetch remote_repo_name #抽取并新建分支 |
05 |
06 |
|
07 |
08 |
#在当前commit对象上新建分支 指针head |
09 |
#head指向正在工作中的本地分支的指针(别名) |
10 |
#不会切换到新建的分支上 |
11 |
git branch branch1 |
12 |
13 |
#切换分支将head指向branch1 |
14 |
git checkout branch1 |
15 |
16 |
#工作流程卡 |
17 |
#在不同的分支里反复切换,并在时机成熟时把他们合并到一起 |
18 |
#git的分支实际是一个包含所指向对象校验和的文件( 40 个字符长度SHA- 1 字串) |
19 |
20 |
#分支的新建和合并 |
21 |
# 0 、自己工作分支mybranch,工作的好好的 |
22 |
23 |
# 1 、突然有新需求,先切换到生产环境分支product; |
24 |
git checkout product |
25 |
26 |
# 2 、为新需求新建分支branch_pack,切到其中,并在其中编码,直到通过测试用例 |
27 |
# -b 新建分支并切换到其上 |
28 |
git checkout -b issueXXXX |
29 |
30 |
# 3 、切换到生产环境分支product,将 2 中的开发工作分支branch_pack合并进来,然后推送到生产服务器上 |
31 |
git checkout product |
32 |
# 合并 |
33 |
git merge branch_pach |
34 |
#冲突解决,merge失败时很可能因对同一文件的同时更改,所以必须手动人工解决 取舍代码,确认冲突解决后需要把冲突文件 git add到staged area,运行git status查看所有状态确保无误后再git commit提交,注释好冲突为什么这么解决 |
35 |
36 |
git push 远程仓库名 本地仓库名 |
37 |
38 |
#分支删除 |
39 |
git branch -d branch_pach |
40 |
41 |
4 、切换到mybranch继续自己的工作 |
42 |
git checkout mybranch |
43 |
|
44 |
#切换分支最好没有待提交的文件,即stage area是清洁的 |
45 |
#查看各个分支最后一个提交对象的信息 |
46 |
git branch -v |
47 |
git branch --merge/no-merged |
48 |
#查看哪些分支已被并入当前分支(译注:也就是说哪些分支是当前分支的直接上游 |
49 |
50 |
51 |
52 |
#给分支生成patch文件可以给 |
53 |
git format-patch |
54 |
55 |
56 |
#把本地名为serverfix的分支推送到远程origin库的awesomebranch分支 |
57 |
git push origin serverfix:awesomebranch |
58 |
59 |
#跟踪远程分支 从远程分支checkout出的本地分支成为 跟踪分支 |
60 |
git checkout -b sf origin/serverfix |
61 |
git checkout --track origin/serverfix |
62 |
|
63 |
#删除远程分支 |
64 |
git push origin :serverfix |
65 |
66 |
git两种开发分支方法 |
67 |
长期分支:一个主分支保持稳定代码,其余多个开放分支 |
68 |
特性topic分支:多个短期单一功能的分支 |
69 |
70 |
#给当前文件 打特定版本标签 |
71 |
git tag -a beta0. 1 -m "some 注释" |
72 |
73 |
#回退到某个tag |
74 |
git tag beta0. 1 |