标签: git-log

仅当前树中所有分支的 Git 日志

我想获得的所有分支的日志中只有当前树。

很长的故事

鉴于下面的 git 历史:

$ git log --all --decorate --oneline --graph
* 3d0cb35 (HEAD, master) 4th commit
| * a43b07c (branch) 4th commit in branch
|/  
* 722745a 3rd commit
* 46d0d84 2nd commit
* 3060fe0 1st commit
Run Code Online (Sandbox Code Playgroud)

假设我创建了一个孤儿分支。

$ git checkout --orphan orphan
Switched to a new branch 'orphan'
Run Code Online (Sandbox Code Playgroud)

在孤儿分支中添加一个提交并尝试使用第一个命令来获取“第二个”树的 git 历史记录。

$ git log --all --decorate --oneline --graph
* 202f3c4 (HEAD, orphan) Orphan branch
* 3d0cb35 (master) 4th commit
| * a43b07c (branch) 4th commit …
Run Code Online (Sandbox Code Playgroud)

git git-log git-branch

3
推荐指数
1
解决办法
188
查看次数

Git 日志显示 HEAD 到底指向哪里?

有没有办法让 git log 以不同的方式显示以下情况:(a) HEAD 指向分支指针,分支指针指向提交,(b) HEAD 直接指向提交,分支指针也指向同一个提交?

例如,如果我这样做

git commit -m'My commit'
git log --oneline --graph --decorate
* 655c6f1 (HEAD, master) My commit
Run Code Online (Sandbox Code Playgroud)

所以现在的情况是:655c6f1 <- master <- HEAD。但如果我这样做

git checkout 655c6f1
git log --oneline --graph --decorate
* 655c6f1 (HEAD, master) My commit
Run Code Online (Sandbox Code Playgroud)

所以现在的情况是:655c6f1 <- master,655c6f1 <- HEAD。(我处于分离的 HEAD 状态。)

但在这两种情况下,git log输出是相同的。如何让 git log 区分这两种情况?

git git-log

3
推荐指数
1
解决办法
3097
查看次数

git log --remotes --decorate 显示已删除的分支?

我正在使用git log --oneline --remotes --decorate(不认为--oneline相关,因此它不在标题中)并且我收到此日志(名称和消息已更改)。

$ git log --oneline --remotes --decorate
0efdd55 (HEAD, origin/master, origin/HEAD, master) Merge pull request #1 in FOO/bar-service from develop to master
cec3034 (origin/develop, develop) Merge pull request #2 in FOO/bar-service from refactor-top-level-components to develop
a847a00 (origin/refactor-top-level-components, refactor-top-level-components) Remove an unnecessary file to fix compilation
029e107 (origin/feature/refactor-top-level-components) Add .gitignore, remove editor specific files and compiled output
72dffaf Initial bar service Commit
Run Code Online (Sandbox Code Playgroud)

我在本地feature/refactor-top-level-components创建后不小心通过BitBucket创建了分支refactor-top-level-components。我通过存储推送refactor-top-level-components和删除。feature/refactor-top-level-components为什么它仍然显示在日志中?它实际上没有被删除,还是我使用了错误的日志标志?

git git-log

3
推荐指数
1
解决办法
362
查看次数

如何在一行中使用日期时间和文件名进行 git log

我想要一个 git log(或以任何其他方式)这样的输出,

2015-01-14 10:33:14 main.cpp
2014-10-30 11:30:22 some.cpp
2014-10-27 10:15:43 another.cpp
2014-10-27 09:41:22 main.cpp
2014-10-24 19:15:08 some.cpp
Run Code Online (Sandbox Code Playgroud)

基本上输出应该包含日期、时间和文件更改。如示例所示,一个条目应该在一行中。我检查了漂亮的格式,但找不到输出文件名的方法。

那么,如何从 git 命令中得到这样的东西呢?

git git-log

3
推荐指数
1
解决办法
1821
查看次数

git fetch 后的 Git 日志

我怎样才能得到与 aftergit log相同的结果?git fetchgit pull

我克隆了两个相同的存储库。仅clone适用于第一个,--bare第二个带有标志。一段时间后,我执行了git pull第一个存储库和git fetch第二个存储库。

如果我尝试检查git log存储库,我会得到不同的结果。

cd ~/first
git pull
git log --all --oneline | wc -l
21962

cd ~/second.git
# second
git fetch
git log FETCH_HEAD --all --oneline | wc -l
21903
Run Code Online (Sandbox Code Playgroud)

git git-log

3
推荐指数
1
解决办法
4985
查看次数

使用什么命令来查看我的实际分支来自哪个分支?

我想看看我所在的实际分支来自哪个分支。我已经查看了日志,但它太吵了,我想在这种情况下 100% 确定找到正确的分支。

git git-log git-branch

3
推荐指数
1
解决办法
1426
查看次数

如何在我的整个git repo的提交历史中搜索字符串更改?

我有一个网站/仓库。

我的网站的一部分说:

“由https://myotherwebsite.com/提供支持”

在某个时候,我在网站上工作的一些巨魔将其改为:

“由https://theirwebsite.com提供支持”

我如何搜索整个回购历史记录到进行此更改的提交。

多年来,已经有很多提交/分支。

regex git version-control git-log

3
推荐指数
1
解决办法
60
查看次数

git log --before="4month" 显示 3 周前提交的分支。我究竟做错了什么?

所以我有这个片段,我想用它来过滤掉没有特定前缀并且在超过 3 个月内没有收到任何提交的分支,以便我稍后可以从远程删除它们。

 for k in $(git branch -r | awk -Forigin !'/\/Prefix1\/|\/prefix2\//'); do
  if [ "$(git log -1 --before="3 month" $k)" ]; then
    echo "$(git log -1 --pretty=format:"%ci, %cr, " $k) $k";
  fi;
done
Run Code Online (Sandbox Code Playgroud)

目前的问题是,当我运行这个时,我看到分支在 3 周前、5 个月前、2 个月前、1 个月前等收到提交,但我不明白为什么。

但如果我只运行: git log --before="4 Month" --pretty=format:"%ci, %cr, " 它会按预期工作。

谁能给我任何指导吗?

git shell command-line branch git-log

3
推荐指数
1
解决办法
1382
查看次数

Git合并冲突:找不到问题

一些背景故事!
我一直在使用 git 为一个开源包做出贡献,我在这方面有点新手。我知道一些基本的东西。此外,我还读到如果发生合并冲突,我们可以遍历文件,标记可以帮助我们找到同一文件的两个版本中相互冲突的代码块。

最近第一次遇到合并冲突,是在 Jupyter notebook 文件(.ipynb)上。但是,合并冲突的标记使 Jupyter 无法读取笔记本。所以,我尝试了 JSON 编辑器和 VS CODE 和 Notepad++。虽然我现在可以看到该文件,但它真的很乱,因为它不仅包含 Jupyter notebook 的所有元数据,而且甚至在执行次数方面也显示冲突。另外,如果笔记本中有一个图形作为一个单元格的输出,它会被转换成很多字符,向下滚动并浏览它们是很头疼的。

在搜索 google 和 stackoverflow 并与项目所有者讨论问题后,我们决定采取另一种方法。但是,它不起作用。(我在下面进行了解释,但首先我需要提供更多信息。请耐心等待)

根据提交的历史记录,我应该是在本地通过更改 PARENT 分支上的相同文件而在本地创建此类冲突的人,因为没有人在上游更改它(在原始存储库中)

因此,请让我首先简要介绍一下分支和我对文件所做的一些更改。

  • 在分叉和克隆之后,我创建了一个分支 branch-A
  • 我更改了笔记本“notebook-file”
  • 我做了拉取请求(PR)
  • 我创建了 A 的一个子分支,我们称之为 sub-branch-of-A
  • 切换到子分支后,我更改了两个 .py 文件,然后也更改了 notebook-file
  • 合并sub-branch-of-Abranch-A

在 my 中branch-A,我做到了:git push origin branch-A但我non-fast-forward出错了。这意味着发生了分歧。对?所以,我确实git pull origin branch-A解决了它,但是我遇到了notebook-file.

替代方案

所以,我被告知我可以将文件复制到本地 git 存储库之外的某个地方,然后git checkout notebook-file在发生分歧的父节点中获取文件。对?然后,如果我这样做git pull ...应该没有问题(然后我可以包含该复制文件的更改)

但...

我再次遇到合并冲突错误。我疯了,尝试了几件事,但仍然没有。

我附上了下面的git日志。我所说的分支是Snippets_Tutorial,而它的子分支是 …

git git-pull git-log git-merge-conflict jupyter-notebook

3
推荐指数
1
解决办法
284
查看次数

这个 git log 输出显示两个分支,就好像它们不是分支一样?请解释

feature/XY是功能分支的名称,当前已签出。feature/XY-refactor是另一个分支的名称,它是从 分支出来的feature/XY

当我运行时git log --oneline,我得到下面的输出。这两个在日志输出的最顶部一个接一个是什么意思?我在 Windows 上使用 git bash。

user@host ~/Documents/repo (feature/XY)
$ git log --oneline
9feb11a (HEAD -> feature/XY, origin/feature/XY) Axis labels
d250b90 (feature/XY-refactor) Refactored
87d49c1 Fix typoe
6a8a7c7 Fix print statement
945ffca Fix code layout
3e747c9 Added spaces after comma
b143713 Changed fontsize
a669cd4 Commented out a print statement
// .. more commits
Run Code Online (Sandbox Code Playgroud)

git git-log git-history-graph

3
推荐指数
1
解决办法
465
查看次数