简介

新手初学git, 先找视频过了一遍, 此处为视频笔记

若遇难点或盲区,请移步官方文档

常用:

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
********************************* 提交 *********************************
————————————————————————————————————————————————————————————————————————
///////////////////////////////
**** 配置 ****
///////////////////////////////
$ git config --global user.name "自己的用户名"

$ git config --global user.email "自己的邮箱"
///////////////////////////////
**** 暂存区操作相关 ****
///////////////////////////////
$ git status #查看跟踪状态 (1.未跟踪,添加跟踪 2.已修改/删除,但没缓存)

$ git add 文件名 #1.添加跟踪的第一步,并更新至缓存区--只有在版本区中存在的文件为真正的跟踪文件 2.将 已修改/删除 的操作 更新至缓存区

$ git add . # 写个 . 不加文件名代表所有

$ git reset -- 文件名 #撤销暂存区的修改

$ git reset -- #不加文件名代表所有

$ git diff #查看暂存区被跟踪文件修改内容的,(一般不用)
$ git diff --cached #查看暂存区全部文件修改内容(包括被跟踪文件,和暂存区新增文件)
///////////////////////////////
**** 提交本地仓库相关 ****
///////////////////////////////
$ git commit -m "本次提交备注信息" #将缓存区的所有更改提交至本地仓库

$ git log #查看本地本仓库提交的记录(时间逆序显示,优先看的近期提交)

$ git log --reverse #同上 (用的不多,时间正序显示)

关于查看提交历史记录的命令,有些常用的选项介绍一下: (忽略此部分就好)
git log [分支名] 查看某分支的提交历史,不写分支名查看当前所在分支
git log --oneline 一行显示提交历史
git log -n 其中 n 是数字,查看最近 n 个提交
git log --author [贡献者名字] 查看指定贡献者的提交记录
git log --graph 图示法显示提交历史

//////////////////////////////
**** 提交远程仓库相关 ****
//////////////////////////////
$ git branch -avv #查看本地本仓库全部分支信息(显示三行数据,用来对比第一行和第三行的版本号来确定下面的 git push 是否操作成功)

$ git push #将本地仓库的主分支,提交推送到远程仓库的同名分支上。(一次推送可以包含多个commit,可通过最后一次的版本号对比是否推送成功(在网页上看或者 git branch -avv查看))

--注意:由于我们一般使用github这个远程服务器 或公司的 远程服务器仓库 ,因此我们的本地仓库一般都是克隆过来的(所以已经跟踪了远程仓库的同名分支)。因此 git init 这个自建本地仓库的命令一般用不到。
--git默认采用更为保守的"simple"模式,只推送当前分支到远程关联的同名分支。
--当 push.default 设置为 "matching" 后,git将推送和远程同名的所有本地分支。
$ git config --global push.default matching

以上 所有指令 仅git push 需要联网
________________________________________________________________________

******************************** 版本回退 ********************************
________________________________________________________________________
本地版本回退
$ git reset --soft HEAD^ #撤销最近一次commit提交,--soft软退回,--hard硬退回 HEAD^^撤销两次 HEAD~n撤销n次
版本回退后提交时间线分叉落后一个版本强制提交

$ git push -f

以及在本地仓库随意切换任意时候的版本
$ git reflog
$ git reset --hard 版本号
这些东西不在笔记中记录了 ,可基本能用熟练以后直接重复观看课程

以上 所有指令 仅git push -f 需要联网。


________________________________________________________________________
******************************** 分支管理 ********************************
________________________________________________________________________
$ git fetch #更新远程分支信息(并不会把远程分支和修改拉到本地)(可通过git branch -avv对比分支信息)(需要联网)

$ git rebase origin/master #在拥有远程分支信息的基础上,根据信息同步本地分支。(不需要联网,只能和上句配合使用)

$ git pull #相当于上面两句执行后的作用,(建议使用前两句)

$ git pull --rebase origin master #相当于前两句执行后的作用,(建议用前两句)
******
/////////////////////////////
**** 创建,添加新的分支 ****
/////////////////////////////
$ git branch 分支名 # 创建新的分支

$ git checkout 分支名 #切换分支

$ git checkout -b 分支名 创建分支并切换到新分支

执行 git push [主机名] [本地分支名]:[远程分支名] 即可将本地分支推送到远程仓库的分支中,通常冒号前后的分支名是相同的,如果是相同的,可以省略 git push [主机名] [远程分支名],如果远程分支不存在,会自动创建

git branch -u [主机名/远程分支名] [本地分支名] 将本地分支与远程分支关联,或者说使本地分支跟踪远程分支。 这样一来和 master 分支一样跟踪远程同名分支,可以直接使用 git push 命令推送了。

执行 git branch --unset-upstream [分支名] 即可撤销该分支对远程分支的跟踪,同样地,如果撤销当前所在的分支的跟踪,分支名可以省略不写

有没有办法在推送时就自动跟踪远程分支呢?有的,在推送的时候,加个 --set-upstream 或其简写 -u 选项即可 git push origin -u
////////////////////////////////
****** 删除远程分支
////////////////////////////////
删除远程分支,使用 git push [主机名] :[远程分支名] ,如果一次性删除多个,可以这样:git push [主机名] :[远程分支名] :[远程分支名] :[远程分支名] 。此命令的原理是将空分支推送到远程分支,结果自然就是远程分支被删除。另一个删除远程分支的命令:git push [主机名] --delete [远程分支名]。删除远程分支的命令可以在任意本地分支中执行

删除本地分支,使用 git branch -D [分支名] ,同样地,此命令也可以一次删除多个,将需要删除的分支名罗列在命令后面即可。在此之前,先介绍一个极少用到的命令:给本地分支改名 git branch -m [原分支名] [新分支名] ,若修改当前所在分支的名字,原分支名可以省略不写

________________________________________________________________________
******************************** 提 PR & 检查合并 PR
********************************
________________________________________________________________________

pull request

在github中的操作,直接去复习课程
________________________________________________________________________
******************************** 标签(版本)
********************************
________________________________________________________________________
标签是在提交的基础上创建的,如果仓库的多个分支中都有这个提交版本,那么这些分支上就有关于这个提交的相同的标签。

标签的操作,直接去复习课程

标签是 Git 中的概念,而 releases 则是 Github、码云等源码托管商所提供的更高层的概念。Git 本身是没有 releases 这个概念,只有 tag。两者之间的关系则是,release 基于 tag,为 tag 添加更丰富的信息,一般是编译好的文件。

不推荐:

1
2
3
$ git commit -am  "本次提交备注信息"   #将缓存区以及工作区的所有更改提交至本地仓库(会略过未被跟踪文件--如本地创建的新文件还没add过就是为跟踪的文件)

ssh关联github 可以提高传输速度 免密推送 等

不常用: