git团队协作

写这篇文章其实是为了软件工程这个课需要展现团队合作,但是现在大学生大部分都不用(我也只push),科普一下(很有必要掌握),所以文章顺序就不是很符合逻辑,我会先讲解IDEA中怎么操作然后再说下Git Bash的操作,没去实习过所以也不知道是否规范,欢迎大家指正。

IDEA操作

只需在创建项目的时候勾选创建git仓库即可,这一步相当于git init。
图1
这个比如你新建一个类,这个就相当于git add,提交到暂存区。
图2
图3
这个就相当于git commit -m 提交到本地库。不要提交并推送,正常操作是你需要先pull再push,为了避免代码冲突、保证团队代码同步。
接下来的操作我懒得截屏了

1
2
3
4
5
6
7
8
9
10
11
12
13
git remote add origin https://github.com/DocJlm/AIPlatform.git #关联远程仓库,起别名一般喜欢叫origin

git pull origin main --allow-unrelated-histories #字面意思允许不相关历史合并

#接下来解决冲突重复add commit

git push origin master:main #推送到远程库,因为本地仓库是master分支远程是main分支,这里如果没有添加README就直接master就好因为什么都没有github空仓库默认没有分支,你上传上去就是master

git branch -m master main # 重命名本地的 master 分支为 main

git pull origin main
git push origin main #之后就省事了push,pull就ok


如果从合作者角度来说git clone更为合适
1
git clone git@github.com:DocJlm/AIPlatform.git

图4
IDEA我感觉也没简单到哪去。。。
然后还是要注意冲突问题,下面有两个建议:
1.团队开发的时候避免在同一个文件中改代码
2.在修改一个文件前,先pull再push

Git Bash

其实上面已经涉及了不少了。然后这里还会涉及一个fork操作不过这是跨团队合作目前来看也用不到,一些基本操作和逻辑还是一样的。我就挑重点和核心说了,一些没讲到但是也比较重要的比如log,reflog,reset等也是需要掌握的,删除没啥说的就rm之后三件套(add commit push),恢复看“指针”就行。

分支

一般来说一个新的独立功能会选择新开一个分支,好处显而易见:并行开发,大大提高效率,增加容错,给我开一个分支我写完直接删了就行()。
图5
可以自己动手操作一下分支合并解决相应冲突问题。
图6
图7
后续整合之后add commit即可。

接受邀请

建仓者创建邀请
图8
打开链接,accept就好。

比较完整的流程

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
git clone https://github.com/...

git checkout -b feature/user-login # 示例:创建"用户登录"功能分支这里指的是创建并使用新的分支可以看出来比较简洁,在 Git 分支命名里,通常采用 “类型 / 描述” 的格式,用于开发新功能,命名以 feature/ 开头, 后面接功能的具体描述。

git status # 查看哪些文件被修改、新增或删除

git add .

git commit -m "完成用户登录功能"

# 切换到主分支
git checkout main

# 拉取远程主分支最新代码
git pull origin main

# 切回自己的工作分支
git checkout feature/user-login

# 将主分支的最新代码合并到自己分支
git merge main

git push origin feature/user-login

# 如果是首次推送该分支,Git 会提示设置上游分支(不一定有)
git push --set-upstream origin feature/user-login
本身远程库只有一个main分支,执行完这个命令之后Git会在远程
仓库中新建一个同名的 feature/user-login分支,同时将本
地分支的代码推送到这个新建的远程分支并建立本地分支与远
程分支的关联(上游分支关系)。后续再向远程推送本地分支
的更新时,就不需要每次都指定远程仓库名和远程分支名了,直接
执行git push 即可。Git 会自动根据上游分支的设置,将本
地分支推送到对应的远程分支上。例如,当你又做了一些修改
并提交到本地分支后,只需要简单地执行git push,Git 就能
把这些修改推送到远程仓库的feature/user-login分支上。在
需要获取远程分支的最新代码时,执行git pull,Git 会自动
从上游分支(也就是和本地分支关联的远程分支)拉取最新的
代码,并尝试合并到本地分支。比如团队里其他成员对远
程的feature/user-login分支做了修改并推送上去了,你
在本地执行git pull,就能快速将这些更新拉取到本地,
方便继续开发。

# 手动发起合并请求(PR)并经过审核
1.在 GitHub 上找到 feature/user-login 分支,
点击 “New pull request”
2.选择合并目标为 main 分支,填写功能说明后提交 PR
3.审核
4.若审核通过,点击 “Merge pull request” 完成合并

# 切换到主分支
git checkout main

# 拉取最新代码(包含已合并的你的修改)
git pull origin main

# 删除本地工作分支(可选,保持分支整洁)
git branch -d feature/user-login

简化版本

其实建立空仓库(不让github自己添加README)和自己项目关联没必要pull,下面是简化步骤

1
2
3
4
5
6
git init

git remote add origin https://github.com/DocJlm/AIPlatform.git #关联远程仓库,起别名一般喜欢叫origin

git push origin master

结语

其实我不是很理解为啥github上面之前默认分支是master,现在改成main,查了下说主人这个意思嗯嗯,反正master第一印象在我脑子里是大师,功夫熊猫。。。也是多少有点逆天了!