Skip to content

Commit 2fad146

Browse files
committed
add faq
1 parent 95d6338 commit 2fad146

1 file changed

Lines changed: 40 additions & 16 deletions

File tree

functions/git/note.md

Lines changed: 40 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
# Git分布式版本控制系统
2-
为什么说Git是分布式的,原因是Git仓库的每一个参与者都拥有Git仓库的完整副本,
3-
本地修改和提交不依赖于Git服务器,只有参与者之间同步数据时才需要Git服务器。
2+
3+
为什么说Git是分布式的,原因是Git仓库的每一个参与者都拥有Git仓库的完整副本, 本地修改和提交不依赖于Git服务器,只有参与者之间同步数据时才需要Git服务器。
44

55
参考:[Git 使用教程](https://mp.weixin.qq.com/s/4SXOU4cTAjk3HPmpu8IgEw)
6-
>SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
6+
> SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
77
>
88
>Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
99
1010
## git服务器
11+
1112
推荐使用github和gitlab,其中gitlab可以独立部署(本地化部署)
1213

1314
## git概念和基础知识
@@ -19,6 +20,7 @@ Git有两个repository,远程仓库(remote)和本地仓库(local),
1920
远程库的默认名称是origin,即远程库上的分支通常以origin/xxx/xyz表示,而本地仓库上的分支一般以xxx/xyz表示。
2021

2122
本地仓库涉及两个区,工作区和暂存区,已经add但未commit的文件在暂存区。
23+
2224
1. 使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。
2325
2. 使用git commit提交更改,实际上就是把暂存区的所有内容提交到本地仓库的当前分支上,尚未push到远程仓库。
2426

@@ -27,28 +29,50 @@ HEAD是git指向当前分支节点的一个指针,也叫游标。它可以指
2729
git fetch 更新的是本地仓库中的origin部分,并不影响本地仓库中已经创建、打开、签出的分支。
2830

2931
git pull 是git fetch + git merge的组合。git pull是把远程仓库更新到本地仓库。
30-
>注意:pull操作可能会影响工作区,而fetch只影响本地仓库,merge操作并不影响本地仓库,只有commit后才会被提交。
32+
> 注意:pull操作可能会影响工作区,而fetch只影响本地仓库,merge操作并不影响本地仓库,只有commit后才会被提交。
3133
>
3234
>pull后,如果远程仓库和工作区文件存在冲突,则会自动提示,并显示出差异。
3335
3436
追踪(tracking):本地分支与远程分支之间如果关联,则本地分支是远程分支的跟踪,跟踪某些场景会自动创建,比如同名情况。
3537

3638
## git工作流(workflow/flow)
37-
将仓库区分为公共仓库和个人仓库,公共仓库是发布release的仓库,不作日常开发使用。
38-
项目参与者通过fork公共仓库到个人仓库,所有的日常操作均在个人仓库完成。
3939

40-
公共仓库一般不允许push,只能通过merge进行。
40+
将仓库区分为公共仓库和个人仓库,公共仓库是发布release的仓库,不作日常开发使用。 项目参与者通过fork公共仓库到个人仓库,所有的日常操作均在个人仓库完成。
41+
42+
公共仓库一般不允许push,只能通过merge进行(提交拉取请求pull requests)。
4143

4244
无论是公共仓库还是个人仓库,master分支一般不允许直接push(可设置为受保护的分支),只能通过由其他分支merge到master。
4345

44-
在这种工作流下,公共仓库一般作为为upstream(这并不是一个git 关键词),而个人仓库实则为remote也就是origin。
45-
upstream允许fetch,而origin允许push。
46+
在这种工作流下,公共仓库一般作为为upstream(这并不是一个git 关键词),而个人仓库实则为remote也就是origin。 upstream允许fetch,而origin允许push。
47+
48+
添加仓库作为upstream,以便于将公共仓库同步到个人仓库,使用如下命令:
4649

47-
添加仓库作为upstream
4850
```shell script
4951
git remote add upstream git://github.com/public/repo.git
52+
git fetch upstream
53+
```
54+
55+
## 常见问题FAQ
56+
57+
1. 当工作区已经有修改但未提交的文件存在冲突时应该如何解决?
58+
59+
- 保留当前工作区修改
60+
61+
```shell
62+
git stash # 将本地的状态暂时保存起来
63+
git pull origin master
64+
git stash pop # 将暂时保存起来本地的状态还原回来
5065
```
5166

67+
- 不保留当前工作区修改
68+
69+
```shell
70+
git reset --hard # 将本地的状态恢复到上一个commit id
71+
git pull origin master
72+
```
73+
74+
2. 其他问题
75+
5276
> 规则:在任何时候,在用户使用的任何一个版本都必须在任何时刻在git中找到,他们必须是1对1的关系。
5377
5478
## 运行环境
@@ -60,7 +84,6 @@ git remote add upstream git://github.com/public/repo.git
6084
|UAT|User Acceptance Test environment|
6185
|PRO|Production environment|
6286

63-
6487
## git分支管理
6588

6689
简单的版本
@@ -75,7 +98,6 @@ git remote add upstream git://github.com/public/repo.git
7598

7699
参考:[Git 分支设计规范](https://www.cnblogs.com/xinliangcoder/p/12336576.html)
77100

78-
79101
|分支|名称|可发布到的环境|说明|
80102
|:----|:----|:----|:----|
81103
|master|主分支|PRO||
@@ -84,19 +106,21 @@ git remote add upstream git://github.com/public/repo.git
84106
|develop|测试分支|FAT||
85107
|feature|需求开发分支|DEV|发布后删除即可|
86108

87-
>如果包含独立部署、特殊定制或封版的分支,建议放release分支
88-
>习惯上,release上的版本是可发布可正式使用的版本
109+
> 如果包含独立部署、特殊定制或封版的分支,建议放release分支
110+
> 习惯上,release上的版本是可发布可正式使用的版本
89111
90112
## git命令
113+
91114
暂略
92115

93116
## others
94117

95118
### commit规范
119+
96120
1. 提交信息最好能反映出提交修改的意图,简单明了、清晰直观。
97121
2. 字数不要过长,建议不超过60字
98122
3. 可以附加issue编号
99123

100124
### .gitignore
101-
ignore顾名思义是不提交到仓库。
102-
在提交时,可以先确定哪些文件或目录需要ignore。
125+
126+
ignore顾名思义是不提交到仓库。 在提交时,可以先确定哪些文件或目录需要ignore。

0 commit comments

Comments
 (0)