Git 团队协作项目操作说明
一、如何参与该项目
项目要求
- 文件(夹) 命名格式
- Leetcode 题放在 Leetcode_EveryDay 目录下,后期可以考虑添加剑指 offer、面经、每日分享等目录
- 按题分成不同文件夹,文件夹命名格式为
Topic+题号-英文题名
,如Topic1-two-sum
- 你刷的题请放在对应文件夹下,如果仓库中还没有的题,请新建对应文件夹,并在文件夹下添加
README.md
(最好是中英文题目内容+链接) - 刷的题请以
from-<github 昵称>-题名.java
格式命名,C++则以 cpp 结尾,github 昵称用来区分不同提交
- 加入项目的小伙伴只能操作自己的文件,不要删除其他人的文件(即 不要删除从原项目 clone 的内容 ,不要删除从原项目 clone 的内容,不要删除从原项目 clone 的内容)
二、clone 项目到本地
如图,最好选择 ssh
然后选择一个文件夹,通过 git clone [复制的链接]
将项目下载到本地(前提是已经装了 git,linux、mac 直接终端,Windows 用 git shell 或 git Desktop)
三、设置 fork 的项目与原项目同步
命令行方式(推荐)
先看下仓库下有什么,然后开始配置
查看所有分支, git branch -a
查看所有远程仓库, git remote -v
添加一个上游分支,指向原项目,即 git@github.com:josonle/Leetcode-solution-for-us.git
git remote add upstream git@github.com:josonle/Leetcode-solution-for-us.git
再次查看远程仓库,多了一个
先抓取上游分支的更新到本地, git fetch upstream
,upstream 是上面新建上游分支名
如下图,并且多了一个分支,本地分支 master,两个远程分支其中一个是源项目的
合并原项目的远程分支,然后 push 到自己 fork 的项目上去
git merge upstream/master
git push origin master
本地仓库里和网页上查看都更新了原项目的内容,如图
直接在 Web 页面操作
点击 compare
选择从原项目的 master 分支同步到 fork 项目(这里是 another-Lee/xxx)的 master 分支
其实上面的内容就是 fetch 原项目的更新内容,并对 fork 项目 pull request,操作如下图
然后再 Confirm merge,即可。如图,更新已同步
四、fork 的项目如何 pull request 到原项目
这里我们在 another-Lee 的本地仓库新建一个文件夹 Topic2-add-two-numbers
, 强调必须以【 Topic+题号+英文题名
】命名 ,里面随便放点啥,比如 from-anotherLee-add-two-numbers.java
。 再次强调,提交文件以【 from-<github 昵称>-题名.java
】命名,如果是 C++就用 cpp 结尾
先提交并推送到自己仓库去
$ git add .
$ git commit -m"from another-Lee:添加 addTwoNumbers"
$ git push origin master
强调,提交信息,必须是 from <github 昵称>:xxx 格式
网页上打开查看,如图是我们刚刚推送的更新
然后重点来了,向原项目 pull request
然后创建 pr
注意分支信息要设置的没问题,然后填写提交信息,标题最好不要修改(默认是 commit 信息)
然后 pull request 就结束了,后续就是我负责审核代码,并 merge 到原项目中去,fork 的项目也无法修改 pr 内容
到此就结束了,以下是介绍 Master 如何审核代码,处理 pr
原项目审核并处理 pull request
打开项目,可以发现 pr 有提示,然后我们可以查看更改的文件,给出审核结果
如图审核结果有三种:
- 评论,未经明确批准即提交一般反馈
- 批准,提交反馈并批准合并这些更改
- 请求更改,提交在合并之前必须解决的反馈
通过后,合并 pr,如图点击 Merge pull request,然后 confirm merge
最后,就这样了,项目中也多了 another-Lee 的 pr 过来的代码
附录
显示 git 配置信息
git config --global --list
显示全局配置信息,一般是提交用户的用户名和邮箱
# 可通过如下设置
git config --global user.name "username"
git config --global user.email "test@qq.com"
git config --local --list
显示当前仓库配置信息
git config --system --list
显示系统配置信息
解决本地多个 ssh key 问题
在 ssh-keygen 生成公私钥时通过 -f
参数指定生成文件的名称
多个 git 账号管理
清除全局 git 配置信息,就是 user.name 和 user.email 哪些,因为一个全局的配置只能为一个账号服务,两个账号验证时会冲突
git config --global --unset user.name
git config --global --unset user.email
在本地仓库里配置新的 name 和 email,不同账号区别开
git config user.name "xxx"
git config user.email "xxx@qq.com"
配置不同 ssh-key( -f
可以指定生成文件名),并在 /.ssh
下新建 config 文件,内容参考如下
Host git@github.com #随便取和下面区别即可
HostName github.com
User josonlee
IdentityFile ~/.ssh/id_rsa_github #指定验证文件
Host anothergithub.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_another
验证:
配置项目新的 remote 作用域
git remote rm origin #清空原有的
git remote add origin git@anothergithub.com:another-Lee/Leetcode-solution-for-us.git #举例第二个账号,网页上 git clone 处链接是`git@github.com:another-Lee/Leetcode-solution-for-us.git`,只是把 git@github.com 改成了 git@anothergithub.com(config 文件中指定的)
随便修改下啥然后提交 git push origin master
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 面试技术岗 你真能讲明白技术吗?
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论