git:复制远程分支历史记录(.git / logs文件夹)

时间:2012-01-08 04:21:10

标签: git

我想知道git命令行是否有办法从远程仓库复制分支历史记录。换句话说,我想将.git/logs目录从远程复制到我的.git/logs目录 - 即使这意味着覆盖我的日志文件夹。


编辑:

为了进一步澄清,假设在名为foo的远程上有一个名为origin的分支,我希望能够输入:

$ git rev-parse --verify foo@{2}

在我的计算机上,输出与原点完全相同。这需要的不仅仅是git log

此外,有人可以执行git update-ref foo foo^以撤消提交,并且该历史记录仅保留在.git/logs文件夹中。

1 个答案:

答案 0 :(得分:1)

历史将与克隆一起复制。您需要做的就是检查分支并运行日志。

示例 - 假设您的远程存储库为origin,分支为foo

您可以运行git checkout --track -b foo origin/foo结帐并跟踪远程分支

要获取历史记录,请运行foo确保您位于分支git branch,现在输入

git log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short 

你可以看到分支的历史

$ git log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short
* 075086d 2012-01-06 | Added for joyent (HEAD, origin/tableUpdate, tableUpdate) [xxx]
* 8352180 2012-01-06 | Added package and loggging [xxx]
* ed9300f 2011-12-26 | Added stylesheet [xxx]
* e8b39fa 2011-12-26 | Increased templating, renamed div to meaningful names [xxx]

如果我切换到母版,它将会有所不同,正在运行git checkout mastergit log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short,我

$ git log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short
* 6402a2e 2012-01-08 | Added README (HEAD, origin/master, origin/HEAD, master) [xxx]
* 292c57a 2012-01-08 | Removed port, this is autodetected [xxx]
* e0ef362 2012-01-08 | Changed port to 8080 and document lookup is dynamic [xxx]

最后,为了防止在输入那个长日志命令时手指晃动或脱落。您可以创建一个快捷方式,在主目录中创建(假设为Unix)~/.gitconfig并添加行

[alias]
    hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short

然后您可以运行git hist