我可以从vscode执行各种git命令,但是我找不到一种可视化历史记录的方法.
Git是快照的DAG,图上的每个节点都代表一个提交.每个提交都可以有'n'个父提交.
鉴于任何两个提交,是否有一种简洁的方法来识别DAG中这两者的"顺序". git rev-list
似乎是最有希望的,但我似乎无法找到正确的咒语.
理想情况下,我会有以下内容
$ git related hash1 hash2
hash1 is ancestor of hash2
Run Code Online (Sandbox Code Playgroud)
要么
hash2 is ancestor of hash1
Run Code Online (Sandbox Code Playgroud)
要么
hash1 unrelated to hash2
Run Code Online (Sandbox Code Playgroud)
要么
hash1 is equal to hash2
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一种方法来判断给定的提交是否位于给定分支的第一个父链上。因此,例如,合并基不会飞,因为提交可能已被合并。我想知道确切的提交是否曾经是分支的尖端。
注意:相关分支采用非快进合并策略。
如果一个Git仓库结构看起来像这样:
master: A-C
dev: \B-D-E
Run Code Online (Sandbox Code Playgroud)
是否有可能将开发分支合并到master中,以便仅将一个提交添加到master中,其中包含在development分支中所有提交中找到的所有更改。因此,上述结构将合并为以下形式:
master: A-C-E'
Run Code Online (Sandbox Code Playgroud)
该E'
承诺将包含所有来自开发分支的变化,只有最新提交信息,添加新的功能,掌握在一个整洁的承诺。
在Git中可能吗?我希望能够使GitHub存储库的历史记录保持整洁,因为我的开发分支通常包含未完成,未打磨且不适合人类消费的早期提交。
I have a project that has more than 3 years of history in the svn repository. It was migrated to git, but the guy who did this, just take the last version and throw out all these 3 years of history.
Now the project has the last 3-4 months of history in one repository, and I've imported the other 3 years of svn history into a new git repository.
Is there some way to connect the root commit of the …
/sf/answers/384556441/解释了如何为文件执行git log命令.有没有办法通过git log或其他git命令跟踪文件的一部分是如何更改的?(当然,这肯定会对git的diff引擎造成压力,因为部件的长度和行数会发生变化.但git在这方面相当不错.)
我有一个存储库 A(原始存储库),具有完整的提交集。在某个时间点,决定不再使用存储库 A,并从头开始创建一个新的干净存储库 B,使用复制 + 粘贴将所有存储库 A 的内容放入其中(而不是通过将 A 的内容合并到干净的 B 中,以便保留提交历史记录)。我现在想要实现的是将存储库的提交和历史记录(粘合历史记录非常重要)粘合到第三个新的干净存储库 C 中。最终目标是存储库 C 应该包含源存储库 A 和B 按时间顺序排列,就好像存储库 B 根本没有创建,例如,好像工作已经在存储库 A 中进行。
所以目前的情况是:
仓库 A:提交 A1 > 提交 A2 > 提交 A3 > ... > 提交 An
仓库 B:提交 B1 (= A1 + A2 + A3 + ... + An) > 提交 B2 (= 提交 An+1) > ... > 提交 Bk
尝试了以下方法:
git remote add -f A <repo_A_url>
git merge A/master
git remote add -f B <repo_B_url>
git merge …
Run Code Online (Sandbox Code Playgroud) 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) 以下是show-rev的git输出
$ git name-rev --all
2651919f941c11581c794b40aadb2028c4f52ab4 joincolumn_issue
2617f2a1410ce0ec8ea268bbb073008b73490e78 master~2
292def505dd3cdbfd9ac974396775683b5f4c288 ls
0ec9116840a3f21c0b800617c29b7ddab5fda928 joincolumn_issue~2
ee9bb706c8fcc329fac4acf69ad6b684f1069170 master~1
d56a6751771b1f62d9ceb0bcce9a2391c004ee44 master^2
3d80a12ed375c6a9572cde39b5be0722c8cb6439 joincolumn_issue~1
df1834dbe560c2c95c8abaeec494eb1767b96a1e master
Run Code Online (Sandbox Code Playgroud)
如您所见,带有master^2
和的master~2
行,
因此,想知道这两者之间有什么区别,并且输出也不按时间顺序排列。
进一步的git图显示如下
$ git log --all --oneline --graph
* 2651919 (origin/joincolumn_issue, joincolumn_issue) changing to @JoinColumn(name="country_nm")
* 3d80a12 hibernate ignoring joinColumn value
* 0ec9116 changing name in joinColumn is breaking
| * 292def5 (origin/mappedBy, mappedBy, ls) OneToMany using mappedBy
|/
* df1834d (HEAD -> master, origin/master) Merge branch 'master' of https://github.com/samshers/graphql-hibernate
|\
| * d56a675 …
Run Code Online (Sandbox Code Playgroud)