Hi, Today I learnt that a gitlink is a commit object embedded in a tree. However, I can't seem to be able to cat it. $ git ls-tree HEAD 100644 blob 5a91f388f3648b98ae34a19ec42ba9acc7852ef4 .gitmodules 160000 commit 8daa12004db8862b22f6c7dd244a88ac6108b194 dotfiles $ git cat-file 8daa12004db8862b22f6c7dd244a88ac6108b194 fatal: git cat-file 8daa12004db8862b22f6c7dd244a88ac6108b194: bad file Why is this? Does the object not exist in the object store at all? Then how was it embedded in the toplevel tree object in the first place? Also, why (how) does 'git diff' give me the impression that it's a blob? $ git diff diff --git a/dotfiles b/dotfiles index 8daa120..ff61f40 160000 --- a/dotfiles +++ b/dotfiles @@ -1 +1 @@ -Subproject commit 8daa12004db8862b22f6c7dd244a88ac6108b194 +Subproject commit ff61f40e0938024aa3b748eb733a974b17082ec2 If it is really a blob, I should be able to stage and unstage it normally, but the following command is a no-op: $ git checkout -- dotfiles What is going on? Shouldn't we get rid of these ugly inconsistencies? Ram -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html