首先记录两个小问题
git push没有权限
4月 git安装配置,根据廖雪峰老师的教程
5月 安装了ionic,顺带安装其带的git,其自动配置。
6月 git不能用,没有权限
LF will be replaced by CRLF
CRLF : Carriage-Return Line-Feed 回车换行。即回车(CR,ASCII 13, \r)换行(LF, ASCII 10, \n).
在windows中使用回车换行标识一行的结束,而Linux中则只有换行符。
这个警告的解决方案就是,禁用git自动转换。
git config --global core.autocrlf false //禁用自动转换
如果已经创建了git 需要删除.git 然后重新配置
开始team work 流程及之间遇到的问题
团队协作的方案选择
1. 团队成员clone我的远程库,在本地开发,同步到自己的远程库,然后发起pull request
这种方式不应该是团队项目所应该采取的做法,这种做法应该是参与开源项目编辑所采取的做法,clone已经存在的项目,然后进行完善之后发起请求,看项目组是不是接受你的代码。
2. 在我的远程库的设置中,添加协作者collaborators
只需要搜索到这个用户就可以向他发送请求,成为协作者就可以在远程pull仓库,本地开发之后push到远程库上。完成团队协作开发
团队成员的操作步骤
1. 在本地适当位置建立文件夹,运行git init
命令来建立一个本地仓库
2. 添加与远程仓库的关联
git remote add origin git@github.com:SunLightFor6/admin.git
完成之后可以使用命令
git remote -v
来查看一下远程仓库的信息
到这里和远程仓库已经建立好关系,push你的代码就可以了。
3. push你的代码
本地仓库所在文件夹的目录,设置好.gitignore
文件之后,进行stage, add, commit操作,这些操作可以使用Git GUI来完成。然后push到远程仓库
git push -u origin master
等待push成功,就完成了项目项目协作的入门操作。
第3步常出现的几个问题
stage文件的时候出现警告
LF will be replaced by CRLF
解决方案见本文第二点
push代码的时候失败,被远程仓库拒绝(rejected)
$ git push -u origin master
To github.com:SunLightFor6/admin.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:SunLightFor6/admin.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
这个问题出现的原因是:由于远程仓库的内容相较本地仓库最近一次pull的内容有了更新,所以需要你先从远程仓库pull下来最新的文件,然后再上传。
解决:执行命令 git pull
你可能会问,冲突怎么办?
在正常且科学合理的团队协作的过程中,一般不会出现多少冲突,这需要队友之间互相沟通好,协作好,每个人分工明确,接口定义清楚,互相耦合度低,这样就能很大程度上避免冲突了。但冲突肯定会出现,比如队友几个同时在readme文件中新增了东西。那么如果真的出现冲突了怎么办?
出现冲突git会提示你哪个文件哪个地方出现冲突,这就需要你手动处理冲突的文件。
git pull 的时候出现问题
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> master
这个问题意思是git不知道你要pull的是哪一个分支。提供了两种解决思路:
- 第一种git pull <remote> <branch> 写清楚远程分支
- 第二种git branch --set-upstream-to=origin/<branch> master 远程分支和本地分支做绑定
$ git branch --set-upstream-to=origin/master master
Branch 'master' set up to track remote branch 'master' from 'origin'.
fatal: refusing to merge unrelated histories
这个问题很有意思,是说因为本地库和远程库的内容历史没有关联(unrelated),所以拒绝合并(refuse to merge)。一般出现在开始阶段的pull和push的时候。
$ git pull origin master --allow-unrelated-histories
配置好就可以啦
团队协作者的操作流程
上边介绍了团队协作者开始团队协作的时候的操作流程和会遇到的问题,以下归纳一下日常开发的操作流程。
- 每天开发第一件事 pull远程仓库,确保本地仓库内容最新。
- 开始开发过程
- commit 因为commit是带有message信息的,所以每进行完一项内容更新,最好就进行一次commit
- 每日工作结束,push自己今天所有的commit到远程仓库,如果遇到问题,参照上面内容解决。
Attention. 本文没有介绍分支branch的相关内容,如果要在团队协作中引入分支(git鼓励大量使用分支),则只需要创建分支,然后在分支上pull和push代码,里程碑时候merge合并分支到主分支master。