GitHub多人协作简明教程

本文面向了解git的基本命令但是不熟悉如何使用GitHub进行多人协作开发项目的同学。

为简单起见,这里只设定有两个开发人员,HuanianLiDaxiangLi。他们在GitHub上的地址为:

  • HuanianLi: https://github.com/huanianli  # host  developer
  • DaxiangLi: https://github.com/daxiangli  # guest developer

HuanianLi将创建一个项目kaiba, 然后邀请DaxiangLi来一起开发。

1. 在GitHub上创建两个帐号(HuanianLi and DaxiangLi),(这里以HuanianLi为例)

1.1 打开GitHub的主页: https://github.com/

1.2 点击右上角的Sign up

1.3 跳转到注册页面后,开始Create your personal account,按照要求输入Username, Email Address, Password, 例如:

1.4 点击页面下方的"Create an account"按钮并按照后续提示完成注册。

2. 在Linux桌面上创建两个用户(huanianli and daxiangli), (这里以huanianli为例)

2.1 创建用户huanianli

[email protected]:~# useradd -d /home/huanianli -m -s /bin/bash -c "Huanian Li" huanianli

2.2 对用户huanianli的git进行设置 (这里直接编辑文件~/.gitconfig)

[email protected]:~$ vim ~/.gitconfig
[email protected]:~$ cat -n ~/.gitconfig
     1    [user]
     2        email = [email protected]
     3        name = Huanian Li
     4    [core]
     5        editor = vim
     6    [push]
     7        default = matching
[email protected]:~$
[email protected]:~$ git config -l
user.email=[email protected]
user.name=Huanian Li
core.editor=vim
push.default=matching
[email protected]:~$ 

2.3 在huanianli的HOME目录下创建一个工作空间workspace

[email protected]:~$ cd ~
[email protected]:~$ mkdir workspace
[email protected]:~$ ls
workspace
[email protected]:~$ 

3. (Host Developer) HuanianLi在GitHub上创建一个项目kaiba

3.1 登录HuanianLi的GitHub空间,打开页面Repositories, e.g.

https://github.com/HuanianLi?tab=repositories

点击页面右边的New按钮, 进入创建一个新的代码仓库的页面。

点击"Create repository"完成创建。

3.2 进入HuanianLi的Linux桌面,clone在3.1创建的项目kaiba

[email protected]:~$ cd workspace
[email protected]:~/workspace$ git clone https://github.com/HuanianLi/kaiba.git
Cloning into ‘kaiba‘...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
[email protected]:~/workspace$ ls
kaiba
[email protected]:~/workspace$ cd kaiba
[email protected]:~/workspace/kaiba$ vi README.md
[email protected]:~/workspace/kaiba$ cat -n README.md
     1    kaiba: A sandbox project of Kaiba
[email protected]:~/workspace/kaiba$
[email protected]:~/workspace/kaiba$ git add README.md
[email protected]:~/workspace/kaiba$
[email protected]:~/workspace/kaiba$ git commit -m "Initialize the project by adding README.md"
[master (root-commit) c0bd2ed] Initialize the project by adding README.md
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
[email protected]:~/workspace/kaiba$
[email protected]:~/workspace/kaiba$ git log
commit c0bd2ed35e10180209726199af422a63a007355f
Author: Huanian Li <[email protected]>
Date:   Wed Jul 25 16:21:43 2018 +0800

    Initialize the project by adding README.md
[email protected]:~/workspace/kaiba$
[email protected]:~/workspace/kaiba$ git branch
* master
[email protected]:~/workspace/kaiba$
[email protected]:~/workspace/kaiba$ git push -u origin master
Username for ‘https://github.com‘: HuanianLi
Password for ‘https://[email protected]‘:
Counting objects: 3, done.
Writing objects: 100% (3/3), 273 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/HuanianLi/kaiba.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.
[email protected]:~/workspace/kaiba$

在上面的操作中,关键的步骤是:

  • clone
git clone https://github.com/HuanianLi/kaiba.git
  • push
git push -u origin master

注意: 因为是第一次push, ‘-u’ 是必须的。

3.3 一旦完成git push之后,我们就可以浏览GitHub上的项目了

4. (Guest Developer) DaxiangLi登录他的GitHub,  然后进入(Host Developer) HuanianLi的GitHub空间,fork项目kaiba

4.1 DaxiangLi登录他的GitHub

4.2 进入(Host Developer) HuanianLi的GitHub空间, 点开项目kaiba

注意: 目前的 Fork 为0。

4.3 fork项目kaiba, 直接点Fork按钮

Fork 结束后, DaxiangLi的GitHub里就有了项目kaiba

5. (Guest Developer)DaxiangLi贡献代码给项目kaiba

5.1 DaxiangLi在他的Linux桌面上clone代码

[email protected]:~/workspace$ git clone https://github.com/DaxiangLi/kaiba.git
Cloning into ‘kaiba‘...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
Checking connectivity... done.

两个问题:

  • DaxiangLi 能直接clone HuanianLi的GitHub里的代码吗?  A: 能。
  • DaxiangLi 能直接clone HuanianLi的GitHub里的代码,然后做修改后push回去吗? A: 不能。

5.2 DaxiangLi新建一个开发分支

[email protected]:~/workspace/kaiba$ git checkout -b dev
Switched to a new branch ‘dev‘

其中, git checkout -b dev 等同于

1 git branch   dev
2 git checkout dev

5.3 把HuanianLi的项目添加到DaxiangLi的远程仓库

[email protected]:~/workspace/kaiba$ git remote add upstream https://github.com/HuanianLi/kaiba.git

5.4 将HuanianLi的分支取下来

[email protected]:~/workspace/kaiba$ git remote update
Fetching origin
Fetching upstream
From https://github.com/HuanianLi/kaiba
 * [new branch]      master     -> upstream/master

5.5 将HuanianLi的master分支更新到本地

[email protected]:~/workspace/kaiba$ git fetch upstream master
From https://github.com/HuanianLi/kaiba
 * branch            master     -> FETCH_HEAD

5.6 合并HuanianLi的分支到本地(注意:这一步在第一次其实不需要)

[email protected]:~/workspace/kaiba$ git rebase upstream/master
Current branch dev is up to date.

5.7 DaxiangLi添加一个文件并提交commit

[email protected]:~/workspace/kaiba$ git add foo.py
[email protected]:~/workspace/kaiba$ git commit -m "DaxiangLi: Add foo.py"
[email protected]:~/workspace/kaiba$ git push -u origin dev 

5.8 进入DaxiangLi的GitHub, 提交一个PR

Q: 什么是PR?

A: PR是Pull Request的缩写,是开发者使用GitHub进行协作的利器。简单来说,Pull Request是一种机制,让开发者告诉项目成员一个功能已经完成。一旦feature分支开发完毕,开发者使用GitHub账号提交一个Pull Request。它告诉所有参与者,他们需要审查代码,并将代码并入master分支。Pull Request不只是一个通知,还是一个专注于某个提议功能的讨论版面。Pull Request 需要两个不同的分支或是两个不同的仓库, 其工作原理大概是:

  1. 开发者在他们的本地仓库中为某个功能创建一个专门的分支;
  2. 开发者将分支推送到公共的GitHub仓库;
  3. 开发者用GitHub发起一个Pull Request;
  4. 其余的团队成员审查代码,讨论并且做出修改;
  5. 项目维护者将这个功能并入官方的仓库,然后关闭这个Pull Request。

现在点击Compare & pull request按钮,就创建一个PR,

点页面下方的"Create pull request"按钮即可。 生成的PR看起来是这样的:

6. (Host Developer) HuanianLi 查看PR并Merge

6.1 HuanianLi查看PR

HuanianLi可能在PR中加入comment, 要求DaxiangLi做相应的修改。 这里为简单起见,直接Review通过。

6.2 Huanli 点Merge pull request

到此为止,DaxiangLi成功地给HuanianLi贡献了一次代码!! 当然,这次贡献过程异常简单,因为未涉及到冲突解决。接下来将介绍更复杂的情况,这才是重点:-)

7. HuanianLi 查看kaiba并删除无用的commit

7.1 使用git pull更新本地空间

[email protected]:~/workspace/kaiba$ git pull
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (4/4), done.
From https://github.com/HuanianLi/kaiba
   c0bd2ed..b8a0b63  master     -> origin/master
Updating c0bd2ed..b8a0b63
Fast-forward
 foo.py | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
 create mode 100644 foo.py

注意: 在顶端的commit不是我们想要的,需要把它移除掉。

commit b8a0b63d8b18f8466e79284ed6022340ca5a43a8
Merge: c0bd2ed 640f6f6
Author: Huanian Li <41667254[email protected]>
Date:   Wed Jul 25 18:55:02 2018 +0800

    Merge pull request #1 from DaxiangLi/dev

    DaxiangLi: Add foo.py

7.2 使用git rebase -i移除不需要的commit

[email protected]:~/workspace/kaiba$ git rebase -i c0bd2ed35e10180209726199af422a63a007355f
Successfully rebased and updated refs/heads/master.

在弹出的交互界面中不做任何修改,直接保存退出即可。

7.3 使用git push --force强制更新远端的master分支

[email protected]:~/workspace/kaiba$ git push --force
Username for ‘https://github.com‘: HuanianLi
Password for ‘https://[email protected]‘:
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/HuanianLi/kaiba.git
 + b8a0b63...640f6f6 master -> master (forced update)

这下清爽啦!!

。。。TBD .....

参考资料:

原文地址:https://www.cnblogs.com/idorax/p/9366035.html

时间: 2024-08-01 11:34:46

GitHub多人协作简明教程的相关文章

GitHub 多人协作开发 三种方式:

GitHub 多人协作开发 三种方式: 一.Fork 方式 网上介绍比较多的方式(比较大型的开源项目,比如cocos2d-x) 开发者 fork 自己生成一个独立的分支,跟主分支完全独立,pull代码后,项目维护者可根据代码质量决定是否merge代码 此方式网上方法比较多,这里不详细描述 二.组织 组织的所有者可以针对不同的代码仓库建立不同访问权限的团队. Accounts Settings => Organizations =>Create new Organizations 新建一个组织

学习github(3) -- 同步到github多人协作

1,将我们本地开发的代码同步到远程仓库 git push 远程仓库名 仓库分支. 远程仓库名可以用 git remote获取.git remote 可以看到origin, origin 就是默认的远程仓库名. git push origin master 的意思是 git push origin master:master (将本地的 master 分支推送至远端的 master 分支,如果没有就新建一个) 2,添加协作者 在github网站,进入我们的项目 点击第二行最右侧的Settings,

GitHub多人协作

首先还是先在GitHub上新建一个项目并复制链接地址,然后在git上面用切换的要放的路径:我的文件都在GitHub上,路径就是cd GitHub/git ,然后git clone 链接地址,这时候一定要记得切换路径到cd jd(你建的项目的名字),git add index.html,git commit -m "haha", git push这样就拷贝到本地了! 这个先写到这,还有很多没学,比如虚拟机 所以先写到这

Android github 快速实现多人协作

前言:最近要做github多人协作,也就是多人开发.搜索了一些资料,千篇一律,而且操作麻烦.今天就整理一下,github多人协作的简单实现方法. 下面的教程不会出现:公钥.组织.team.pull request 1.首先小张在github上创建一个仓库,比如叫做: GlideDemo 2. 小张开始邀请小王       创建仓库后,然后开始添加 小王了. 注意在第三步的时候,要输入小王的github用户名.       3.小王接收小张的邀请      小王在github 登录自己的账户,登录

Git之Eclipece提交项目到Github并实现多人协作

一.Eclipece提交项目到Github 见  eclipse提交项目到github 二.利用github组织实现多人协作 1.新建组织: New organization 1.1.填表(1.组织名   2.邮箱   3.免费公开仓库   4.创建) 2.组织管理 2.1添加团队: 2.2.添加组织的仓库: 2.3.添加成员:(添加成员之后,需要在邮箱里确认) 3.多人协作 3.1团队成员都从eclipse中拉取组织中的仓库 GIT视图->clone,按步骤来,与 eclipse提交项目到gi

Git教程之多人协作

当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin.要查看远程库的信息,用git remote:或者,用git remote -v显示更详细的信息:上面显示了可以抓取和推送的origin的地址.如果没有推送权限,就看不到push的地址. 推送分支推送分支,就是把该分支上的所有本地提交推送到远程库.推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上: $ git push origin

GitHub使用手册4——查看多人协作项目

一.克隆 Lighthouse 项目 这是一个正在进行多人协作的项目,是一个用于对渐进式网页应用进行审计.性能度量和提供最佳实践的应用. https://github.com/GoogleChrome/lighthouse 二.筛选协作者的commit 如何查明我们的协作者所完成的工作: 1.按 commit 作者分组 git shortlog  显示按字母顺序排序的人名列表,以及他们对应的提交说明 git shortlog -s -n  -s 仅显示 commit 的数量,-n 按数量排序 2

Git详细教程---多人协作开发

Git可以完成两件事情: 1. 版本控制 2.多人协作开发 如今的项目,规模越来越大,功能越来越多,需要有一个团队进行开发. 如果有多个开发人员共同开发一个项目,如何进行协作的呢. Git提供了一个非常好的解决方案 ---- 多人协作开发. 1.多人协作原理 典型的做法是,首先创建一个git服务器,被多个人所操作. 1.多人协助实现 分为如下几个步骤: 1.创建一个git裸服务器 (git init --bare) 2.从裸服务器将版本库克隆至本地(git clone ) 3.本地常规操作 4.

Git简明教程

[git教程] http://www.liaoxuefeng.com/ (廖雪峰博客) http://rogerdudler.github.io/git-guide/index.zh.html (Git简明教程) [常用命令] PS:在MacOS系统环境下的git命令. 工作流 你的本地仓库由 git 维护的三棵"树"组成. > 工作区,它持有实际文件夹. > 暂存区(Stage),它像个缓存区域,临时保存你的改动. > HEAD,它指向你最后一次提交的结果. 配置本