草庐IT

commit_hash

全部标签

git - 为什么 git hash-object 返回的哈希值与 openssl sha1 不同?

上下文:我从code.google下载了afile(Audirvana0.7.1.zip)到我的MacbookPro(MacOSX10.6.6)。我想验证校验和,该特定文件的校验和发布为862456662a11e2f386ff0b24fdabcb4f6c1c446a(SHA-1)。githash-object给了我一个不同的哈希值,但是opensslsha1返回了预期的862456662a11e2f386ff0b24fdabcb4f6c1c446a。以下实验似乎排除了任何可能的下载损坏或换行差异,并表明实际上有两种不同的算法在起作用:$echoA>foo.txt$catfoo.txtA

git - 在 git merge commit 中列出所有修改过的文件——即使是快进的

我在想,当我将一个分支merge到另一个分支时,是否有一种方法可以在我的提交消息中列出所有更改的文件,而不仅仅是在两个分支中修改的文件。这将使我仅通过查看merge提交就可以更好地了解分支中更改的内容。有办法做到这一点吗? 最佳答案 我不知道如何在提交消息中做到这一点。但是在merge之后,这将给出受merge提交影响的所有文件的名称:gitlog-m--name-only仅用于提交的文件名列表:gitlog-m-1--name-only--pretty="format:"由于merge有两个父级,因此有一些空白,但可以轻松删除。

git - "git reset --hard hash"和 "git checkout hash"之间有区别吗?

虽然reset和checkout大多数时候有不同的用法,但我看不出这两者之间有什么区别。可能有人或没有人愿意添加一个--hard选项来做一些基本的checkout可以做的事情。也许您看待历史的方式有所不同? 最佳答案 这个答案主要引用self对上一个问题的回答:gitresetinplainenglish.两者有很大的不同。它们会为您的索引和工作树生成相同的状态,但生成的历史记录和当前分支并不相同。假设您的历史记录如下所示,当前已checkoutmaster分支:-A-B-C(HEAD,master)然后你运行gitreset--h

混帐添加。 -> 仍然是 "nothing to commit"和新文件

我在使用Git时遇到困难,我似乎无法添加我的文件。我运行ls以显示文件在当前目录中,然后运行​​gitadd.然后运行​​gitstatus显示“没有要提交”.JJ-Computer:first_appJJ$gitinitReinitializedexistingGitrepositoryin/Users/JJ/rails_projects/first_app/.git/JJ-Computer:first_appJJ$lsDiary.txtREADME.rdocconfig.rulogtmpGemfileRakefiledbpublicvendorGemfile.lockappdocs

git - 如何在 git 中执行 "local-only commit"?

我正在使用git,我希望能够创建一个不与远程存储库同步的提交。这样的提交必须“float”在本地存储库中的所有其他提交之上,以避免影响历史记录。我可以使用这样的提交来存储特定于本地的更改(配置更改、调试标志、本地解决方法等)。目前,我在提交时手动rebase以将提交重新排序回顶部,并且我使用HEAD^推送以避免推送本地更改。我也考虑过将更改放入存储中,但这不太方便,因为它妨碍了存储的正常使用。另一种选择是简单地保留所有这些本地更改未暂存,并在每次我想提交时使用gitadd-p。然而,随着大量琐碎的本地更改,这变得很麻烦。这是我当前工作流程的示例:我的仓库最初看起来像A---B---C-

git - 在提交之前准备一个 git commit 消息?

是否可以在提交之前准备提交消息,这意味着我将在实际提交之前或在工作目录期间键入我的提交消息,以便我知道我在做什么以及我知道这个分支或提交将是所有关于。当我说“之前”时,我并不是指在命令行上输入提交之前的几秒钟。我的字面意思是在提交之后或分支开始时,以便下一次提交将自动继承队列中的消息或可能调用的任何内容。当然我可以在提交期间放置这些消息,对我来说是有区别的。而且我可以看到git的论点也不是为了那个。我只是对此感到好奇。我也知道我可以给我的分支起更有意义的名字,但我只是想要一些空间用于此目的。 最佳答案 Git可以使用-F或--fil

git rebase 交互式 : squash merge commits together

我想要一个简单的解决方案来在交互式rebase期间将两个merge提交压缩在一起。我的仓库看起来像:X---Y---------M1--------M2(my-feature)//////a---b---c---d---e---f(stable)也就是说,我有一个my-feature分支,最近merge了两次,中间没有真正的提交。我不只是想重新设置my-feature分支,因为它是自己的已发布分支,我只是想将最后两个merge提交merge为一个(尚未发布这些提交还)X---Y----M(my-feature)////a---...--f(stable)我试过:gitrebase-p-

git - 解决 merge 冲突后如何使用默认的 git commit 消息?

在进行merge并解决冲突后,是否有一种“简单”的方法来仅从命令行接受默认生成的提交消息?我们的一位开发人员将解决所有冲突,然后执行gitcommit-m"MergeCommit"替换生成的列出所有冲突文件的提交消息。我想要一个不同的标志,它只需要不修改当前文件。我知道有一个-F或--file=选项,但这需要始终知道文件名。谢谢 最佳答案 根据thedocs,我只是尝试了这个简单的命令,它对我有用:gitcommit--no-edit然后,运行gitlog确认默认消息已被使用。 关于gi

git - 将 sublime text 3 设置为 git commit 文本编辑器

我在将sublime设置为我的git提交消息编辑器时遇到了问题。使用:gitconfig--globalcore.editor"subl"错误:错误:无法运行subl:没有那个文件或目录错误:无法启动编辑器“subl”请使用-m或-F选项提供消息。否则subl可以完美地工作。 最佳答案 对于它的值(value),这是我解决它的方法:1)在终端运行:sudoln-s/Applications/Sublime\Text.app/Contents/SharedSupport/bin/subl/usr/local/bin/subl这会向/u

git - `--squash` 和 `--no-ff --no-commit` 有什么区别?

应该使用哪一个来stash微提交?gitmerge--squash和gitmerge--no-ff--no-commit之间的唯一区别是其他parent的拒绝吗? 最佳答案 区别这些选项的存在是为了不同的目的。您的存储库以不同的方式结束。假设您在主题分支上完成开发后,您的存储库是这样的:--squash如果你checkoutmaster然后gitmerge--squashtopic;gitcommit-mtopic,你得到这个:--no-ff--no-commit相反,如果你执行gitmerge--no-ff--no-commit;