如何判断提交是否属于本地项目

How to tell if a commit belongs to a local project

假设我们有两个会话 - sessionOne 和 sessionTwo。 我使用 sessionOne 两个创建了一个有两个提交的初始项目并将该项目推送到 github remote:

然后我(作为另一个用户)使用 sessionTwo 将这个 Github 存储库克隆到本地,然后我修改一个文件并在本地创建一个提交:

然后我切换到 seesionOne 并创建第三个提交然后将更改推送到远程:

现在我切换到 sessionTwo 并从远程拉取,因为我(代表另一个用户)之前对 seesionTwo 上的现有内容进行了更改,存在冲突,所以我解决了冲突,git 添加了一个合并更改,然后我将更改推送到远程:

现在我的问题是,当我使用 sessionOne 执行 git pull 时,我得到了与上面非常相似的相同输出:

“修改某事”提交最初来自 sessionTwo,但在 sessionOne 中 Sourcetree的输出,蓝色的,时间长了,我快速看图的时候可能会以为这是我时间​​长了的改动。

提交不“属于”任何特定的回购,无论该回购是源、上游、其他远程还是本地克隆。 Git 没有明确跟踪哪个 repo 引入了提交。每个提交的 git 跟踪是:

  1. 提交哈希
  2. 该次提交时 repo 中所有文件的状态。
  3. 它是父提交
  4. 提交作者
  5. 提交者
  6. 作者日期
  7. 提交日期
  8. 提交信息

可能还有其他一些我遗漏的东西,但是没有关于提交来自哪个 repo 的信息。

Note: The commit message might include information about which remote repo or git client the commit was pushed from, e.g. the Merge branch 'master' from... message in your example above, but that was added by GitHub, not by git, and won't be there if the merge was done directly, not through GitHub's interface.

您写道“我可能认为这是我所做的更改”,这意味着您担心 进行了更改。在这种情况下,提交作者和提交者都会被跟踪,正如我在上面列出的那样。

作者和提交者通常是相同的,但在例如您作为作者提交更改并提出拉取请求时会有所不同。当拉取请求被接受时,您将仍然是作者,但接受拉取请求的人将被跟踪为拉取请求产生的提交的提交者。