git日常1


问题

1.使用pull后没有将远程文件下载来

可能是本地和远程分支搞反了

也可以使用fetch然后merge,

如果提示fatal: refusing to merge unrelated histories,就使用:

1
2
3
4
5
6
当在Git中执行git merge命令时,出现"fatal: refusing to merge unrelated histories"错误提示,这通常是因为要合并的两个分支没有共同的提交历史,被认为是不相关的分支。

这种情况通常发生在两个分支之间没有共同的祖先提交,或者其中一个分支是在完全不同的代码库中创建的。

如果你确定要合并这两个不相关的分支,可以在git merge命令后添加--allow-unrelated-histories选项来允许合并不相关的历史。例如:
git merge branch1 --allow-unrelated-histories

然后将fetch的分支合并到q_2:

git checkout q_2

git branch -a:

1
2
3
  master
* q_2
remotes/r1/qt_cut_test_2

git merge remotes/r1/qt_cut_test_2

然后就可以看到远程的文件了。

2.使用git pull -f r1 远程:本地

这样远程的文件就会将本地的文件覆盖掉。

如何恢复呢?

首先使用git reflog查看提交信息:

1
2
3
4
5
6
7
8
9
10
11
$ git reflog
2ae4d38 (HEAD, qt_cut_test_2) HEAD@{0}: checkout: moving from qt_cut_test_2 to 2ae4d38
2ae4d38 (HEAD, qt_cut_test_2) HEAD@{1}: reset: moving to 2ae4d38
fe8c64a (master) HEAD@{2}: reset: moving to fe8c64a
2ae4d38 (HEAD, qt_cut_test_2) HEAD@{3}: reset: moving to 2ae4d38
cc8f420 (r1/qt_cut_test_2) HEAD@{4}: checkout: moving from master to qt_cut_test_2
fe8c64a (master) HEAD@{5}: checkout: moving from qt_cut_test_2 to master
cc8f420 (r1/qt_cut_test_2) HEAD@{6}: pull -f r1 qt_cut_test_2:qt_cut_test_2: forced-update
2ae4d38 (HEAD, qt_cut_test_2) HEAD@{7}: commit: qt_1
fe8c64a (master) HEAD@{8}: checkout: moving from master to qt_cut_test_2
fe8c64a (master) HEAD@{9}: commit (initial): master_c_1

第一列类似2ae4d38 是类似id。然后发现我是再commit qt_1之后使用了pull -f强制拉取了分支导致覆盖了本地分支文件。id是2ae4d38

然后使用git reset 后打印:

1
2
3
4
5
Unstaged changes after reset:
D cut_test_2.pro
D cut_test_2.pro.user
D cutoptions.cpp
...

然后尝试使用 git checkout –cut_test_2.pro 发现文件恢复了。

然后使用git checkout –*.h 就可以恢复所有.h后缀的文件,然后将所有文件依次恢复。

还好之前使用git add –all 并且commit了,不然可能九回复不了了,因为没有保存信息。

以后使用类似这种危险操作一定要备份文件。

完整流程

经过测试,之前出现那么多问题是因为pull的时候远程和本地分支搞反了

正确流程:

git init

git remote add r1 …

git remote -v

git add …

git commit -m …

git branch -a

git pull r1远程:master

git branch -a //一个master,一个远程

git checkout master

git merge 远程 –allow-unrelated-histories

git push master:远程


Author: John Doe
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source John Doe !
  TOC