Skip to content

Latest commit

 

History

History
182 lines (103 loc) · 4.3 KB

4. Cloning, exploring and modifying public repositories.md

File metadata and controls

182 lines (103 loc) · 4.3 KB

Cloning remote repository

GitHub.com/collections/learn-to-code

GitHub.com/leachim6/hello-world

  • remote repository를 local 로 가져오는 방법에는 두 가지가 있다. 첫 번째는 Download ZIP, 두 번째는 URL(git clone)
  • 후자의 방법을 사용하여야 Git repository(.git) 를 포함하여 내려받을 수 있다.
git clone <URL>

Exploring contents of the cloned repository

image-20240607234552088

parent가 둘이다.

image-20240607234657721

image-20240607234823107

git log

cat .git/HEAD 

cat .git/refs/heads/main
# 5e536323618249c28b3da6448d02546001df3acc

git log # merge 된 commit을 찾아라 9de1b

git cat-file -p 9de1b
# tree b63dd
# parent aeb09
# parent 3a4f8
# 부모가 둘이다. merge

git cat-file -p b63dd

Unpacking Git objects

image-20240608002652048

  • ~/Desktop/hello-world/.git/objects/pack

    • 이 곳에 packing 되어 있다.

    • .pack file을 pack folder 밖으로 꺼낸다음 git unpack-objects

      image-20240608002903733

# pwd: ~/Desktop/hello-world/.git
cat pack-ec3c6607d5520d1114f74dd90919df18cd07f9cd.pack | git unpack-objects

# cd objects/
# objects 폴더로 이동해보면 엄청 많은 폴더가 생성되어 있다.

# 폴더의 개수가 256개(16 * 16), 16진수로 된 두 개의 문자가 폴더명이 되므로

# pack file은 삭제해주자.
rm -f pack-ec3c6607d5520d1114f74dd90919df18cd07f9cd.pack

unpack 되어 무수히 많은 objs들이...(최대 256개의 폴더)

image-20240608003002915


Exploring cloned repository in GitHub

  • fetch origin: update from a remote repository

image-20240608013638145


Commit changes in the cloned repository

# pwd: hello-world
git checkout -b new-feature
# Switched to a new branch 'new-feature'

git branch

# 이후 vim으로 readme.md를 수정,
# vscode로 다른 파일도 수정,
# parser.p file 삭제.

위를 따르면 다음 상태

vscode

image-20240608015657302

terminalimage-20240608015837407

GUI

image-20240608015945766

git add .

git commit -m "Edit some file"
[new-feature 9f68279]

image-20240608020132646

commit을 하면 위 상태처럼 changes가 history에 반영된다. 그리고 분기점이 나뉘었음을 아래에서 확인해볼 수 있다.

image-20240608020239828


git diff command

# 임의의 파일을 수정한 후
git diff

임의의 파일을 수정한 후 git status

image-20240608020804849

git diff - ‘a’ file은 수정 전, ‘b’ file은 수정 후

image-20230726215531119

image-20230726220137330

git cat-file -p accefce
git cat-file -p 015d8a9
# a file/ b file 은 각각 old file/ new file 인 셈이다.

# Q. Why there is no such Git object with 015d8a9 SHA1 hash?
# 이전 blobs은 이미 생성되어 저장됐고
# 이후 blobs(015d8a9)은 아직 존재하지 않는다.
# modify만 하고 아직 commit하지 않았기 때문

# 100644 는 permission
# @@ -1 +1,2 @@ : start of 

image-20230726220806370

image-20230726221108505

git commit -m "Change a j/Javascript.js file"

이제 error 가 나왔던 다음 커맨드가 가능해졌다

git cat-file -p 015d8a9

즉, 커밋을 함으로써 새로운 blobs들이 생성되었다.

image-20240608022355395