GitHub 项目协同保姆级教程

309 阅读6分钟

一. 安装Git

去Git官网,下载安装包,一路点next,默认安装。

juejin.cn/post/697542… 这篇教程很全面

安装之后,在任意空白处右键,菜单显示有 Git GUI Here 和 Git Bash Here ,

表示Git安装成功。

image.png

【报错】git安装之后,执行命令显示git不是内部或外部命令,也不是可运行的程序。

安装git之后,在终端输入git命令可能出现如下情况

image.png

  1. 首先确认是否已经成功安装git,在电脑卸载程序界面看一下,有git代表安装成功了。 如果成功安装,就是没有配置环境变量引起的

  2. 配置完环境变量需要重开终端,如果是在IDE的终端也需要重开。这一步很重要,我在这里卡了很久。

二. 配置Git

1.新建文件夹,为防止出错,最好保证该文件夹目录都是英文。

2.打开新建文件夹,空白处右键,菜单中选择 Git Bash here ,弹出命令行,输入命令 git init ,目录下会生成一个新的 .git的文件夹,用于本地代码仓库。

3.配置本地仓库的账号和邮箱

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

4.为了避免每次远程访问需要输密码,将使用ssh登陆。ssh应该与本机信息绑定。查看自己电脑 C:\Users\Administrator 目录下是否有 .ssh 文件夹。如果没有就需要生成。

$ ssh-keygen -t rsa -C "youremail@example.com"

按 Enter 键一直到结束。

5.ssh只是本地详细,需要在Github中备份,才能被验证。打开自己的Github,在My Profile中,点击Add Public Key,title随意。

6.key中的内容在本机C盘中,C:\Users\Administrator,里面有个.ssh文件夹,用文本文档打开 id_rsa.pub ,将里面的内容全部复制到key中,即可

7.到此配置完毕,

三、克隆项目

开始克隆项目,后在Git Bash here或者其他终端中输入:

$ git clone git@github.com:michaelliao/gitskills.git

git clone 后面是需要克隆的项目地址

【注意】克隆指定分支

git clone默认克隆 master 分支。但是很多大型项目的master是保护分支,主要代码在其他分支上,所以克隆的时候要仔细观察代码库。 如果需要克隆制定分支,命令为

 git clone -b <指定分支名> <项目地址>

【提示】克隆项目之后可以查看远程主机地址

$ git remote -v : 查看远程主机的地址

四、提交PR流程及注意事项

开发时建立并切换自己的新分支

$ git checkout -b support/fixdocs:新建分支 support/fixdocs , 并切换到该分支。

- 分支命名需要注意:
    - 分支的命名要表明这个分支要实现的**功能**
     -   例子中以 support/xx 命名的分支会**自动折叠**到 support 文件夹,
     -   对于同一个 PR,每次修改都需要提交到**同一个分支**
  1. $ git status: 检查所在分支修改过的文件

提交流程

  1. $ git add <被修改的文件名> : 把被修改的文件提交到暂存区

    • git add 之前要注意:
      • 及时保存,否则可能导致编辑内容丢失
      • 无用注释删掉,不需要的代码可以删掉
      • 无关代码段之间加空行隔开,提高代码可读性
      • 注释必须紧挨关联代码
      • 文件提交之前查看工作树,核对修改部分
      • 变量、 方法命名要有代表性
      • 重复用到(2次及以上)的代码段可以提升为新的变量或方法

image.png上面例子中第六行的空格应该删掉

  1. $ git commit -m "<type>(<scope>): <short summary>" : 把修改的代码提交到当前分支,commit 信息格式参考:github.com/angular/ang… ,或者参考 github 仓库历史提交

  2. $ git push origin <本地分支名> : 将当前分支推送到自己的远程仓库, 到这一步就大功告成啦

  3. 重新提交相同的文件要重新从 master 上拉去新的分支,再提交

  4. 新同学还没有成为项目成员的过渡时期,不能直接提交 PR 到小组的项目上,

    • 需要先将项目fork到自己的仓库中,
    • 再将远程仓库 clone 到本地,
    • 提交 PR ,要先提交到自己 clone 的地址

五、提交 PR 之后 CI 不过的原因及解决办法:

  1. 可能因为环境不稳定等其他问题,可以重跑一下试试

image.png 2. 提交之前先在本地测试,如果项目里有供我们测试的项目,一般在 /examples 或者 /test 文件夹中,验证步骤:

  • $ cd 测试项目文件夹
  • $ npm run dev ,每个项目的运行方式可能不一样,看一下 配置文件或者package.json 或者问问团队师兄。
  • 排查代码内容问题
  1. 可能因为 master 上更新的内容和我们提交的内容有冲突 ,导致我们的 CI 挂了,可以重新拉取最新分支:

    1. $ git fetch origin 拉取远端分支到本地
    2. $ git merge upstream/master 合并 master 分支
    3. 祝大家合并分支万事大吉,否则就要进入下面的步骤

六、合并分支失败的解决办法

  1. 如果找不到问题症结所在,可以 $ git reflog 查看日志,找到合并分支出问题的那次操作,加 - h 可以查看更多帮助

image.png 然后 git reset <版本号> --hard 将本地项目回溯到对应操作之前版本。

  1. 切换空间到 master 主干分支上: $ git checkout master
  2. 更新master代码到本地: $ git pull origin master
  3. 切换到自己的工作分支: $ git checkout <工作分支>
  4. 合并主干到自己的分支: $ git merge master

执行完上述操作,查看工作树,没有冲突可以直接 $ git stash pop ,如果工作树显示如下图则表示有 image.png “合并更改“里的文件就是有冲突需要我们手动处理的文件

  1. 解决冲突:

代码内容或依赖配置冲突

  • 如果 master 分支上合并的内容和本地内容的冲突 git 无法帮我们自动解决,就需要我们手动解决冲突啦~Git用 <<<<<<<,=======,>>>>>>> 标记分离不同分支的内容,将需要保留的修改内容与 master 分支的更新合并即可解决冲突。

image.png 可以点击 'Accept Incoming Change'(合并过来的 master 分支的内容) 或者 'Accept Current Change' (本地修改的内容)以选择最终保留的部分。

有依赖版本冲突

  • 如果项目中有依赖版本冲突,需要清除项目各层依赖:$ git clean -dfx ,然后在重新安装依赖 $ pnpm i

  • 如果 package.json 配置文件有冲突,要处理冲突之后重新安装依赖

  • 重新安装依赖之后会有文档更新,$ git status 检查变更文件,$ git add <被修改的文件名> 添加到暂存区再进行后续操作


  1. $ git commit --no-verify: merge 操作之后会自动提交,提交时会把提交的文件自动和 (我们不需要考虑的)commit 规则对比,这个命令可以避免对比出问题导致报错。
  2. $ git diff master --stats: 比较文件的不同,即比较文件在暂存区和工作区的差异。
  3. $ git push origin --force: 强制推送到远端,并覆盖之前的提交

避免多次 merge 污染提交记录,可以使用 rebase:

  1. git fetch origin feature/lint  
  2. git rebase 就可以了

撤销已经 push 的内容

撤销到 commit 之前的状态,可以选择撤销前面几次的提交 git reset --soft HEAD~2   然后push 的时候 -f 就可以强制覆盖前面的提交了;会把撤回的几次提交记录都覆盖;

拉取项目中指定分支

image.png

git 拉取指定分支 dev

git pull origin dev

参考: blog.csdn.net/benben_2015…

其他常用 git 终端命令

  1. git reflog 查看日志  git reflog -h 帮助功能
  2. git diff master -h (帮助)
  3. git diff master --stats
  4. git push force —upstream,强制推送到远端,并覆盖之前的提交
  5. git branch -d < branch > 删除一个分支
  6. 如果公司的项目使用 tnpm 或者 pnpm 安装以来的,那么在开发规程中不要一时手贱 npm 和 pnpm 、tnpm 混着用了,否则项目跑不起来都不知道为什么
  7. git remote add origin 仓库链接
  8. git push -u origin master: 默认每次推送到 master 分支上