Github协同开发攻略(纯命令行)

1.git 环境搭建

https://www.cnblogs.com/zhangyaolan/p/11105330.html

2.本地git与github相连

1.配置username,email

在电脑空白处(任意位置)右键点击Git Bash Here 输入

git config –global user.name github的用户名

git config –global user.email github绑定的邮箱

2.配置SSH key

现在可以进行git和github连接了,本地Git仓库和GitHub仓库之间的传输是通过SSH加密传输,先配置SSH Key

在电脑空白处(任意位置)右键点击Git Bash Here 输入,注意替换为自己的github注册邮箱地址

ssh-keygen -t rsa -C 2451433153@qq.com

之后回车,如果需要确认,则按照要求确认

创建公私钥成功后,去C:\Users\用户名\.ssh,找到公私钥文件,将pub文件(公钥)中内容复制


3.在github网址上,点击自己账号,点击Settings–New SSH keys,输入title,输入公钥,点击添加,如下图


3.回到Git Bash,输入ssh -T git@github.com ,输入yes,出现如下界面,说明公私钥配置完成。



3.成为某个项目(你要加入的)的协作者

项目所有者将你设置为协作者
4.使用SSH克隆远程仓库到本地

如之前已经克隆过,则需将develop分支的内容重新拉一下,防止本地不是最新的

先切换至本地develop分支git checkout develop

拉取远程仓库develop分支最新内容git pull origin develop

如果未克隆过则进行下列步骤

右键打开Gitbash(打开的位置即为要项目将要保存的位置)执行

git clone git@github.com:qianqiu-2020/FlexibleNetworks.git

克隆完毕后切换至develop分支

git checkout develop

创建自己的开发分支

git branch dev(自己随意起名)

切换至自己的分支

git checkout dev

5.在自己新建的分支里进行开发

开发时需要经常使用

git add . 添加所有文件(除了.gitignore文件中指定的不需要添加的文件)

git commit -m “注释,写明新做的功能或内容”

【拓展】管理分支总结

git branch 查看本地分支

git branch -r 查看远程分支

git branch -a 查看所有分支

6.完成了较大的更新时,需要提交到远程仓库时

先commit自己的分支本地仓库 后 切换至develop

git checkout develop

然后拉取远程仓库的develop分支到本地(防止其他人已经进行过更新)

git pull origin develop

之后将自己的分支合并(合并不会影响合并者,即dev)到develop中,在develop中执行如下命令

git merge dev

7.此时有可能需要解决冲突

【可能的报错,不是此错请看正常情况】

当你和其他人同时修改了相同文件,其他人push到远程仓库后,你再pull下来,然后进行merge(但dev分支的内容未保存时),就会提示:

error: Your local changes to the following files would be overwritten by merge:

XXXX文件
Please, commit your changes or stash them before you can merge.

解决方法:(遇到此问题原因是6步骤没有先commit操作)

先切换到dev分支中并commit到本地仓库,然后再切换至develop中进行merge

【正常情况】

这时候git会把冲突的地方告诉你,冲突文件会有如下提示信息:

| 12345 | ? <<<<<<< HEAD? xxx in master? =======? xxx in dev? >>>>>>> dev |

|-------|---------------------------------------------------------------------------|

意思是:

<<<<<<<标记冲突开始,后面跟的是当前分支中的内容。

=======之后,>>>>>>>之前,则是要merge过来的另一条分支上的代码。

>>>>>>>之后的dev是该分支的名字。

在本地解决完冲突后,重新commit,最后把你本地修改的文件push到服务器即可。

也可以:

git stash 先把当前工作现场“储藏”起来

git pull master 拉去远程仓库代码

git stash list 查看储藏起来的工作现场

git stash pop 恢复并删除工作现场(也可以先git stash apply恢复,再用git stash drop来删除工作现场)

【拓展】

如果merge之后后悔了,则可进行以下操作

第一步:git checkout到你要恢复的那个分支上

1 1.git checkout develop

第二步:git reflog查出要回退到merge前的版本号

1 1. git reflog

第三步:git reset –hard [版本号]就回退到merge前的代码状态了

1 1.git reset --hard f82cfd2

8.成功合并后,将develop分支提交到远程仓库

git push origin develop

9.如果需要继续开发,则先删除自己的分支dev,重新从develop分支中新建一个自己的分支

删除分支git branch -d dev

新建分支git branch newdev

切换至新的分支git checkout newdev

之后再次跳转到第五步,如此循环。


*git存储全览图**【拓展】gitkraken(git的一种可视化工具)的使用

【另一种类似思路】组织->团队

【另一种思路】代码拥有者添加其他人的ssh,可以使得其他人直接访问代码拥有者的仓库

多个ssh密钥相关问题https://www.cnblogs.com/SUNSHINEC/p/8617029.html

【另一种思路】参与者fork+pull

https://blog.csdn.net/qq_41401062/article/details/89304072

【拓展】克隆时http与ssh的区别
1.clone项目:使用ssh方式时,首先你必须是该项目的管理者(协作者)或拥有者,并且需要配置个人的ssh key。而对于使用https方式来讲,就没有这些要求。

2.push:在使用ssh方式时,是不需要验证用户名和密码,如果你在配置ssh key时设置了密码,则仅需要验证配对密码。而对于使用https方式来讲,每次push都需要验证用户名和密码。