相关疑难解决方法(0)

如何强制"git pull"覆盖本地文件?

如何强制覆盖本地文件git pull

方案如下:

  • 团队成员正在修改我们正在处理的网站的模板
  • 他们正在向images目录添加一些图像(但忘记在源代码管理下添加它们)
  • 他们稍后通过邮件发送图像给我
  • 我在源控件下添加图像并将其与其他更改一起推送到GitHub
  • 他们无法从GitHub中提取更新,因为Git不想覆盖他们的文件.

这是我得到的错误:

错误:未经跟踪的工作树文件'public/images/icon.gif'将被合并覆盖

如何强制Git覆盖它们?这个人是设计师 - 通常我会手动解决所有冲突,因此服务器具有他们只需要在他们的计算机上更新的最新版本.

git version-control overwrite git-pull git-fetch

6654
推荐指数
46
解决办法
427万
查看次数

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

请考虑以下情形:

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

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

git merge repository git-subtree

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

Git:如何压缩分支上的所有提交

我创建了新的分支master:

git checkout -b testbranch

我做了20次提交.

现在我要压缩那20个提交.我这样做:

git rebase -i HEAD~20

如果我不知道有多少提交怎么办?有什么方法可以做以下事情:

git rebase -i all on this branch

git version-control

241
推荐指数
15
解决办法
13万
查看次数

组合多个git存储库

假设我的设置看起来很像

phd/code/
phd/figures/
phd/thesis/
Run Code Online (Sandbox Code Playgroud)

由于历史原因,这些都有自己的git存储库.但我想将它们合并为一个,以简化一些事情.例如,现在我可能会进行两组更改,并且必须执行类似的操作

cd phd/code
git commit 
cd ../figures
git commit
Run Code Online (Sandbox Code Playgroud)

表演(现在)很棒

cd phd
git commit
Run Code Online (Sandbox Code Playgroud)

似乎有几种方法可以使用子模块或从我的子存储库中提取,但这比我正在寻找的要复杂一些.至少,我很高兴

cd phd
git init
git add [[everything that's already in my other repositories]]
Run Code Online (Sandbox Code Playgroud)

但这似乎不是一个单行.有什么git可以帮助我吗?

git

203
推荐指数
8
解决办法
7万
查看次数

试图从我的Github存储库中提取文件:"拒绝合并不相关的历史记录"

我正在学习git,而且我正在关注Git社区书籍.

以前(很久以前)我在Github上创建了一个公共存储库,包含一些文件.现在我在当前的计算机上设置了一个本地Git存储库,并提交了一些文件.然后我添加了一个指向我的Github页面的遥控器:

[root@osboxes c]# git remote add learnc https://github.com/michaelklachko/Learning-C
Run Code Online (Sandbox Code Playgroud)

这似乎是成功的:

[root@osboxes c]# git remote show learnc
* remote learnc
  Fetch URL: https://github.com/michaelklachko/Learning-C
  Push  URL: https://github.com/michaelklachko/Learning-C
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (local out of date)
Run Code Online (Sandbox Code Playgroud)

现在我想从我的Github repo下载文件到我的电脑.我这样做了:

[root@osboxes c]# git fetch learnc
[root@osboxes c]# git merge learnc/master
warning: refname 'learnc/master' is ambiguous.
Already up-to-date.
Run Code Online (Sandbox Code Playgroud)

但是,我在本地目录中看不到任何新文件.我怎么能得到它们?

我也试过这样做:

[root@osboxes c]# git pull learnc master
From https://github.com/michaelklachko/Learning-C
 * branch            master     -> FETCH_HEAD …
Run Code Online (Sandbox Code Playgroud)

git github git-pull git-fetch

140
推荐指数
5
解决办法
17万
查看次数

将Git存储库内容移动到保留历史记录的另一个存储库

我试图使用以下命令仅将一个存储库(比如repo1)的内容移动到另一个现有存储库(比如repo2);

  1. git clone repo1
  2. git clone repo2
  3. cd repo1
  4. git remote rm origin
  5. git remote add repo1
  6. git push

但它不起作用.我回顾了其他类似的帖子,但我只发现移动文件夹而不是内容.

git merge migrate repository

118
推荐指数
8
解决办法
7万
查看次数

将git repo合并到另一个repo的分支中

鉴于repo Foo和repo Bar.我想将Bar与Foo合并,仅限于一个单独的分支,称为baz.

git checkout -b baz <=把Bar repo放在这里.

git

92
推荐指数
3
解决办法
6万
查看次数

Git从另一个存储库拉出来

我有一个名为的存储库Generic,它是一个通用的应用程序.我已将其分叉到一个名为Acme的存储Generic库中,该存储库仅构建在应用程序存储库上,并为其添加了Acme Co品牌.

如果我对核心功能进行了更改Generic,我想Acme使用我对核心功能所做的最新更改来更新存储库Generic.我该怎么办?

据我所知,我基本上试图将上游存储库中所做的更改合并到当前的fork中.

如果它意味着什么,我正在尝试这样做,因为我有一个通用的应用程序,然后我为个人客户构建和品牌(如Acme本例所示).如果有更清洁的方法,请告诉我.

git version-control dvcs repository

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

在子目录中合并git存储库

我想在我的工作git存储库中合并一个远程git存储库作为它的子目录.我希望生成的存储库包含两个存储库的合并历史记录,并且合并存储库的每个文件都保留其在远程存储库中的历史记录.我尝试使用如何使用子树合并策略中提到的子树策略,但是在遵循该过程之后,尽管生成的存储库确实包含两个存储库的合并历史记录,但来自远程存储库的单个文件尚未保留其历史记录(任何一个'git log'只显示一条消息"Merged branch ...").

此外,我不想使用子模块,因为我不希望两个组合的git存储库再次分开.

是否可以将远程git存储库合并为另一个存储库作为子目录,来自远程存储库的单个文件保留其历史记录?

非常感谢您的帮助.

编辑:我目前正在尝试使用git filter-branch重写合并的存储库历史记录的解决方案.它似乎确实有效,但我需要再测试一下.我将回来报告我的发现.

编辑2:希望我让自己更清楚我给出了与git的子树策略一起使用的确切命令,这导致远程存储库文件的历史明显丢失.设A是我正在使用的git repo和B git repo我想将它作为它的子目录合并到A中.它做了以下事情:

git remote add -f B <url-of-B>
git merge -s ours --no-commit B/master
git read-tree --prefix=subdir/Iwant/to/put/B/in/ -u B/master
git commit -m "Merge B as subdirectory in subdir/Iwant/to/put/B/in."
Run Code Online (Sandbox Code Playgroud)

在这些命令进入目录subdir/Iwant/to/put/B/in后,我看到B的所有文件,但是git log在其中任何一个文件中只显示提交消息"将子目录合并为子目录/ Iwant/to/put/B /中".它们在B中的文件历史记录丢失了.

什么似乎工作(因为我在混帐初学者我可能是错的)如下:

git remote add -f B <url-of-B>
git checkout -b B_branch B/master  # make a local branch following B's master
git filter-branch --index-filter \ 
   'git ls-files -s | sed …
Run Code Online (Sandbox Code Playgroud)

git

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

git rebase基础知识

git rebase最近开始使用,并不是100%肯定我做得对.为了这个问题,原点有两个分支,master并且next分支来自master.

自上次两者同步以来,master有2次提交和next6次:

$ git log --oneline origin/next..origin/master
59b5552 master commit #2
485a811 master commit #1

$ git log --oneline origin/master..origin/next
4ebf401 next commit #6
e9b6586 next commit #5
197ada0 next commit #4
4a2c3c6 next commit #3
040a055 next commit #2
84537bf next commit #1
Run Code Online (Sandbox Code Playgroud)

当我结账next并执行时git rebase -i origin/master,我得到以下内容:

$ git status
# On branch next
# Your branch and 'origin/next' have diverged,
# …
Run Code Online (Sandbox Code Playgroud)

git git-rebase

47
推荐指数
1
解决办法
3万
查看次数