没有瓷器的基本Git?

时间:2013-05-25 17:10:19

标签: git

如何仅使用Git管道命令完成以下基本序列?

% git init
% git add this that
% git commit -m 'initial commit'
% vim this
# ... edit this ...
% git add this
% git commit -m 'update this'

2 个答案:

答案 0 :(得分:9)

请注意,并非所有命令都具有基础“管道”命令,并且通常也会执行更多操作。但是发生的事情基本上是这样的:

  1. git init - 主要通过从share / git-core / templates中的模板复制来创建.git目录。
  2. git add file - 主要是git-hash-object -t blob -w file创建blob对象并更新.git/index文件以包含文件(git-update-index)。如果涉及树(几乎总是),则也使用git-write-tree
  3. git commit - 写入提交对象并将其与git-hash-object一起存储。然后使用git-update-ref更新分支引用。
  4. 如果您对Git的内部感兴趣,那么我可以推荐Scott Chacon的Git Internals书。

答案 1 :(得分:5)

好的,以下内容或多或少是我想要的:

% git init
% git hash-object -w this
24ac30b4e2ec3847ed909d7772b1639fb4ce9dc0
% git update-index --add --cacheinfo 100644 \
24ac30b4e2ec3847ed909d7772b1639fb4ce9dc0 this
% git hash-object -w that
aca9f36014c1e5e5f142b81ddc3e1339d39cafa7
% git update-index --add --cacheinfo 100644 \
aca9f36014c1e5e5f142b81ddc3e1339d39cafa7 that
% git write-tree
2f7f75f1d091c19c6d857309d4c6428a1daa9aae
% git commit-tree -m 'initial commit' 2f7f75f
ed92b7cf869f580904a6065166c823712a459b4a
% git update-ref refs/heads/master ed92b7c
% vim this
# ... edit this ...
% git hash-object -w this
34ff55620a76bfd6e76f442f77464174f0a0959f
% git update-index --cacheinfo 100644 \
34ff55620a76bfd6e76f442f77464174f0a0959f this
% git write-tree
1e615b69c3b6959297cfaac6f139626ea4e54e7e
% git commit-tree -m 'update this' 1e615b6
d9478d161498357c2c3dd975f76bc2fbc817695c
% git update-ref refs/heads/master d9478d1