最终更新和修复 :这里的解决scheme原来是两件事的结合:使用Windows Git而不是Cygwin Git作为Graham Borland的 build议 ,而Gitconfiguration设置pack.threads = 1和gc.aggressiveWindow = 150 。 我有一个大的本地Git仓库,一个SVN仓库的git svn clone ,大约有40,000个提交。 我试图在这个仓库上运行git gc ,并且无处可去: $ git gc –auto Auto packing the repository for optimum performance. You may also run "git gc" manually. See "git help gc" for more information. Counting objects: 25966, done. Compressing objects: 100% (25249/25249), done. fatal: Out […]
我试图将一个文件(称为foo.txt)从一个存储库移动到另一个(不相关的)存储库,以保留其历史logging。 ebneter的问题显示了如何为子目录执行此操作。 taw的问题有一些提示和build议,但不是一步一步遵循的。 jkeating的问题看起来很有希望,但对我来说并不合适。 Googlesearch对于这个特定的用例来说是空的。 我正在寻找的是一个明确的命令序列来完成这一点。 我开始遵循的命令序列是这样的: $ git clone source-repo/ source-repo-copy $ cd source-repo-copy $ git filter-branch –tree-filter 'test ! "$@" = "foo.txt" && \ git rm –cached –ignore-unmatch $@ || true' –prune-empty 我的过滤命令的逻辑是git rm所有不是foo.txt的文件。 我加了|| true || true的命令强制它有一个零返回值来满足filter分支。 我的意图是将源repo-copy设置为我的目标存储库(target-repo)的远程,并假设git filter-branch过滤掉除foo.txt以外的所有内容,将source-repo-copy取回并合并到target-repo。 不幸的是, git filter-branch命令似乎没有效果。 它运行没有错误,似乎通过在源代码回购中的600多个提交,但是当它完成时, git log和源代码复制副本中的文件看起来是一样的。 不应该所有的文件,但foo.txt丢失,所有提交没有触摸它会从日志中消失? 在这一点上,我不知道如何进行。 有什么build议么?
在使用标准布局使用git-svn来克隆现有的Subversion版本库时,我得到了一堆W: -empty_dir (和W: +empty_dir )警告。 克隆的git仓库似乎正在工作,即我可以做通常的git操作和dcommit到SVN仓库。 真正的问题是,最初的克隆和rebase会创build一些SVN仓库中不存在的空目录,位于仓库顶部(以及其他目录在trunk中)。 这些目录不包含文件,而只包含一些空目录。 看来“W:-empty_dir”警告对应于这些空目录。 我通过使用SVN检查整个存储库查找空目录,但没有空目录。 我也通过SVN检查,如果存储库具有特殊属性的文件,但没有任何比“可执行”和“MIMEtypes”以外。 现有的存储库并不是最初遵循标准布局,而是将其清理完毕,以便顶层目录只是“主干”,“标签”和“分支”。 什么可能导致创build这些Subversion下不存在的空目录?
哪一个应该用来隐藏微提交? 是git merge –squash和git merge –no-ff –no-commit的唯一区别git merge –no-ff –no-commit否认其他父母?
道歉,如果这似乎是多余的,因为我知道关于合并与Rebase有相当多的问题,但似乎没有任何投入“分支默认”以及。 你会得到一个案例,你有多个人同时在一些东西上工作(例如Android Studio中的一个Android应用程序)。 如果有人推到主分支上,并且你想把新的主人拉进来,这样它就不会覆盖你还在工作的工作,还没有提交并推送给主人,那么更新项目/拉的最佳select是什么? 单击“更新项目”时,Android Studio会列出“合并”“重做”和“分支默认”。 从听起来像,我想要做'重build'(其次是“合并”?),但我不完全确定。
我通常在多台电脑上工作。 我有各种configuration文件,例如, .bashrc , .gitconfig , .irbrc , .vimrc和configuration文件夹,例如.vim/包含有价值的自定义。 有时我需要在不同计算机之间的configuration上有小的变化。 我想使用版本控制来pipe理这些不同的文件。 其他人使用版本控制来pipe理他们的configuration文件? 有什么提示可能会使这更容易? 处理计算机之间差异的最优雅方式是什么? 我很喜欢git ; 任何其他build议?
我正在考虑从svn和Trac转移到git和Redmine。 我只是想知道每个人的经验是什么。 git与Redmine的整合程度如何? 我决定从svn更改为git – 我们的分布式工作,需要经常分支和合并,使用git使生活变得相当容易。 但是我们可能需要将事情分成多个项目。 从我一直在读的东西,git和多个项目都不太适合Trac的整合。 除此之外,在我对git的调查中,Redmine也引起了我的注意,其中一些function看起来非常有用。 然而,我还没有find尽可能多的git和Redmine的用户体验(可能是由于我缺乏search技巧…),所以想听听你的意见和例子。
我有一个结构如下所示的git存储库: +–repo.git | +—-+bootstrap.py +—-+buildout.cfg +—-+.gitignore +—-+webapp | +———+manage.py +———+modules +———+templates +———+static +———+… +———+… 我想将webapp文件夹的内容上移一层。 我的回购应该是这样的: +–repo.git | +—-+bootstrap.py +—-+buildout.cfg +—-+.gitignore +—-+manage.py +—-+modules +—-+templates +—-+static +—-+… +—-+… 我可以通过简单地移动webapp目录的所有文件,删除空的webapp目录,然后提交更改来完成此操作吗? 这将保存webapp目录下的文件的提交历史? 尽pipe对于你们许多人来说,这是一个非常简单的问题,但我想确定一下。 我想要的最后一件事是混合汤。 我试图移动的文件,但我失去了提交历史作为git并没有真正处理移动或重命名。 我知道即使它在日志中显示为新文件,仍然可以使用git log某些选项来查看文件的提交历史git log 。 从我读过的,完成这个最好的方法是使用git-filter 。 我用shell或git不太好,所以有人可以告诉我需要执行上述操作。
我怀疑我的问题的答案是相当简单的,但我是一个混帐新手,我的头正在阅读所有类似的SoF问题,似乎不是我的问题的答案困惑。 这是我的问题: 我在github上有一个单独的分支(“主”),我一直在我的本地回购工作。 在某个时候,我停止推动提交github上的主人,因为我担心他们会破坏事情。 所以现在我在本地回购中有很多提交,我想推回github。 但是,我不想推回到掌握,我宁愿在github上创build一个新的分支('development'),并把我所有的本地提交返回到那个分支(我将只在它们更好testing)。 什么是简单的方法来做到这一点?
我所知道的每个自由/开放源码软件项目都有规则来防止代码中的尾随空格。 但是我认为继续当前的缩进是非常自然的: int main() { ….int a = 42; …. ….return a; } 但是git反正会抛出警告。 所以我的问题是:为什么当前缩进内的那些标签不好? 我不是在寻找像“总是这样做”的答案。 让我们假设在整个项目中缩进是一致的。