在Gitk中,我可以看到团队成员的提交(X)有两个父母,第一个父母是他自己的先前提交(A),另一个父母包含许多其他人提交(1到5).合并后,其他人(1到5和其他人)所做的所有更改都不再出现在X,B,C等...
A------------
\
X - B - C
/
1--2--3--4--5
/
e--r--j--k
/
l--m
Run Code Online (Sandbox Code Playgroud)
如果我提交X提交A它没有显示差异,如果我将X提交X提交5它显示所有缺少的更改.此外,在提交X,B或C时,git日志不会显示对提交1到5中的文件所做的更改.但是,如果我执行git log --full-history,则历史记录会显示在1中进行的更改到5,但这些更改仍未出现在实际文件中,并且历史记录未显示它们正在撤消.所以git log --full-history似乎与当前文件内容相矛盾.
我与提交X的用户进行了交谈.他说他没有进行重置或拒绝,他说他在相关时间内没有恢复任何提交.然而,他说他确实有时会做一个拉原点大师,导致其他人的变化被放入他的索引或工作树中,好像他已经做出了这些改变而不是这些改变的实际作者.他说,当这种情况发生时,他会做一个新的克隆,并且不会将任何东西从当地的回购推送给主人,因为他认为Git做错了什么.
这两件事是否相关(坏拉和坏合并)?
我怎样才能确切地说出发生了什么,以便我们将来可以避免这种情况?
是什么原因导致Git有时会将从原始主数据中提取的更改放在本地工作目录或索引中,就像它们是本地更改一样?
我只是使用Git Gui从GitHub克隆一个本地仓库,然后我检查了一个分支.我现在想要看到相当于做一个git log -50,但似乎无法在菜单选项或主屏幕上找到任何内容:

如何查看最后50个更改的提交历史记录/数据?
使用此命令:
git log --all -n30 --graph --abbrev-commit --decorate \
--date=relative --format=format:'%h - (%ar) %s - %an%d'
Run Code Online (Sandbox Code Playgroud)
我将得到一棵美妙的树,这正是我正在寻找的,除了HEAD并不总是在顶部.
如果我删除该--all选项,我也将丢失所有显示的分支.
如何将HEAD保持在顶部并仍然可以看到最后30个元素可见的完整树?
换句话说,我得到的是
* d4b7d5a - (foo)
* * 44f53e2 - (HEAD)
|/
* 4587f32 - (bar)
Run Code Online (Sandbox Code Playgroud)
而我想得到的是:
* 44f53e2 - (HEAD) <- HEAD on the top
| * d4b7d5a - (foo)
|/
* 4587f32 - (bar)
Run Code Online (Sandbox Code Playgroud) 任务编号= JIRA问题编号=****(例如:7600)
假设我有一个提交列表,其中包含以下消息:
PRJ-7600 - first message
PRJ-8283 - second message
PRJ-8283 - third message
PRJ-1001 - fourth message
PRJ-8283 - fifth message
PRJ-7600 - sixth message
Run Code Online (Sandbox Code Playgroud)
第一个用于最早的提交.
通缉输出:
1001
7600
8283
Run Code Online (Sandbox Code Playgroud)
我使用以下命令列出了我的提交:
git log --author="First Last" --oneline --grep=PRJ --pretty=format:"%s" | sort
Run Code Online (Sandbox Code Playgroud)
哪里
--grep=PRJ指定忽略自动生成的注释(" 合并分支... ")(替代--no-merges)--pretty=format:"%s" 仅显示消息(删除哈希)实际产量:
PRJ-1001 - fourth message
PRJ-7600 - first message
PRJ-7600 - sixth message
PRJ-8283 - fifth message
PRJ-8283 - second message
PRJ-8283 - third …Run Code Online (Sandbox Code Playgroud) 每当我git log --all --graph --oneline --decorate在终端模拟器中查看输出时,都会在终端屏幕的顶部查看第一次提交。当我用 退出git log输出视图时q, 中的几行不再可见,因为屏幕底部附加了一些新行,用于下一个命令。
不过,通常这些顶行是最有趣的,因为它们类似于最近的 git 历史记录,所以我希望它们在我输入下一个 git 命令时仍然可见。
如何使git log输出显示在屏幕底部,即在底部查看第一个提交?您必须向上滚动才能查看较旧的提交。
注意:--reverse出于两个原因,该标志不是一个选项。
--graph标志结合:fatal: cannot combine --reverse with --graph。我正在使用git log,以便在两个分支之间生成差异.我正在使用的确切命令是:
git log --left-right --graph --cherry-pick --oneline sourceBranch...targetBranch
Run Code Online (Sandbox Code Playgroud)
我想知道的是我是否可以根据提交消息排除一些日志条目.例如,我们的测试自动化团队提交的所有提交都包含一个特定的标识符,我们称之为TEST_AUTO.目前,我的差异输出看起来像这样:
> 1e31b8x Merge pull request #1225 in base/project from feature/ABCD-1111 to master
|\
| > b2f0dfx [ABCD-1111] rework help tour // fixes
| > 270072x [ABCD-1111] rework help tour // merge fixes
| > 98ffeax [ABCD-1111] rework help tour // merge fixes
| > ff2e25x Merge branch 'master' into feature/ABCD-1111-rework-help-tour
| |\
| > | f0daf2x [ABCD-1111] rework help tour // new menu
| > | …Run Code Online (Sandbox Code Playgroud) 语境:
因此,问题:
我将如何使用 git 命令行和可选的基本 bash 工具
git tag -l --merged ${BRANCH_COMMITTISH},但我不需要给定分支的标签,而是给定标签的分支)我有以下场景:
1 和 3 中的文件几乎相同,只是做了一些微小的更改,但由于多次迭代,我最终创建了一个全新的文件并删除了旧文件。有没有办法在文件 3 中保留/移动文件 1 的 git 历史记录?
我能想到的一种方法是恢复到我删除旧文件的提交,然后使用
git mv src/GetData.cs src/Get/GetData.cs
将其移动到新文件夹,但中间有很多其他提交和更改,所以我想避免这种情况。
提前致谢。
我的 bashrc 文件中有以下别名。
alias gl="git log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all"
alias glh="gl | head -n 20"
Run Code Online (Sandbox Code Playgroud)
这两个别名都用于以彩色打印 git history 的输出。然而,随着 git 的更新,git version 2.19.1 glh停止以彩色打印输出。gl仍然以彩色打印输出。有没有办法强制git log保持颜色,即使它是通过管道传输的head?
操作系统:
ProductName: Mac OS X
ProductVersion: 10.11.6
BuildVersion: 15G22010
Run Code Online (Sandbox Code Playgroud) 在Idea中按alt+9可以看到git log窗口:
我看到这些点代表提交。这些线代表分支吗?如果是这样,如何找出每条线代表哪个分支?
我看到如果我将鼠标悬停在一行的某些部分上,其中的一部分就会突出显示,突出显示的部分是什么意思?如果我点击它,它会变成一条虚线。刚刚发生了什么?
有没有文章或视频详细解释 Idea git log 窗口或其使用的树状 git log 结构?我已经阅读了Idea 的 git log window 帮助页面,但关于这些行的字数很少。