相关疑难解决方法(0)

Git拒绝合并关于rebase的无关历史

git rebase origin/development以下错误消息从git显示:

fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
Run Code Online (Sandbox Code Playgroud)

我的git版本是2.9.0.用于在以前的版本中正常工作.

如何通过新版本中引入的强制标记继续使用此rebase,从而允许不相关的历史记录?

git rebase

1862
推荐指数
25
解决办法
123万
查看次数

你如何合并两个Git存储库?

请考虑以下情形:

我在自己的Git仓库中开发了一个小型实验项目A. 它现在已经成熟,我希望A成为更大的项目B的一部分,它有自己的大型存储库.我现在想添加A作为B的子目录.

如何将A合并到B中,而不会丢失任何一方的历史记录?

git merge repository git-subtree

1517
推荐指数
16
解决办法
44万
查看次数

如何处理这个 git 警告?“不鼓励在不指定如何协调不同分支的情况下进行拉取”

git pull origin master我收到以下消息后:

warning: Pulling without specifying how to reconcile divergent branches is
discouraged. You can squelch this message by running one of the following
commands sometime before your next pull:

  git config pull.rebase false  # merge (the default strategy)
  git config pull.rebase true   # rebase
  git config pull.ff only       # fast-forward only

You can replace "git config" with "git config --global" to set a default
preference for all repositories. You can also pass --rebase, --no-rebase,
or …
Run Code Online (Sandbox Code Playgroud)

git

446
推荐指数
19
解决办法
14万
查看次数

如何在OS X上插入带有sed的制表符?

我试过了:

echo -e "egg\t  \t\t salad" | sed -E 's/[[:blank:]]+/\t/g'
Run Code Online (Sandbox Code Playgroud)

结果如下:

eggtsalad
Run Code Online (Sandbox Code Playgroud)

和...

echo -e "egg\t  \t\t salad" | sed -E 's/[[:blank:]]+/\\t/g'
Run Code Online (Sandbox Code Playgroud)

结果如下:

egg\tsalad
Run Code Online (Sandbox Code Playgroud)

我想要的是什么:

egg salad
Run Code Online (Sandbox Code Playgroud)

regex macos sed

65
推荐指数
4
解决办法
4万
查看次数

我可以将.git目录移动到它的父目录吗?

我有两个子目录,每个子目录都有一个repo,因此:

PPP/
 |--ABC/
 |   |--.git/
 |   |--AAA/
 |   |    BBB/
 |   |   CCC/
 |   
 |--DEF/
 |   |--.git/
 |   |--DDD/
 |   |--EEE/
Run Code Online (Sandbox Code Playgroud)

并且想将它们组合成一个repo,所以,我认为目录结构将是这样的:

PPP/
 |--.git/
 |--ABC/
 |   |--AAA/
 |   |--BBB/
 |   |--CCC/
 |   
 |--DEF/
 |   |--DDD/
 |   |--EEE/
Run Code Online (Sandbox Code Playgroud)

这是真的吗?

目前还有几个人在他们的机器上有回购.生活有多复杂?

助教.

git directory merge subdirectory

36
推荐指数
2
解决办法
1万
查看次数

什么时候应该使用git孤儿分支?

Git可以使用git checkout --orphan命令在同一个repo中托管多个DAG .经常引用的用例git的这个特性是为文档或GitHub gh-pages孤立分支保留单独的分支以创建静态网站.

还有其他原因在git中使用孤立的分支吗?

git

30
推荐指数
2
解决办法
7029
查看次数

将包含其所有历史记录的git存储库导入现有的git存储库

我有两个git存储库,我想将它们合并在一起而不会丢失它们的提交历史记录.我试过这个:

cd firstRepo
git remote add other path/to/otherRepo
git fetch other
git checkout -b otherRepoBranch other/master
echo "`git rev-list otherRepoBranch | tail -n 1` `git rev-list master | head -n 1`" >> .git/info/grafts
git rebase otherRepoBranch master
Run Code Online (Sandbox Code Playgroud)

现在,当我查看提交历史记录时,一切看起来都不错,但我存储库中的唯一文件现在是来自otherRepo的文件.

有任何想法吗?

干杯,梅林

git

20
推荐指数
3
解决办法
2万
查看次数

结合不相关的git存储库保留历史/分支

我们有3个独立的git存储库(每个都有一些分支),我们希望将它们合并为一个保存完整的历史记录和访问分支的能力,如下所示:

所以这就是我们所拥有的.3回购:

/A/.git
/B/.git
/C/.git
Run Code Online (Sandbox Code Playgroud)

我们想要一个包含3个子目录的超级仓库:

super/.git
super/A
super/B
super/C
Run Code Online (Sandbox Code Playgroud)

并说当切换到分支feature1(最初在repo B中,在repo C尚不存在的时候引入)我们期望结果是:

super/.git
super/A
super/B
Run Code Online (Sandbox Code Playgroud)

我们已经读过组合多个git存储库,但是使用git-stitch-repo时遇到了麻烦,它基本上只是宣传了super-repo中缺少大量的提交(没有任何可能指向问题的错误消息).

知道我们在这里做错了什么吗?

编辑 我们知道子模块和子树合并,但两者都不是一个选项.这应该是一次性操作.我们需要一次又一次加入repos.

编辑 可能是一个更简单的方法来提出基本相同的问题:说我们有一个回购与3个完全无关的分支.我们可以将它们合并而没有冲突到一个分支(因为它们不共享文件).现在,在查看历史时,我们会看到3个不相关的提交分支以及它们聚集在一起的一个点.但我们希望看到的是一个由所有3个分支的交错(按日期/时间)提交组成的分支.

git

11
推荐指数
1
解决办法
1511
查看次数

filter-branch删除额外的目录

我正在将几个Subversion存储库迁移到Git,但它们设置有点奇怪:标准的trunk/branches/tags结构存在于存储库的几个子目录中./ branches和/ tags都是空的,因此git-svn导入最终只有trunk目录.

svn/
  proj1/
    trunk/
      src/
  proj2/
    trunk/
      src/
Run Code Online (Sandbox Code Playgroud)

我想git filter-branch用来删除额外的trunk文件夹,但保持其余部分完整:

svn/
  proj1/
    src/
  proj2/
    src/
Run Code Online (Sandbox Code Playgroud)

基于文档中的最后一个示例,这是我到目前为止所拥有的:

git filter-branch --index-filter \
    'git ls-files -s | sed "s-/trunk/-/-" |
        GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
            git update-index --index-info &&
     mv "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE"' HEAD
Run Code Online (Sandbox Code Playgroud)

在我看来,它sed正在做它的工作,因为这个输入:

100644 fa3dcf79717e9aca85ad745078a2fb2a2ce2b900 0       proj1/trunk/src/file1.txt
Run Code Online (Sandbox Code Playgroud)

生成此输出:

100644 fa3dcf79717e9aca85ad745078a2fb2a2ce2b900 0       proj1/src/file1.txt
Run Code Online (Sandbox Code Playgroud)

但是,当我运行整个命令时,我收到以下错误:

Rewrite e00c119cfb755f741dc0e17c36d36bc2ddd27562 (1/42)mv: cannot stat `/c/dev/R
epo/.git-rewrite/t/../index.new': No such file or directory
index filter failed: git ls-files -s | sed "s-/trunk/-/-" | …
Run Code Online (Sandbox Code Playgroud)

git git-filter-branch

10
推荐指数
1
解决办法
3579
查看次数

Git过滤器分支说工作树不是很脏

我正在尝试在我的git存储库中重写我的历史记录,因为我需要删除包含受限信息的文件.

这是发生的事情:

$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch FILE' master
Cannot rewrite branch(es) with a dirty working directory.
Run Code Online (Sandbox Code Playgroud)

所以我认为"这很奇怪,我很确定我没有未提交的更改",我运行:

$ git status -u
# On branch master
nothing to commit (use -u to show untracked files)
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?有没有人知道会发生什么?此存储库中有子模块.

子模块分段信息

我有18个子模块(所有Vim插件),这是他们的状态.认为这可能是有用的信息.

$ for i in $(ls); do cd $i; git status -u; cd ..; done;
# Not currently on any branch.
nothing to commit (working directory clean)
# Not currently on any branch.
nothing to commit (working directory clean)
# …
Run Code Online (Sandbox Code Playgroud)

git command-line

9
推荐指数
1
解决办法
2986
查看次数