哪些内容被转换为 Git SHA-1

what contents are converted to Git SHA-1

我几乎不怀疑 git operation/workflow:

1.The Git SHA-1 在每次提交时形成。我需要清楚,哪些文件用于制作该 SHA?,

2.I 我有 Windows 机器。我单独安装了 Sourcetree(GitClient),没有安装 git 软件。我在 Github.com(远程存储库)创建了一个存储库,通过这些,我实现了我的工作区作为版本控制过程。我的工作区在远程。

如有错误请指正 -> "Without Installing Git server in our machine, we can achieve code versioning via Remote repository. And, if we need Local Repository, we should need Git server."

求大神解惑。谢谢:)

SHA 计算

SHA 是父对象哈希、树哈希、作者的姓名和电子邮件、时间戳、提交消息文本以及提交中涉及的文件的结果。 (以及 GPG 签名,如果存在的话。)

这就是为什么如果您更改提交消息或重新提交提交,您最终会得到一个新的 SHA。

存储库中的其余文件不直接涉及该 SHA,但提交的父项的 SHA 是计算的一部分,因此它们是间接涉及的。

您可以使用cat-file查看涉及的元数据。获取提交 ID 并执行此操作:

$ git cat-file -p 3d911c37dc7cc6d50af9cbc66aa36084158308f5
tree 487660899e53bef8b15d3e1692172f689ed965c5
parent aa3b68973e845b7a900ab164603f154c8a1ba1c5
author Dan Lowe <dan@xxxxxx.com> 1483760015 -0500
committer Dan Lowe <dan@xxxxxx.com> 1483760015 -0500

Update line number settings in vim for 7.4+

在这里我们看到树对象、一个父对象、作者和提交者以及提交消息文本。未显示附加的文件对象,但它们在那里。在某些情况下,还会存在第二个父级(例如合并提交)。

Git 客户端和服务器

所有 git 存储库都是完整存储库(浅克隆除外)。因此,如果您在笔记本电脑上创建一个新的存储库,它就是一个完整的存储库。您可以添加、删除、提交、变基,所有这些操作都是完全本地的。整个存储库历史记录都在您的笔记本电脑上。这就是 git 非常擅长离线工作的原因之一。

但是,大多数人认为还不够。他们需要与其他开发人员共享代码,或发布它以供 public 消费。这就是 Github、Bitbucket 等服务的目的

这些服务只是完整存储库的另一个副本,您正在与它同步。

您可以尝试一下。我将使用命令行 git 而不是 SourceTree。

## Make two repositories
mkdir a && cd a && git init
cd ..
mkdir b && cd b && git init --bare

## Add some content to 'a'
cd ../a
touch a.txt && git add . && git commit -m "New content"

## Set the other repository as your remote
git remote add origin ../b

## Let's push!
git push -u origin master

## Take a look at 'b' now...
cd ../b
git log

... 你的提交就在那里。您刚刚创建了一个 git 服务器!虽然不是最有用的,因为它就在你的磁盘上。但是,如果您在中间放置一些 SSH 或 https 服务器...现在您有了 Github,只是没有花哨的 Web 界面部分。