git学习简明教程

摘要

本文内容由学习廖雪峰《Git教程》而来

获取最后一次提交的commit-id

1
2
3
4
获取完整commit id
git rev-parse HEAD
获取short commit id
git rev-parse --short HEAD

根据commit-id获取分支名

1
git branch --contains <commit-id>

Git merge和git branch 分支与合并

本章取自 Git 分支与合并

一次提交的对象数据

多次提交后形成指向上次的指针

分支是指向一个commit对象的一个 可变指针
master是分支的默认名字,指向最后一次commit对象的指针
创建分支就是创建分支指针
head指针指向当前工作目录

为分支合并自动识别出最佳的同源合并点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
git clone url #克隆新的版本库
git init
git pull repo_name #有关联的远程库,抽取并和本地合并
git fetch remote_repo_name #抽取并新建分支



#在当前commit对象上新建分支 指针head
#head指向正在工作中的本地分支的指针(别名)
#不会切换到新建的分支上
git branch branch1

#切换分支将head指向branch1
git checkout branch1

#工作流程卡
#在不同的分支里反复切换,并在时机成熟时把他们合并到一起
#git的分支实际是一个包含所指向对象校验和的文件(40个字符长度SHA-1字串)

#分支的新建和合并
#0、自己工作分支mybranch,工作的好好的

#1、突然有新需求,先切换到生产环境分支product;
git checkout product

#2、为新需求新建分支branch_pack,切到其中,并在其中编码,直到通过测试用例
# -b 新建分支并切换到其上
git checkout -b issueXXXX

#3、切换到生产环境分支product,将2中的开发工作分支branch_pack合并进来,然后推送到生产服务器上
git checkout product
# 合并
git merge branch_pach
#冲突解决,merge失败时很可能因对同一文件的同时更改,所以必须手动人工解决 取舍代码,确认冲突解决后需要把冲突文件 git add到staged area,运行git status查看所有状态确保无误后再git commit提交,注释好冲突为什么这么解决

git push 远程仓库名 本地仓库名

#分支删除
git branch -d branch_pach

4、切换到mybranch继续自己的工作
git checkout mybranch

#切换分支最好没有待提交的文件,即stage area是清洁的
#查看各个分支最后一个提交对象的信息
git branch -v
git branch --merge/no-merged
#查看哪些分支已被并入当前分支(译注:也就是说哪些分支是当前分支的直接上游



#给分支生成patch文件可以给
git format-patch


#把本地名为serverfix的分支推送到远程origin库的awesomebranch分支
git push origin serverfix:awesomebranch

#跟踪远程分支 从远程分支checkout出的本地分支成为 跟踪分支
git checkout -b sf origin/serverfix
git checkout --track origin/serverfix

#删除远程分支
git push origin :serverfix

git两种开发分支方法
长期分支:一个主分支保持稳定代码,其余多个开放分支
特性topic分支:多个短期单一功能的分支

#给当前文件 打特定版本标签
git tag -a beta0.1 -m "some 注释"

#回退到某个tag
git tag beta0.1