-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgitNotes.txt
More file actions
83 lines (64 loc) · 3.78 KB
/
gitNotes.txt
File metadata and controls
83 lines (64 loc) · 3.78 KB
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
75
76
77
78
79
80
81
Git代码管理学习笔记
课程:莫烦 Python Github 版本管理教程
笔记:Doffe
2018-04-28
## 创建版本库 ##
git init # 初始化git库
git status # 查看目前文件夹的状态
git log # 查看更改日志,按q退出
git log --oneline # 一行版本的
git add. # add更改,变为stage
git commit -m "更改信息" # 提交更改,stage变为unmodified
git config --global user.name "Doffe" # 设置全局作者
git config --global user.email "doffe@bupt.edu.cn" # 设置全局作者邮箱
## 记录修改 ##
git diff HEAD # 所有的更改
git diff # 最近任何的产生的更改
git diff --cached # 最近的被add过的文件的视角看的更改
## 回到从前 ##
git commit --amend --no-edit # 这次提交的时候直接复写上次的更改信息,不更改名称
# 仿佛不会撤销掉上次更改这次没有更改的东西
git reset # 从已经add到stage的状态返回到更改后没有add之前的状态
git reset --hard HEAD # 将指针恢复到最新一个提交的版本
git reset --hard HEAD^^^^ = HEAD~4 # 回到往前数4个的更改的版本
git reset --hard + id 号码 # 回到对应ID对应的版本上去,或者可以+那个HEAD@{0}啥的
git reflog # 查看HEAD指针的变化过程,方便回到未来(查看ID用这个好像更棒)
# 奔向过去,回到未来之类的只要一reset 就会所有的文件都被恢复到那个时间点
## 单个文件回到从前 ##
git checkout + id + -- + 文件名
git checkout c6762a1 -- 1.py # 使得1.py回到6762对应的提交的版本
## 分支 ##
Master分支,一般是给客户用的稳定版
Dev 一般是开发版
git log --oneline --graph # 显示分支的更改日志
git branch dev # 建立dev分支
git branch # 查看当前分支 *代表目前处在的分支位置
git checkout dev # 切换到dev的这个分支
git branch -d dev # 删除dev分支
git checkout -b dev # 建立并且跑到dev这个分支上
git commit -am "注释语句" # add和commit一步到位,注意,只能用于已经链接好的文件
git merge --no-ff -m "keeep merger info" dev # 在master分支下运行,把dev的版本文件更新到Master里,ff=fastforward,默认为真,此时不能写注释
## merge分支冲突 ##
# 大概意思是理论上应该只能不停地改dev,然后传给master
# 然而如果一不小心手贱先改了master,又改了dev,在用dev给master来merge的时候,就不知道怎么新增东西了,新增的内容会产生冲突
# 感觉一般情况下很难会这么冲突,因为在不同分支的时候文件都不一样诶...
# 或者说,还有个dev1也在影响master,dev2也在影响,然后就乱了?
# 好像这个就是说的下边那个...
## rebase分支冲突 ##
# rebase原理大概是本来我基于C1在改,后来C1里边的一些BUG被修复了,我想基于修复版C1修改,于是我用rebase,相当于我现在的修改是作为一个差值计算的,所以我现在把现在的修改量取出来,在最原始的C1上先进行BUG修复,然后再把我现在的差值补充上
# 但是本次差值还能保存,本次差值之前的所有记录就都消失掉了
# 在Master下进行git rebase dev,即在dev版本进行新的修改
# 总之是个坑,尽量别趟,老老实实的dev修改,然后merge上传好了
## Git Stash 临时修改 ##
git stash # 把刚刚modified的文件先存到缓存,不stage
git stash pop # 把缓存中的编辑完的文件再取出来
#下列为出现冲突以后的样子,上边那句就是相当于在dev提交前Master里已经更改过的内容,所以会有冲突
<<<<<<< HEAD
#stash功能测试语句,这句话实在devtest里写入的
=======
# 这句话理论上只能出现在dev里,不会出现在devtest里
>>>>>>> dev
## 上传GitHub ##
在自己的项目文件夹内
git remote add origin https://github.com/DoffeBupt/NotesOfGit.git
git push -u origin master # 把master上传到那个库里