当您运行git log --decorate --pretty=oneline输出时,将具有(HEAD, refs/published/master, master)与着色一样的条目.
我的gitconfig中也有以下内容:
[color "branch"]
current = yellow reverse
local = yellow
remote = green
Run Code Online (Sandbox Code Playgroud)
在执行如下自定义格式时,如何复制这些颜色?
git log --decorate --stat --graph --pretty=format:"%d %Cgreen%h%Creset (%ar - %Cred%an%Creset), %s%n"
Run Code Online (Sandbox Code Playgroud) 我的存储库经历了以下更改:
foo包含100行内容的新文件foo......foo现有文件顶部bar和git rm foo同一提交中的内容现在我想查看已删除文件的日志foo.我读过的所有东西,包括SO,都说我应该可以git log -- foo,但是这个命令不产生任何输出.
如果我发现包含删除的提交foo我可以git log 1234abcd -- foo看到它的日志,所以我认为我的路径foo不是问题.还要注意git merge-base HEAD 1234abcd输出1234abcd[...],所以我认为应该证明提交可以从中获得HEAD.请注意,foo我的工作树中没有文件(很明显,因为它已被删除).在OS X上使用Git 1.7.1.1.
为什么不git log -- foo适合我,我该如何解决?谢谢!
我已经重命名了几个文件git mv,使用git stash过,快速查看了HEAD(没有更改它),然后又git stash pop重新获得了全部.我的动作已经从提交列表中消失了,所以我重新使用它们git rm并且提交消息声称git发现重命名是重命名.所以我没想到它.
但是现在,提交后,我无法获取移动文件的历史记录!以下是git对有关提交的说法:
~/projects% git log --summary
commit de6e9fa2179ae17ec35a5c368d246f19da27f93a
Author: brone
Date: Wed Dec 8 22:37:54 2010 +0000
Moved R_DebugUI into runtime
delete mode 100644 test/R_DebugUI_iOS.h
delete mode 100644 test/R_DebugUI_iOS.m
create mode 100644 system/runtime/src/R_DebugUI_iOS.h
create mode 100644 system/runtime/src/R_DebugUI_iOS.m
<<snip older commits>>
~/projects%
Run Code Online (Sandbox Code Playgroud)
我现在正试图获取其中一个移动文件的历史记录,所以我可以看一个旧版本,但我没有得到任何非常有用的东西:
~/projects/system/runtime/src% git log --follow --find-copies-harder -M -C R_DebugUI_iOS.m
commit de6e9fa2179ae17ec35a5c368d246f19da27f93a
Author: brone
Date: Wed Dec 8 22:37:54 2010 +0000
Moved R_DebugUI into runtime
~/projects/system/runtime/src%
Run Code Online (Sandbox Code Playgroud)
(我也尝试过没有 …
它说,在git社区书中
您可以做的另一个有趣的事情是使用'--graph'选项可视化提交图,如下所示:
Run Code Online (Sandbox Code Playgroud)$ git log --pretty=format:'%h : %s' --graph * 2d3acf9 : ignore errors from SIGCHLD on trap * 5e3ee11 : Merge branch 'master' of git://github.com/dustin/grit |\ | * 420eac9 : Added a method for getting the current branch. * | 30e367c : timeout code and tests * | 5a09431 : add timeout protection to grit * | e1193f8 : support for heads with slashes in them |/ * d6016bc : require time for xmlschema它将为提交历史记录行提供非常好的ASCII表示.
我该如何阅读此图表?如何420eac9从剩下的有什么不同?
假设您的git commit历史如下所示:
A---B---C---D---E---F master
\ /
X---Y---Z topic
Run Code Online (Sandbox Code Playgroud)
是否可以让git列表只有master,AF上的提交?换句话说,如果提交是在合并分支上,我不希望它显示.
我希望能够看到我今天使用的所有提交git log.我提出了git log --after="yesterday"
但是,这对我来说似乎有点尴尬,是否有更简单的命令来达到同样的效果?
我有一个Git别名扩展为:
git log --graph --oneline --all --decorate
Run Code Online (Sandbox Code Playgroud)
根据man git log有几个可疑的选择:--not和--branches; 但我不能让它正常工作.
我应该如何编辑以隐藏藏匿处?
仅供参考:根据已接受的问题和评论,我的.gitconfig别名现在看起来像这样:
[alias]
l = log --branches --remotes --tags --graph --oneline --decorate --notes HEAD
Run Code Online (Sandbox Code Playgroud) 我有一个简单的测试存储库,只有几个提交,并希望看到日期和时间过滤日志:
$ git log --author="automatix" --since="2013-01-30" --pretty -- test commit ea0719bef142659fa561c9d040b2120012ed0184 Date: Thu Jan 31 02:03:12 2013 +0100 commit ab4a8387bc4d9bdb4f67212df77eb1fc3d8b6304 Date: Thu Jan 31 01:59:11 2013 +0100 commit a0b027beba2cd03571bb9475b9db9542f8efe990 Date: Thu Jan 31 01:50:38 2013 +0100 commit add77c8fe2ba9254c11b98e14facede3420dc51c Date: Thu Jan 31 01:48:34 2013 +0100 commit e6e323c05d37c74fcabeb9186b95c0d49b862e6f Date: Thu Jan 31 01:46:27 2013 +0100 commit 8c286391e54d3fc1e210950b1320fd6f013a8f84 Date: Thu Jan 31 01:41:27 2013 +0100 commit 9c880595e57f717383796fa2940f41f0f42f7e2a Date: Thu Jan 31 01:38:17 2013 +0100 commit a95527f36a533e1ecba1aadceea31a9dcbe1a8db Date: Thu Jan 31 01:30:00 2013 …
How can I move a directory and files to a sub-directory along with commit history?
For example:
Source directory structure: [project]/x/[files & sub-dirs]
Target directory structure: [project]/x/p/q/[files & sub-dirs]
有几次,我遇到过这样的说法:如果你将一个函数从一个文件移动到另一个文件,Git可以跟踪它.例如,这个条目说,"Linus说,如果你将一个函数从一个文件移动到另一个文件,Git会告诉你整个移动过程中单个函数的历史."
但我对Git的一些引擎盖设计有一点了解,我不知道这是怎么回事.所以我想知道......这是正确的陈述吗?如果是这样,这怎么可能?
我的理解是Git将每个文件的内容存储为Blob,每个Blob都有一个全局唯一的标识,该标识来自其内容和大小的SHA哈希.然后Git将文件夹表示为树.任何文件名信息都属于Tree,而不属于Blob,因此文件重命名例如显示为对Tree的更改,而不是Blob.
因此,如果我有一个名为"foo"的文件,其中包含20个函数,以及一个名为"bar"的文件,其中包含5个函数,我将其中一个函数从foo移动到bar(分别生成19和6), Git如何检测到我将该函数从一个文件移动到另一个文件?
根据我的理解,这将导致2个新的blob存在(一个用于修改的foo,一个用于修改的条).我意识到可以计算diff以显示函数从一个文件移动到另一个文件.但是我没有看到关于函数的历史如何可能与bar而不是foo相关联(反正不是自动的).
如果Git的是真正看里面单个的文件,并计算每个函数BLOB(这将是疯狂的/不可行的,因为你必须知道如何解析任何可能的语言),那么我可以看到这是可能的.
所以...声明是否正确?如果它是正确的,那么我理解中缺少什么?