Git多人协作

Olivia的小跟班 Lv4

题记

本文是用来记录git多人协作的流程(Gitflow)。

1.创建项目

image-20230228143231961

2.连接GitHub

image-20230228143357534

image-20230228143406302

image-20230228143420380

image-20230228143502060

image-20230228143533637

3.develop分支

develop 分支用于日常开发,保存了开发过程中最新的代码。当 develop 分支上的代码达到稳定,并且具备发版状态时,需要将 develop 的代码合并到 master,并且打一个带有发布版本号的 tag。

1
2
3
4
5
# 从 master 分支上创建 develop 分支
git checkout –b develop master

# 推送 develop 分支
git push origin develop

image-20230228143729960

image-20230228143834294

在GitHub仓库里面将master分支设置为Protected分支,不允许developer推送代码,master可以推送代码。

image-20230228144212290

image-20230228145014269

image-20230228145030274

4.feature分支

  • 分支来源:develop
  • 合并到分支:develop
  • 分支命名约定:feature-…

功能分支,在开发某一个新功能时,从 develop 分支分出来,开发完之后,再合并回 develop 分支。功能分支通常只存在于开发者的本地仓库中,并不包含在远程库中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#创建一个feature分支,新分支不是基于master分支,而是应该基于develop分支
git checkout -b feature-v1.0 develop

#开发新特性,这时候开始开发功能

#拉取:在合并功能前确保develop分支是最新的
git pull origin develop

#提交,开发的文件(git commit)

#切换分支
git checkout develop

#合并分支
git merge feature-v1.0

#提交到origin/develop
git push origin develop

#删除指定的feature分支
git branch -d feature-v1.0

image-20230228175934130

5.release分支

  • 分支来源:develop
  • 合并到分支:develop,master
  • 分支命名约定:release-…

预发布分支,它是指发布正式版本之前,我们可能需要有一个预发布的版本测试,并且可以在上面做一些较小 bug 的修复。预发布分支是从 develop 分支上分出来的,预发布结束以后,必须合并进 develop 和 master 分支。

image-20230228222458369

合并出现问题 :wq 强制退出。

记得删除分支。

6.hotfix分支

  • 分支来源:master
  • 合并到分支:develop,master
  • 分支命名约定:hotfix-…

最后一种是修复 bug 分支。软件正式发布以后,难免会出现 bug。这时就需要创建一个分支,进行 bug 修复。

修复 bug 分支是从 master 分支上分出来的。修复结束以后,再合并进 master 和 develop 分支。

image-20230228223307478

7.tag标签

1
2
3
4
5
6
7
8
9
10
11
#打标签
git tag ...(tagname)

#列出所有标签
git tag -n

#删除指定标签
git tag -d ...(tagname)

#上传标签
git push --tags

8.邀请他人协作开发

image-20230228145254837

9.回退版本

本地仓(Local Repository):本地仓指的是在开发者本地计算机上保存项目版本历史记录的地方。它通常是一个包含了完整项目历史记录的目录,包括所有的版本和分支信息。在Git中,本地仓是通过在项目目录下初始化Git仓库(使用”git init”命令)或者通过克隆远程仓库到本地(使用”git clone”命令)来创建的。

image-20230416000848430

暂存区(Staging Area):暂存区是Git中用于暂时存储将要提交的文件或者修改的地方。它相当于一个缓冲区,可以让开发者选择性地将文件添加到其中,然后在一次性提交(commit)时,将暂存区中的所有文件一并提交到本地仓。暂存区的作用是为了控制提交的粒度,允许开发者对提交的内容进行精细的控制,可以将不同逻辑上的修改分别暂存,然后一次性提交。

image-20230416000824987

工作区(Working Directory):工作区是开发者在本地计算机上实际进行开发工作的目录,包含了项目的源代码、文件和文件夹等。当开发者对工作区中的文件进行修改后,这些修改会被记录到暂存区,然后再通过提交(commit)操作将修改保存到本地仓。工作区中的文件可以通过Git命令进行添加、修改、删除等操作,然后通过将修改保存到暂存区和本地仓来管理项目的版本历史记录。

image-20230416000751679

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
git reset:回退版本,可指定某一次提交的版本。
1、--soft参数
回滚本地仓库

2、--mixed参数
这是默认参数。表示本地仓和暂存区,都回滚到Y版本号。工作区代码不受影响。

3、--hard参数
本地仓、暂存区、工作区,三区都回滚。

4.使用 ~数字表示
HEAD~0 表示当前版本
HEAD~~1 上一个版本
HEAD~~2 上上一个版本
HEAD~3 上上上一个版本

10.开发流程

每天只要干活先从远程仓库pull(拉取)下来,结束工作先pull,再commite整个项目,再push到远程仓库(自己创建feature分支实现功能)

11.补充

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
git init	//该命令执行完后会在当前目录生成一个 .git 目录。


git init newrepo //初始化后,会在 newrepo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。


git add *.c
git add README
git commit -m "初始化项目版本"
//以上命令将目录下以 .c 结尾及 README 文件提交到仓库中。 -m:提交信息


git clone <repository> <directory> //从Git仓库中拷贝项目到指定目录,目录可选


git config --list //显示当前的 git 配置信息:
git config -e //针对当前仓库
git config -e --global //针对系统上所有仓库


//设置提交代码时的用户信息
git config --global user.name "runoob"
git config --global user.email test@runoob.com


git status //查看仓库当前的状态,显示有变更的文件
git --version //获取Git版本号的命令


git rm <file> //将文件从暂存区和工作区中删除,加上-f就是强制删除,加上--cached是指从暂存区删除
git rm –r * //进入某个目录中,执行此语句,会删除该目录下的所有文件和子目录。


git mv //命令用于移动或重命名一个文件、目录或软连接。
git mv [file] [newfile] //如果新文件名已经存在,但还是要重命名它,可以使用 -f 参数:


显示暂存区和工作区的差异:git diff [file]
显示暂存区和上一次提交(commit)的差异:git diff --cached [file]
显示两次提交之间的差异:git diff [first-branch]...[second-branch]


git log //查看历史提交记录。
--oneline 查看历史记录的简洁的版本。
--graph 查看历史中什么时候出现了分支、合并。
--reverse 逆向显示所有日志。
--author 查找指定用户的提交日志可以使用命令
--since和--before 指定日期


git blame <file> //查看指定文件的修改记录


git remote -v //显示所有远程仓库
git remote show [remote]显示某个远程仓库的信息:
git remote add [shortname] [url] 添加远程版本库,shortname 为本地的版本库
git remote rm name //删除远程仓库
git remote rename old_name new_name //修改仓库名


git fetch <远程主机名> //将某个远程主机的更新,全部取回本地。git fetch命令通常用来查看其他人的进程,因为它取回的代码对你本地的开发代码没有影响。默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。
git fetch <远程主机名> <分支名> //比如,取回origin主机的master分支(git fetch origin master),所取回的更新,在本地主机上要用"远程主机名/分支名"的形式读取。比如origin主机的master,就要用origin/master读取。


git branch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支。git branch -r、git branch -a

参考资料

Git分支管理规范

Git 教程 | 菜鸟教程

Git分支管理策略汇总

Git-workflow-tutorial

Git分支管理策略和工作流程

工作之后学习的Git

git clone *** 克隆远程版本库

git init 初始化本地版仓库

git status 查看文件状态

git diff 查看变更内容

git add [file1] [file2]…. 添加文件到暂存区

git add . 这个命令将一次性添加所有的文件

git commit -a 这个选项只考虑Git中已经添加的文件。它不会提交新创建的文件

git commit -m “XXXX” 提交更新的文件

git pull –rebase 拉取 Git pull –rebase的作用

git push <远程主机名> <本地分支名>:<远程分支名>

git checkout (branchName) 切到指定分支

git checkout -b (branchName) 用于创建一个新分支branchName并立即切换到新创建的分支

git branch -d (branchName) 删除指定分支·

git branch -a 列出所有本地分支

git merge (branchName) 合并指定分支到当前分支

git log 查看历史提交记录

git cherry-pick “复制”一个提交节点并在当前分支做一次完全一样的新提交。

git reset –hard HEAD 本地暂存区退回

git revert 线上已提交/合并分支退回

git stash 、git stash pop Git stash 命令

git config –add core.filemode false 忽略filemode变更

git branch –set-upstream-to origin remoteBranchName 设置默认的远程分支

git branch -vv 显示默认的远程分支

git fetch –all 用于从远程仓库中获取所有分支的更新

git tag 列出存储在仓库中的标签

git tag tagname 创建一个新的标签

git tag -d tagname 要删除现有的标签

git push origin tagname 将标签推送到远程仓库

git checkout tagname 检出特定的标签

  • 标题: Git多人协作
  • 作者: Olivia的小跟班
  • 创建于 : 2023-02-28 14:26:42
  • 更新于 : 2024-01-01 19:10:04
  • 链接: https://www.youandgentleness.cn/2023/02/28/Git多人协作/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论