Subject: Self-inflicted "abort" in a newbie attempt at read-only exploration of a cloned repository?

From: Thierry Moreau <[email-masked]>
Date: Thu, 05 Apr 2018 19:42:59 +0000

Dear GIT enthusiasts!

This ends up with a "git checkout" command aborting. A bit frustrating 
at the early stage of GIT learning curve.

My first goal is to clone repositories locally in order to explore the 
various linux kernel versions, with the rich GIT metadata.

Thus, I clone:

$  git clone --branch linux-4.16.y 
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git 
linux-stable
$  git -C linux-stable/ branch
* linux-4.16.y

So far so good. Then, I want to extract an earlier kernel version into a 
tmp dir:

$  mkdir tmp
$  git -C linux-stable/ --work-tree $PWD/tmp/ checkout linux-4.15.y
$  git -C linux-stable/ branch
* linux-4.15.y
   linux-4.16.y

I got my extracted 4.15 version but the source repository (index? ...?) 
has somehow changed. Let me try something silly:

$  git -C linux-stable/ --work-tree $PWD/tmp/ checkout linux-4.14.y
$  git -C linux-stable/ branch
* linux-4.14.y
   linux-4.15.y
   linux-4.16.y

I indeed switched my extracted version from 4.15 to 4.14, but I am 
puzzled that the local source repository (linux-stable) is modified. 
Then I try to bring it back closer to its original state, just to keep 
things tidy:

$  git -C linux-stable/ checkout linux-4.16.y

And this command aborts, both with Git versions 2.01 and 2.17. Here is 
the truncated command output:

error: Your local changes to the following files would be overwritten by 
checkout:
	.gitignore
	.mailmap
	Documentation/00-INDEX
	Documentation/ABI/obsolete/sysfs-gpio
	Documentation/ABI/stable/sysfs-bus-vmbus
	Documentation/ABI/stable/sysfs-devices
	[... ...]
	Documentation/devicetree/bindings/arm/mediatek/mediatek,vencsys.txt
	Documentation/devicetree/bindings/arm/omap/crossbar.txt
	Documentation/devicetree/bindings/arm/omap/ctrl.txt
	Documentation/devicetree/bindings/arm/realtek.txt
	Documentation/devicetree/bindings/arm/rock
error: The following untracked working tree files would be overwritten 
by checkout:
	Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Diagram.html
	Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Memory-Ordering.html
	Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-invocation.svg
	Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-registry.svg
	Documentation/RCU/Design/Memory-Ordering/TreeRCU-dyntick.svg
	[... ...]
	arch/riscv/include/asm/smp.h
	arch/riscv/include/asm/spinlock.h
	arch/riscv/include/asm/spinlock_types.h
	arch/riscv/include/asm/string.h
	arch/riscv/include/
Aborting

Questions:
=========

Is there a GIT tutorial that begins with my stated goal of an 
extract-only usage of cloned GIT repositories? (Maybe the root cause is 
my reluctance to learn the more involved GIT usages.)

Does the above reproducible abort deserve attention?

Any suggestion for my stated goal?

Thanks in advance,

- Thierry Moreau