一,远程新建仓库,初始化了readme 将本地新建项目的远程路径关联新建的仓库,本地提交后拉取远程数据会报: refusing to merge unrelated histories
解决办法是:git pull origin master --allow-unrelated-histories
在没有初始化readme文件,是空工程时,可以直接推送到远程.
二,公司小组新建了一个工程的新分支,需要建立本地和自己的远程分支:之前的做法是clone自己远程的master,然后新建一个本地分支,拉取小组的的远程分支.(这个不是标准做法)
标准做法是:
1,clone自己fork的地址:git clone http://。。。
2,添加小组的远程路径:git remote add upstream http://...。
3,查看远程地址:git remote -v
4,查看分支:git branch -a
5,如果没有upstream的分支信息可以使用:git fetch upstream --prune 更新分支信息
6, 关联远程分支:git checkout -b branch2.5.1 remotes/upstream/branch_2.5.0
7,再查看时,已经切换到新关联的分支下面了:git branch -a
三,要在某个tag下开发
在开发分支上,迁出主干的小组分支下tag代码:
git checkout -b branchName gatName
提交完当前开发的代码后,执行以上命令就迁移到了新的指定tag分支上。
三,gitlab上查看某个文件的修改历史:
在repository下,选择指定分支 -> 选择某个文件 -> history 就可以查看该文件的所有历史修改
四,在已经开发的git上,如果去下载(download)指定tag的代码,重新git init ,修改了代码又想合并到之前的开发或主干分支上(标准做法是前面第二点的做法,此处只是对误操作的补救措施)
这种是无法推送到原来的git分支上面的,因为本地的git不是从原来的地址clone或者分支切换出来的。
方法一:用对比工具找出修改的地方,慢慢改。
方法二:新的git关联原来的远程git路径,能够更新下来代码,这样也有一个新的思路是:把新的git项目推送到新建的远程路径上,给原来的git项目添加上新的远程路径(git remote add newOrigin newUrl),再去拉取新的远程路径(git pull newOrigin master ----allow-unrelated-histories),经测试,这样是可以实现把从指定tag download下来的代码合并到原来的分支上。
这个实例也让我们对git的设计有了新的认识,没有追踪的git项目是不能强行推到远程上去的,这是一个不被允许的被动行为,是对既有项目的保护。但是已有项目是可以主动拉取没有追踪的远程路径代码的,这是一个主动行为。当然最标准的做法是按第二点介绍的方式开发