프로젝트

[GIT] 기본 실습(1)

dayeonsheep 2023. 9. 4. 18:42

1. git 기본 실습
 
[유저 정보 입력]
git config --global user.name "이름"
git config --global user.email "이메일"


[Workin Directory 생성]
mkdir 혹은 gui로 파일 생성
git init
 

 

리눅스 mkdir 옵션 리눅스 디렉토리 만들기

리눅스 기본 명령어 중 mkdir 명령어는 리눅스 디렉토리(폴더) 만드는 명령어입니다. mkdir 명령어가 무엇인지 mkdir 옵션에 대한 설명과 mkdir 명령어 옵션에 대한 실제 예시와 mkdir 명령어를 잘못 실

rhrhth23.tistory.com

 

 
[파일 생성]
touch, echo 명령 혹은 gui로 직접 설정
touch 파일명 
echo 작성할 내용 > 파일명
하면 생김

 

cat 명령어로 파일 내 내용 확인 

[git 상태 확인]
git status


[Stage Area로 옮기기]
git add 

git add 파일명 
git add . // 전체 add (점(.)은 모든 것을 의미) //현재 디렉토리의 모든 변경 내용을 스테이징 영역으로 넘기기
git add -A //작업 디렉토리 내의 모든 변경 내용을 몽땅 스테이징 영역으로 넘기고 싶을 때는, -A 옵션
 

  • git add -A는 작업 디렉토리 상에 어디에 위치하든 항상 동일하게 모든 변경 내용을 스테이징으로 넘김
  • 반면에 git add .는 명령어를 실행한 디렉토리 이하에서 발생한 변경 내용만 포함하며, 해당 디렉토리 기준으로 상위 디렉토리의 변경 내용을 포함하지 않음
  • 만약에 git add .를 프로젝트 최상위 디렉토리에서 실행한다면 git add -A와 동일한 효과를 낼 것


git add *.txt     // 모든 txt 파일 업로드
git add project/app/*/    //디렉토리 업로드
git add --update     // 현재 git이 추적하고 있는 파일들만 add
 

  • https://nemomemo.tistory.com/77
  • https://victorydntmd.tistory.com/73


[.git에 Log 남기기 (스냅샷)]
git commit 혹은 git commit -m "한줄 주석"

 

:wq 입력해서 나가기


[Log 확인]
git log



2. Working Directory 에서의 Tracking Status

git status에서 확인

- untracked - 형상 관리의 대상에서 제외된 상태 (추적 상태 X)
- traked - git이 형상 관리 대상으로 추적하고 있는 상태
       + unmodified : 수정X, 변화 X (이전 버전과 비교했을 때)
       + modifed : 수정O, 변화 O (이전 버전과 비교했을 때)

요건 practice.txt 와는 다른 커밋 예시


근데 의문점
.DS_Store는 맥에 기본 뭐… 설정되어있는 그런건지? 찾아봐야할듯! 

3. Untrack 가 아니라 아예 무시

.gitignore : .git 디렉토리가 있는 같은 레벨의 디렉토리에 .gitignore 이름으로 생성 후 
                    (폴더가 아닌 확장자가 없는 텍스트 파일)

- 이 문서에 폴더 혹은 파일을 한 줄씩 기입
- 이 문서에 기입된 리스트들은 git의 tracking 대상에서 제외.

--- .gitignore 예시 ------
logs
logs/*
*.py
*.class
files/*.jpg
--------------------------




4. 상태 확인(4번, 5번 리뷰)

git status --long 
git status -s
git status -h

?? : Untracked
M : Modified
MM : 파일이 스테이징 된 후, 다시 Modified
A : 경로가 스테이징 된 후, 경로 내에 Untracked 파일 발생




5. 변화를 파일 별로 비교해보기

- 로컬에 있는 파일 중 변경 사항이 있는 파일 확인하기 

git diff

   diff --git a/c.txt b/c.txt // 여기서 a는 변경 전 / b는 변경 후를 의미
   index 12a8798..8ccd933 100644 
   --- a/c.txt // 변경 전엔 없었는데
   +++ b/c.txt // 변경 후엔 추가
   @@ -1 +1,2 @@ // -1 에서 -는 이전을 의미, 1은 첫 번째 줄을 의미. +1,2 에서 +는 이후를 의미, 1은 첫 번째 줄, 2는 기준으로부터 몇 줄을 보면 된다 의미
    hello world!
   +adddafsdaffjskdahfaskdjfhjsdfhajskdfhak // 추가 되었단 의미고 초록색으로 표시됨

- 스테이지에 있는 파일 중 변경 사항이 있는 파일 확인하기
   git diff --staged(==--cached) // 내용은 마찬가지




6. 변화를 확인했으면, stage area로 넘겨보기

git add (stage area로 넘길 대상)
git add . || git add ./*     : 해당 디렉토리의 추적하는 모든 대상
git rm --cached *     : 현재 stage에 올린 대상들을 다시 Working Directory 수준으로 내리기



7. 변화를 확인했으면, 스냅샷 남겨보기

git commit
git commit -m "친절한 설명"
git commit -am "add를 생략"

git status를 통해서 스냅샷을 확인.
 
 
8. log 명령에 대해 자세하게 살펴보기

git log : 기본 로그 명령
git log --patch : 수정된 파일 내용도 확인할 수 있음.
git log --oneline : 간단하게 라인 단위로 
git log --oneline --reverse : 리버스 명령어로 오래된 것 부터 최신 순으로 로그를 확인.




HEAD :

A와 B 순으로 Commit 하면 
A <- B 형식으로 가리키게 되는데 이 때, 기본적으로는 HEAD는 B를 가리킨다.

A, B, C, D 순으로 commit 하면,
A <- B <- C <- D 형식으로 가리키게 되는데 이 때, 기본적으로 HEAD는 D를 가리키며,

D를 HEAD, C를 HEAD~2, B를 HEAD~3, A를 HEAD~4 라고 표현함.

 


9. log에서 원하는 커밋 버전으로 돌아가기


git checkout [commit 버전]



10. log 심화

git log -(숫자n) # n줄
git log --oneline -3 # 3줄 one line
git log --author="username" # 특정 username 의 커밋들 보기.


git log --before="년-월-일" # 특정 날짜 이전.
git log --after="2023-09-01" # 특정 날짜 이후.
git log --grep="project" # project 가 들어간 코멘트가 있는 커밋을 찾기.
git log -S "about" -p # 해당 커밋의 내용(코드) 중 about이 들어있는 커밋 찾기. 단, p 옵션은 patch로 상세히 보는 옵션.
git log -p about.txt # 파일 별로 확인 하되, 상세하게 보기.
git log -s about.txt # 파일 별로 확인 하되, 간단하게 보기.

git log HEAD # 기존 로그와 동일.
git log HEAD~n # 헤드에서부터 n번

 


git show Hash_일부 # 해당 hash code의 커밋 확인.
git show Hash_일부:파일 이름 # 파일 이름에 해당하며, 해당 hash 코드에 대한 로그를 확인.
git diff hash1 hash2 # hash1과 hash2에 해당하는 커밋을 비교.
git diff hash1 hash2 파일 이름 # hash1과 hash2에 해당하는 커밋 중 특정 파일 이름에 대해서 차이점 확인.