Git跨团队协作和Win7凭据管理器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lk142500/article/details/82893527

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.txt

no 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] kuihua
 1 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的项目为自己独有的,与原来的项目是完全并行的。

扫描二维码关注公众号,回复: 3738753 查看本文章

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 [email protected]

全恒@Lenovo-PC MINGW64 /d/Git/huashan_east/huashan (master)
$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = false
        ignorecase = true
[remote "origin"]
        url = https://github.com/yanchenxiaosa/huashan.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
[user]
        name = [email protected]

此时把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.git
   299ac0b..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_HEAD
   299ac0b..e272901  master     -> origin/master
Updating 299ac0b..e272901
Fast-forward
 apple.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教程

猜你喜欢

转载自blog.csdn.net/lk142500/article/details/82893527
今日推荐