1 简介

Git的一大优点就是可以整合全世界的开发人员,当然在公司内部,使用Git多是作为版本管理工具,作为团队内协作并行开发的工作,而Git的另外一个极为大的应用,便是跨团队协作,一种可能的情形是单位内的代码在开发某项功能时,对于某个问题并不擅长,因此此时可以求助于网络上的众多开发人员,但把项目托关于开源服务器上之后,又不能让陌生的开发者随意提交,因此在开发人员提交之后,需要有一个审核的过程,这便是fork-pull requet-merge的工作流程。

2 材料

1, GitHub账户 yanchenmochen
2, GitHub账户 yanchenxiaosa

2 操作步骤

首先第三方账户要fork一份现有库的代码。

2.1 拷贝仓库url

使用自己的账户登录GitHub,拷贝url

2.2 Fork项目

退出当前账号,使用不在团队内的github账户登录github。输入拷贝的网址,选择Fork

点击Fork,弹出如下界面,表示正在拷贝项目

之后弹出的界面为:

注意:箭头指示的地方表示yanchenxiaosa现在是当前项目的所有者,而该项目是由yanchenmochen/huashan 使用fork操作生成的。下方表明了fork的来源。

至此Fork项目完成

2.3 团队外帐户克隆、修改、commit

2.3.1 git clone

由于git clone是读操作,因此不需要输入用户名和密码进行验证。

全恒@Lenovo-PC MINGW64 /d/Git/huashan_east
$ git clone https://github.com/yanchenxiaosa/huashan.git
Cloning into 'huashan'...
remote: Counting objects: 9, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 9 (delta 0), reused 9 (delta 0), pack-reused 0
Unpacking objects: 100% (9/9), done.

yanchenxiaosa账户克隆了自己的一般代码,由于该项目从yanchenmochen/huashan fork而来,因此完全一样的。直接使用git clone,yanchenxiaosa即可获取一套本地库代码。

2.3.2 开发修改代码

全恒@Lenovo-PC MINGW64 /d/Git/huashan_east/huashan (master)
$ vim huashanjianfa.txt全恒@Lenovo-PC MINGW64 /d/Git/huashan_east/huashan (master)
$ ls
apple.txt  huashanjianfa.txt全恒@Lenovo-PC MINGW64 /d/Git/huashan_east/huashan (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git checkout -- <file>..." to discard changes in working directory)modified:   huashanjianfa.txtno changes added to commit (use "git add" and/or "git commit -a")全恒@Lenovo-PC MINGW64 /d/Git/huashan_east/huashan (master)
$ git add huashanjianfa.txt全恒@Lenovo-PC MINGW64 /d/Git/huashan_east/huashan (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.Changes to be committed:(use "git reset HEAD <file>..." to unstage)modified:   huashanjianfa.txt全恒@Lenovo-PC MINGW64 /d/Git/huashan_east/huashan (master)
$ git commit -m "kuihua"
[master 2df164d] kuihua1 file changed, 1 insertion(+)全恒@Lenovo-PC MINGW64 /d/Git/huashan_east/huashan (master)
$ git remote -v
origin  https://github.com/yanchenxiaosa/huashan.git (fetch)
origin  https://github.com/yanchenxiaosa/huashan.git (push)

上述的代码片段表示yanchenxiaosa在自己的开发机环境提交了一份代码。
推送到远端之前,需要在本地项目配置自己的用户名和邮箱信息,这里使用git config命令,不加—global表示这个配置仅在当前项目生效。

注意:上述yanchenxiaosa账户在自己的电脑上开发,修改,commit表名该fork的项目为自己独有的,与原来的项目是完全并行的。

2.3.3 团队为开发者配置自己信息以便推送自己远端仓库

全恒@Lenovo-PC MINGW64 /d/Git/huashan_east/huashan (master)
$ git config user.name yanchenxiaosa
全恒@Lenovo-PC MINGW64 /d/Git/huashan_east/huashan (master)
$ git config user.name yanchenxiaosa@666.com全恒@Lenovo-PC MINGW64 /d/Git/huashan_east/huashan (master)
$ cat .git/config
[core]repositoryformatversion = 0filemode = falsebare = falselogallrefupdates = truesymlinks = falseignorecase = true
[remote "origin"]url = https://github.com/yanchenxiaosa/huashan.gitfetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]remote = originmerge = refs/heads/master
[user]name = yanchenxiaosa@666.com

此时把yanchenxiaosa的这次提交推送到远端

2.3.4 推送到远端

全恒@Lenovo-PC MINGW64 /d/Git/huashan_east/huashan (master)
$ git push origin master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 426 bytes | 426.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/yanchenxiaosa/huashan.git! [remote rejected] master -> master (permission denied)
error: failed to push some refs to 'https://github.com/yanchenxiaosa/huashan.git'

报错原因是因为win8系统的凭据管理器自动保存了之前github账户yanchenmochen的用户名和密码信息,使用Win+r –>控制面板->用户账户和家庭安全->凭据管理器中删去为github网站保存的凭据。

注意:由于自己是在一个电脑上模拟fork,pull request等完整的过程,因此会存在凭据管理器自动保存某个git hub凭据的问题。


再次上传

$ git push origin master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 426 bytes | 426.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/yanchenxiaosa/huashan.git! [remote rejected] master -> master (permission denied)
error: failed to push some refs to 'https://github.com/yanchenxiaosa/huashan.git'


尴尬,刚才删去的是Web凭据,好像应该删去Windows 凭据,删掉再次运行。
$ git push origin master
正常弹出登录界面,输入yanchenxiaosa的用户名和密码:

全恒@Lenovo-PC MINGW64 /d/Git/huashan_east/huashan (master)
$ git push origin master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 426 bytes | 213.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/yanchenxiaosa/huashan.git299ac0b..2df164d  master -> master

再观察凭据管理器,重新产生了一个凭据

而以yanchenxiaosa账户登录github,可以看到这次新的提交:

2.3.5 总结fork

fork的含义是fork别人的项目为自己所有,相当于你克隆了一份一模一样的项目,但项目的所属人为自己,因此之后自己可以随意的进行修改,提交,fork之前的提交与原有项目保持一致,而之后的提交自己可以自由发挥。
Fork
 本地修改,然后推送到远程
 Pull request
 审核。

2.4 pull requet 审核

2.4.1 团队外成员发起pull request


进入,可以看到直接跳转到了yanchenmochen/huashan项目了


可以看到点击Create pull request会弹出如下界面,表示创建pull-request已经成功了。

2.4.2 项目所属人审核沟通

此时使用yanchenmochen账户登录github,进入yanchenmochen/huashan项目,可以看到Pull request数字为1,点击进去

点击进去

项目所属人对团队外提交的代码提出质疑

yanchenmochen对yanchenxiaosa提交的代码发出疑问,从这里看,github也是个聊天的地方。使用yanchenxiaosa再次登陆即可看到聊天记录。

2.4.3 Merge提交到项目

再次以yanchenmochen的账户登录,可以看到信息。其中Merge pull request表示merge操作。

点击Merge pull request。

出现结果:

再次删掉凭据,进入huashan目录,此时yanchenmochen开发环境本地库并没有这次yanchenxiaosa所做的提交。

$ git pull origin master
remote: Counting objects: 7, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 7 (delta 0), reused 6 (delta 0), pack-reused 0
Unpacking objects: 100% (7/7), done.
From https://github.com/yanchenmochen/huashan* branch            master     -> FETCH_HEAD299ac0b..e272901  master     -> origin/master
Updating 299ac0b..e272901
Fast-forwardapple.txt         | 3 ++-huashanjianfa.txt | 1 +2 files changed, 3 insertions(+), 1 deletion(-)全恒@Lenovo-PC MINGW64 /d/Git/huashanlunjian (master)
$ cat apple.txt
This an apple
edited by yanchenxiaosa

至此,整个跨团队协作的流程走完。

3 总结

使用Git进行团队内开发或者团队外协作开发,熟悉开发过程的流程,了解基本过程,对于熟练使用Git非常有必要。
本文档参考尚硅谷Git&GitHub教程

Git跨团队协作和Win7凭据管理器相关推荐

  1. git学习(九)跨团队协作-非团队成员参与git项目开发

    资料来自 B站 尚硅谷,侵权删 跨团队协作开发流程 fork流程 1.拿到源仓库的HTTPS地址 微信或其他的途径,将HTTPS链接发送给协作开发的人(非团队内部人员) 这里登录另外一个账户为例 登录 ...

  2. git的团队协作开发

    title: git的团队协作开发 date: 2018-04-24 14:00:03 tags: [git] --- 项目负责人创建组织架构 在控制面板中点击组织按钮,添加组织,在这里可以把组织理解 ...

  3. 跨团队协作:提高团队生产力的 7 种策略

    "一根筷子很容易就折断了,但是很多根筷子放在一起却不容易折断",这便体现出一个人的力量是有限的,但是多个人的力量却是无穷的,可见团队合作的重要性. 团队合作对于高效工作和取得成果都 ...

  4. 如何做好一个跨团队协作项目

    NO.0 前言 背景 入职阿里从双十一会场前端PM到平台项目等PM大大小小的担任了不少,自认为是老司机,不想还是踩了坑,这段时间好好地回想了下这次项目中的一些问题,根据个人经验整理了这篇文章,方便后续 ...

  5. win7 凭据管理无法保存

    win7 凭据管理无法保存 windows 凭据管理器有时候无法保存用户名和密码,有以下两种方式解决: @ 方法1:使用命令添加,打开 cmd 输入以下命令: cmdkey /add:PC-W10 / ...

  6. 记一次git 之windows凭据管理器引发的xx

    前言 用了上一任的电脑进行开发,由于用git托管项目时,习惯了配置ssl通过秘钥方式访问项目,所以忽略了https方式访问的用户名密码. 问题出现 公司规范发布需要采用maven插件 <arti ...

  7. 【生活工作经验 五】如何有效的跨团队协作

    跨团队协作还是很重要的,最近一段时间没少做跨团队协作的事情,有很多困惑,经过一番交流,倒也得出一些颇有益处的结论.分两个维度说说吧,作为被协调者.作为协调者. 作为被协调者 作为被协调者来说,没说的. ...

  8. win7 凭据管理 永久性-企业 和 永久性-登录会话

    win7 凭据管理 '永久性:企业' 和 '永久性:登录会话' 在使用打印机共享或目录共享的时候,不管是添加windows凭据还是普通凭据,必须是 '永久性:企业' 才可以永久保存密码 如果是 '永久 ...

  9. 【QT】将指定ip添加到凭据管理器

    一.前言 写下本文是因为客户提出能不能直接在浏览器里向控制面板中的凭据管理器添加指定IP的功能. 在中文引擎搜索了很久没发现相关的资料记录,最后在 stackoverflow上搜索到了相关解决方案,不 ...

最新文章

  1. Spring 定时任务之 @Scheduled cron表达式
  2. 树,森林与二叉树之间的转换
  3. python学习之老男孩python全栈第九期_day004知识点总结
  4. Eclipse新建的Maven项目想修改DynamicWebModule,直接去项目目录下修改
  5. Activity Monitor 闪退 无法进入睡眠
  6. 如何使用 Entity Framework 的 DbContext
  7. androidpn 推送初探
  8. JAVA程序员面试32问(价值8k)你认同吗?
  9. 底层网工、0基础、记性差,学习CCIE/HCIE,到底是啥体验?
  10. 重新安装OFFICE2010失败
  11. 托福网考网上报名程序说明
  12. 数据透视表的切片器实现数据动态交互
  13. 初识Kodu开发软件---Kodu少儿编程第三天
  14. 用JAVA算养鸡大户王大喜_养鸡大户王大喜,用百钱买百鸡,公鸡每只5元整,3元一只是母鸡,小小鸡崽价钱低,1元正好买三只,公鸡母鸡和小鸡,请你算算各...
  15. 了解美杜莎(Medusa)
  16. 苹果电脑win10蓝牙音响卡顿_解决Macbook Pro下Win10双系统蓝牙鼠标无法连接及卡顿...
  17. maven-surefire-plugin插件的使用
  18. 东北大学计算机硬件题库,东北大学计算机硬件基础机考题库(150单选+编程)..pdf...
  19. 10.java正则表达式URL匹配
  20. cad快速看图电脑版使用

热门文章

  1. 设计模式:仲裁者(Mediator)模式
  2. 理想国pandas练习题4
  3. nginx worker shutting down状态超时退出配置
  4. c51单片机时钟c语言程序设计,51单片机C编程(六、定时器时钟显示时分秒)
  5. 推荐这三款亲测好用的ai工具
  6. NCCL (NVIDIA Collective Communications Library)
  7. 项目4-分数类和整型数的四则运算
  8. 需求调研中要注意的三点
  9. 架构设计实践思路:什么是架构,怎么画架构图?
  10. Python os.symlink创建软链接