git远程端和本地端强制整合 清空历史
问题
遇到这么一种情况,远程端进行过一些操作,有自己的log。
然后我将这个远程端里面的内容全部清空了,想拿来给新的本地端用。
此时新的本地端进行以下操作。
git remote add xxx url
- 我想试试直接push可以不
- 不可以,他会说不同步
- 于是用
git pull xxx master- 报错:fatal: refusing to merge unrelated histories
- 于是
git pull origin master --allow-unrelated-histories
这样以后就会强行将不同的log拼接在一起,log根据时间排序。
注意
因为远程是什么都没有的,只有历史记录而已,所以我直接拉下来没有什么问题。
之前遇到过一个情况,我直接将远程拉下来,把我本地也搞得一塌糊涂,根本用不了。本地的log也直接变成远程的了。
所以记得本地要先备份一下。我也不知道该怎么解决,以后碰到再看。
疑惑
* [new branch] master -> origin/master
There is no tracking information for the current branch.
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
它有给我一个提示,就是--set-upstream,确定要上流分支,我也还不大清楚应该具体应用在什么情况,希望以后有确切的例子以后再记录一下。
但是比如我git push origin master不是已经确定了上流分支了嘛,git pull也是同理吧?
还有一种
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin master
其实应该就是字面意思,有时候是需要确定上流分支的。git的提示还是很全面的。多注意提示,再对症下药。

这样就可以
清空历史
远程端因为删删改改存了很多没有必要的历史,所以想将其清空
git checkout --orphan new //关键在这!孤儿!他会创建一个没有任何历史记录的分支,所以切换后一定要commit一次
git add . //!!①
git commit -m "init" //!!②
git branch -D master //!!③
git branch -m master //将本分支改名为master
git push -f origin master //!!④
①
网上一堆差不多的关于git add -A 和git add . 之间的关系等。
统一都在说,git add . 不能add删除后的文件。然而我实践了一下,是可以的
也有可能是我误解了,没明白他们的意思。
②
有什么commit -am...
总之个人习惯是git add .再git commit -m
③
好像都说-d 和-D 是一样的,但是看图。

④
如图

此时需要去git Lab的setting里的repository中找到protected branch取消保护就行了
知识离开了脑子,就只是一堆文字

浙公网安备 33010602011771号