有没有更好的方式来获取存储库中的所有对象的SHA1的原始列表比做ls .git/objects/??/\*和cat .git/objects/pack/*.idx | git show-index cat .git/objects/pack/*.idx | git show-index ? 我知道git rev-list –all但是只列出了被.git / refs引用的提交对象,而且我正在寻找所有包括由git-hash-object,git-mktree等创build的未引用对象。
当我input命令时: git tag -l 我得到这样的结果: rc-0.9.0.0 rc-0.9.0.1 rc-0.9.0.10 rc-0.9.0.11 rc-0.9.0.12 rc-0.9.0.2 rc-0.9.0.3 rc-0.9.0.4 rc-0.9.0.5 rc-0.9.0.6 rc-0.9.0.7 rc-0.9.0.8 rc-0.9.0.9 而不是我想要的: rc-0.9.0.0 rc-0.9.0.1 rc-0.9.0.2 rc-0.9.0.3 rc-0.9.0.4 rc-0.9.0.5 rc-0.9.0.6 rc-0.9.0.7 rc-0.9.0.8 rc-0.9.0.9 rc-0.9.0.10 rc-0.9.0.11 rc-0.9.0.12 如何sorting当前列表来获得这样的结果?
我发现git mergetool是一个方便的实用工具,可以在视觉上合并差异,但是我对它的方式看起来真的太不可思议了。 从本质上说,当报告冲突时,我的过程如下所示: 执行一个git mergetool 在提示符下, 按Enter键启动我的diff工具(Meld或FileMerge,取决于哪台计算机) 解决冲突 保存更改 closuresdiff工具 如果我有一个以上的冲突,冲洗,重复。 是的,这是我打开和closures我的差异查看器一次合并的每个冲突。 由于它是从命令行启动的,关闭它是我知道告诉git mergetool我已经解决了这个特定冲突并且可以继续下一个的唯一方法。 当然有更好的办法,但我不知道。 请帮忙吗? 这个过程似乎疯狂低效。
.gitignore文件在忽略一些我们不想控制的文件时非常有用。 不幸的是,当文件已经在版本控制之下的时候就不能使用了。 例如,我的.gitignore(已经添加到git)文件可能与我的同事想要的不同(例如,我想忽略Vim文件)。 每当我对这个文件进行修改,git就会把它显示为一个修改过的文件。 所以我的问题: 有没有办法忽略已经由Git控制的某个文件的更改? 有什么办法可以提交这些更改,但只保留给我自己吗? 显然,我不想使用分支,因为我正在某个分支上工作。
使用git与CVS存储库进行交互的最佳实践和技巧是什么?
在我的项目中,我需要使用存储在几个Git存储库中的第三方代码。 我的项目也存储在(单独的)Git仓库中。 在主项目上有几个人和我一起工作,我是维护者。 在之前的项目中,我曾经手动将依赖项复制到Git工作树上,添加了一个指定版本的小文件。 现在这是相当不舒服的,因为我需要每天更新一个依赖关系,并经常为自己贡献代码,大部分时间与主项目的变化相结合。 我决定尝试Git子模块来进行pipe理。 我尝试的越多,我越是感到沮丧。 甚至似乎手工复制也许更好。 以下是我的一些担忧: 我们不再能够通过一个命令获得一致的存储库状态( git checkout现在需要git submodule update –init )。 我们无法正确使用一些Git工具( git archive是最值得注意的)。 我们无法看到来自主项目的子模块的状态更改/差异。 正如我刚刚发现的一样, git submodule不能与–git-dir和–work-tree选项一起工作,并且需要将当前目录的物理更改添加到“正在工作的树的顶层”。 看来,为了简化我们的子模块工作stream程(这是一个操作==一个命令),我们必须写一个比较厚的Git包装器。 这真是难过;这真是伤心。 请注意,从Git移出或将子项目开发完全合并到主项目中不是一种select。 也许我用错误的方式使用git submodules ? 有什么好的工作stream程教程? 即使你不知道正确的答案,也请说出来,但请分享我的担忧。 🙂
我想在每次git push之前运行一个unit testing,如果testing失败,取消push,但是我甚至找不到pre-push hook,只有pre-commit和pre-rebase。
如何通过位于不同目录中的模式(或glob)recursion添加文件? 例如,我想用一个命令添加A/B/C/foo.java和D/E/F/bar.java (和其他几个java文件): git add '*.java' 不幸的是,这并不像预期的那样工作。
我需要一个pipe道命令来打印一个给定提交的提交信息 – 没有什么更多的了。
我知道使用.gitignore文件排除一些正在添加的文件,但我有几个config.php文件在源码树中,我需要排除只有一个,位于根,而其他保持在版本控制。 我应该写入.gitignore才能做到这一点?