标签: git-log

Git正在丢失单个文件的历史/内容

我在一家小公司工作,我们的Git回购有点搞砸了.我刚刚做了一个git pull,我今天早些时候做出的改变都消失了!

当我在主分支上的HEAD上工作时,在其历史记录中git log显示我的最后一次提交b94940c63ef965ce45b0d64ccfba4359134d2552.

现在,如果我git log filename为丢失更改的有问题的文件执行操作,则不显示该提交(仅显示先前的提交).

执行git log --follow filename,我的提交b94940c63ef965ce45b0d64ccfba4359134d2552显示为最新.

果然,如果我这样做:

git checkout b94940c63ef965ce45b0d64ccfba4359134d2552
git log filename
Run Code Online (Sandbox Code Playgroud)

然后显示提交,我的更改在文件中!

换句话说,我所做的提交显示在分支历史记录中(阻止分支合并),但是单个修改过的文件在其历史记录中没有该提交!(除非我明确签出该提交).

问题:

  1. 这究竟是怎么发生的?

  2. 我如何解决它?(我们的仓库中有多个文件存在问题)

git git-log

8
推荐指数
2
解决办法
2547
查看次数

我可以影响gitk和Eclipse Egit中显示的分支的顺序/列

在做的时候,gitk --all我会在整个回购中获得一个很好的提交/分支/标签摘要.

但是,显示分支的方式并不总是一致的,它也与Egit在Eclipse的"历史记录"窗格中使用的方法不同.

有没有办法控制 gitk和egit之一/两者的列的排序

具体来说,我希望始终在第一个(最左侧)列中提交.

(如果可能的话,我想要对nvie模型的图表进行180次旋转,但只需在左侧与master建立一致的顺序就足够了.)

我读到gitk接受了大多数git-log参数,所以我检查了它的手册页但是无法弄清楚这些选项的内容(如果有的话).(如果这是正确的路线,我将如何使用这些选项?)

git gitk egit git-log revision-history

8
推荐指数
1
解决办法
410
查看次数

Git:相当于` - git bisect`和`git blame`的`--full-history`

我已经使用Git大约7年了.几天前,我发现了一个让我感到惊讶的行为.我找到了git log,git blamegit bisect展示了这种奇怪的行为.朋友让我知道那个--full-history标志git log解决了我的问题.我想知道,对于我自己的教育,是否有相应的修复git blamegit bisect.

请使用此repo随意查看问题:https://dl.dropboxusercontent.com/u/1927707/problematic_repo.7z

这是它的日志:

$ git log  --graph
* commit b7a8d7aa001d06eb7491ab5fb447a8dd3aa421a8
| Author: Ram Rachum <ram@rachum.com>
| Date:   Tue Apr 19 17:45:01 2016 +0300
|
|     adding more to some-file
|
*   commit 0aa833916e908ea93902a6c4c227f9a884a1bcef
|\  Merge: 2413945 3068c7d
| | Author: Ram Rachum <ram@rachum.com>
| | Date:   Tue Apr 19 17:44:31 2016 +0300
| |
| …
Run Code Online (Sandbox Code Playgroud)

git version-control git-bisect git-log git-blame

8
推荐指数
1
解决办法
183
查看次数

git log输出的差异--decorate :( HEAD - > master)vs(HEAD,master)

当我得到GIT仓库的日志时:

git log --oneline --decorate --graph
Run Code Online (Sandbox Code Playgroud)

输出是这样的:

* 44025ed (HEAD -> master) second commit
* adf2dbb first commmit
Run Code Online (Sandbox Code Playgroud)

在另一个回购中,当我git log,我得到:

* 435b61d (HEAD,master) bar
* 9773e52 foo
Run Code Online (Sandbox Code Playgroud)

(HEAD -> master)和之间有什么区别(HEAD,master)

git git-log

8
推荐指数
1
解决办法
1790
查看次数

Git表示分支合并,但显然没有变化

我已经把自己处理成一种对我没有意义的情况.我会尽力描述它.

我有一个开发分支,我已经将master合并到了它git checkout develpment && git merge master.我没有在这里得到任何合并冲突.

有一个我感兴趣的具体提交,让我们说它是abcd123.当我跑步时git branch --contains abcd123,它报告两者developmentmaster包含abcd123.当我这样做时git log,它会abcd123在提交列表中显示,包括on development和on master.

git show abcd123显示包含两个文件的更改.但我似乎无法找到这些变化.当我查看文件时,我看不到这些变化,无论是开development还是开master.当我检查时git log -- path/to/file1,我看不到abcd123,同样的git log -- path/to/file2.

这里发生了什么?如何提交,但变化显然不存在?

abcd123最初可能是在development合并到另一个分支(除了)之外引入的master.我不知道这是否会有所作为.

顺便说一句,当我尝试git checkout master && git merge development(合并后masterdevelopment如上图所示),我得到了很多的合并冲突,包括文件1和文件2的.所以这似乎表明master实际上没有合并development- git merge development …

git merge git-log

8
推荐指数
1
解决办法
6816
查看次数

Git日志的-r选项有什么作用?

手册页git-log(1)说:

-r
显示递归差异。

因此,我们可以用另一种方式提出这个问题:

在这种情况下,“递归差异”是什么意思。

从@phd 获得此答案后,我做了一些针对指示方向的测试:

如果我在当前版本的Git源存储库(最近从https://github.com/git/git.git克隆)中执行以下命令并签出master(当前指向commit 6a6c0f1),它们将给出相同的输出:

git log --name-only -m
git log --name-only -m -r
Run Code Online (Sandbox Code Playgroud)

(对于这个工作,人们可能不得不增加diff.renameLimit对周围3150)。我试图与Git的版本2.10.2和2.17.1获得平等的结果。

另外,命令

git log --name-only -m master~..master
Run Code Online (Sandbox Code Playgroud)

输出

commit 6a6c0f10a70a6eb101c213b09ae82a9cad252743
Author: Junio C Hamano <gitster@pobox.com>
Date:   Thu May 9 00:37:54 2019 +0900

    The eighth batch

    Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/RelNotes/2.22.0.txt
Run Code Online (Sandbox Code Playgroud)

从最后一行可以看到,即使没有,该命令也会进入子目录-r

git git-log

8
推荐指数
1
解决办法
77
查看次数

git log / show等替换终端屏幕

我最近开始zsh在iTerm2上使用(oh-my-zsh,无需自定义)。但是,我在git log或中遇到了麻烦git show

例如,以前,git log结果只是终端的一部分,就像ls -l结果一样。戒烟后git logq键,结果被保留在终端屏幕。我能够轻松地选择一些哈希ID。

但是,当前的问题是git log(或git show)结果替换了屏幕。因此,退出后git log,终端将完全删除所有git结果并返回到原始屏幕。这种行为就像vim

即使使用bashMac的默认终端应用程序,此行为也相同。这不是问题--no-pager

任何帮助将不胜感激。

git terminal git-log oh-my-zsh

7
推荐指数
2
解决办法
870
查看次数

git恢复合并:确定哪个父项是哪个(-m 1 vs -m 2)

我试图恢复合并,但我不知道是否使用git revert -m 1 <merge commit's sha>git revert -m 2 <merge commit's sha>.我如何找出哪个父母是-m 1哪个父母是哪个父母-m 2

git git-merge git-revert git-log

7
推荐指数
1
解决办法
1054
查看次数

打印 git commits 加入一行的正文

如何打印 git commits 以仅打印正文(没有标题的提交消息)但在一行中?所以提交正文行被连接起来,可能用空格分隔,并打印为一次提交的一行。

例如,有两个提交 A 和 B,命令:

$ git log --format=%b
Run Code Online (Sandbox Code Playgroud)

印刷:

Commit A, line A.1
Commit A, line A.2
Commit B, line B.1
Commit B, line B.2
Run Code Online (Sandbox Code Playgroud)

但我想得到:

Commit A, line A.1 Commit A, line A.2
Commit B, line B.1 Commit B, line B.2
Run Code Online (Sandbox Code Playgroud)

git commit-message git-log

7
推荐指数
1
解决办法
1200
查看次数

git log 不显示所有提交

我最近学习了很多关于 git log 的知识,并且想将其写入一个文件,以便我可以处理它并从中编写变更日志/发行说明。但是,当我在两个提交或两个标签之间写入 git 日志时,我会丢失其中的许多提交。我不知道这是为什么。我检查了 GitHub 网络图并手动检查了 GitHub 上的提交历史记录,我丢失的提交是属于该分支的提交,所以我认为我的命令错误或不完整。

这是我所做和尝试的

  • 在 git bash 中,导航到相应 .git 文件夹所在的目录
  • 查看相应的分支(在我的例子中为 dev)
  • 查看完整的历史记录,没有合并提交(写入文件)
    $ git log --pretty=oneline --no-merges --decorate=short > file1.txt
    这给了我所需的信息量;输出如下所示(请忽略提交消息本身...):

a384d44ff80de33aebd9057f3c99e822440fa545 Adjusted dev version (#13)
6ddf190dd11bcc71552b482b4751acc7c98a74d2 (tag: 0.0.1) 0.0.1
f7fb130f7b3f48d5fc0b2edde2bb888a891c76a6 Back to 0.1.1
881e70c8df9a3df6ec8ee8cba13b39165e9db179 Update DESCRIPTION version
d3dc1169705c5f48748bcd72d07ebd2bf5eff59f Update DESCRIPTION version
b766875b4fcaa978f6ec85129a2542ed5dd44762 Update description file version number to match version tag
ed04156444914785b002b5c94b501ed54b5b99a4 (origin/vd-networkPl )调试以修复 igraph graph_from_data_frame() 的问题
dd96aca4db22d5b9921726795642a2358248526d 编写网络图小插图
64d216700a9df8393eeab0b2c6967554da18a092 更新 codex 以使用网络图

  • 然后我尝试缩小范围,因此只写两个提交或两个标签之间的历史记录
    git log --pretty=oneline --no-merges --decorate=short commit1..commit2> file2.txt …

git git-log

7
推荐指数
1
解决办法
1万
查看次数