GIT

GIT 강의 정리 1

kjw81024 2026. 1. 7. 21:25

사담 

너무 어려워요 힘이 빠져요 ... 일단 ch3 까지 정리했는데 ch4는 언제하지

TIL 을 하루에 2번 적는건 처음인데 TIL도 그냥 내일 놀고 오늘 한거 올리고싶었어요... 하지만 git 실습 마지막날이네요 (ㅠㅠ)

그냥 사서 고생하는 사람이 되었습니다 

감기에 걸려서 일부러 오늘 강의 들으면서 스쿼트도 하고 (나름 운동) 비타민도 약도 다 챙겼습니다 감기조심하세요

 

tistory 를 사실 이번 부트캠프 하면서 처음사용해보는데

코드블럭에 넣는 주석을 // 이게 아니라 # 이거로 적어야한다는걸 오늘 알았네요... (1/8) 앞에꺼를 고치는건 너무 많아서 포기


Git 강의 정리 및 실습

 

ch1-1

Git 버전관리가 가능 
파일을 분산해서 저장할 수 있음 

ch1-2
IntelliJ에서 Git 관련 내용 확인 가능 

git directory == 로컬 저장소 

github == 코드 저장소 (원격 저장소)

 

working directory : 실제로 소스코드를 수정하고 작성하는 곳 (IntelliJ 또는 Terminal)

 

코드들을 commit (github 업로드전 마지막 저장) 하면 Hash 라는 암호화된 값으로 기록 

add만 하고 commit을 하지않으면 변경 이력에 영향 전혀 x 

저장 방식은 snapshot, Hash로 특정시점의 commit 으로 돌아갈 수 있음 (이후 revert restore 명령어 사용)

Head : 현재 작업 위치, 특정 branch 의 최신 commit 값을 가리킴 

 

ch1-3

Linux, Unix, Window = SW (운영체제/OS)

CPU, memory, HDD, SSD = HW

커널: SW 와 HW 를 연결하는 통로 느낌 

 

학교에서 공부할 때 그래도 아주가끔 사용했던 명령어들 

ls (-alt) list 출력 (현재 폴더 기준)
cd <path> 해당 경로로 이동 
pwd 현재 폴더 위치 출력
mkdir <directory name>
touch <file name>
각각 디렉토리, 파일을 생성
rm 복구불가 삭제 
mv <file name> <file destination> ctrl x ctrl v
cp <file name> < file destination> ctrl c ctrl v
cat <file name>
less <file name>
head (-n <num>) <file name>
tail (-n <num>) <file name>
파일 미리보기 읽기
-n 3 하면 위나 아래 3줄 보여줌 
nano <file name> 
vim <file name>
파일 내용수정,
nano: ctrl x = exit 
vim: :wq = exit
grep <string> <file name> string을 파일에서 ctrl f

튜터님이 볼 필요 없다고 했지만 캡스톤 할 때 명령어를 유용하게 써서 메모해뒀습니다

 

ch1-4

terminal - shell path 자리에 

//cmd.exe 를 아래로 수정
"C:\Program Files\Git\bin\bash.exe" -login -i

: 운영체제가 실행할 프로그램, 명령어를 어디서 찾아야할지 알려줌 

https://velog.io/@kykim_dev/Linux-Terminal

 

git init

# 실행결과
# Initialized empty Git repository in C:/Users/user/Desktop/SPARTA_bootcamp/practice2/.git/
# git 을 초기화했다는 의미

 

github 계정을 등록 할 때 email, name 을 작성해야함

git config --global --list
# 위 명령어를 통해 지금 global 설정이 어떻게 되어있는지 확인 가능 
# user.name, user.email 이 없다면 새로 등록
git config --global user.name <Name>
git config --global user.email <email>
# email 은 github를 가입한 이메일이어야함

On branch main -> 현재 branch 명이 main 

commit 아직 안 함 

commit 해줘야하는 작업이 2개 (add 해줬던 파일 2개, new 로 표시되어있음)

add 안해서 git 에서 추적하지 않고 있는 파일들이 있으니까 commit 해줘 -> 4개 

여기서 ./idea/ 와 practice2.iml 은 add 와 commit x 

 

> idea 디렉토리, iml 파일은 프로젝트 설정과 관련된 파일이므로 개인 개발 환경에서만 필요

-> .gitignore 에 추가해서 Git 에 커밋하지 않는것이 좋음 

#.idea/.gitignore파일에 아래 두 줄을 추가

/.idea/
/*.iml

https://velog.io/@captain-yun/.idea-%EC%99%80-.iml-%ED%8C%8C%EC%9D%BC

 

추가로 시작하자마자 추가해주면 좋은 git ignorelist

https://blog.park-labs.com/posts/github-100days-day17-gitignore-languages/

https://wikidocs.net/277237

 

 

잘못 add 했을 때 대처법

# 한 번도 commit 한적 없는 상황에서는 commit 해도 되는 파일을 한 번 commit 하고 실행
# commit 기록이 없으면 HEAD 가 없기 때문에 could not resolve HEAD 오류가 발생

git restore --staged <filename>

# 그래도 안 없어지고 HEAD 관련된 오류 뜨면 그냥 다 지우고 새로 시작

git restore --staged .
git rm -r --cached .

https://growth-coder.tistory.com/129

 

# commit 방법

# 1. commit message guide line 
git commit 
# 터미널에 입력창이 뜨면 i (insert) 누르고 작성, esc + :wq 로 나오기

# 2. 간략한 message 
git commit -m "남기고 싶은 메시지"

메시지를 남기고 IntelliJ 좌측 하단에서 확인 가능 

commit message 선택 후 우측에서 파일 확인 후 무엇이 변경되었는지도 확인 가능 

 

git log 사용할 때 아래 코드 사용하면 해쉬값, 누가, 언제, 내용까지 조회 가능

git log --pretty=format:"%h - %an, %ar : %s"

ch2-1

 

vim 사용해서 편집하기 

간단한 명령어들, Terminal 에서도 사용할 수 있는듯함 

:wq
:q!
입력값 저장 후 종료
저장 없이 종료
i (insert)
shift v + d
dd
입력모드 : backspace 로 삭제 가능 
블럭 지정 삭제
one line 삭제
u
ctrl r
복구
취소
:set number  line num 추가 

 

ch2-2

git restore  <file name>
(--source <commit hash>)
(--staged)
파일을 되돌림
최근 commit 시점으로 되돌릴 수 있음 
--source 뒤에 commit hash 붙여주면 해당 hash 시점으로 복구
--staged 붙이면 git add 취소 
git revert <commit name> commit 을 되돌리고 싶을때 
특정 commit 을 제거하고 취소했던 commit을 새로 생성
하지만 뒤에 쌓여있으면 충돌이 잘 나니까 되도록 사용 x
git reset 시간을 되돌림 (파일, 커밋 모두..)

restore, revert, reset ... 잘 이해가 안 되는 셋

이왕이면 reset은 사용하지 않는게 좋음 

비밀번호, 개인정보등이 실수로 올라갔을 때 log에도 남지않아야하므로 해당 시점에 reset 사용 

  reset --soft reset --mixed reset --hard
작업 디렉토리 내 변경사항
working tree
    삭제
add 된 변경 사항
staging area
  삭제 삭제
commit 내역
HEAD
삭제 삭제 삭제

reset 명령어에 옵션주기 : 안 주면 --mixed 로 실행됨 

https://kangdy25.tistory.com/134

 

 

실습

10b940f 로 하면 안 됨! 이동할 hash name 을 적어주세요

git reset --soft <이동할 hash name> //또는 ~HEAD

git reset --mixed HEAD~

# 추적이 사라져서 status 하면 add 안된걸로 뜸

git reset --hard HEAD~

# 파일도 없어졌어요...

restore --staged

커밋 전에 add 전으로 내려두고 한번에 commit 해서 예쁘게 commit 가능

 

git revert -n <commit hash> # 취소만 하고 커밋은 생성 x
git revert <commit hash> # 취소용 커밋을 재생성

revert 실습은 포기 

 

ch2-3

git branch # branch 뭐뭐있는지, 현재 설정된 branch 명 확인
git branch <branch name> # branch 생성
git checkout <branch name> # 해당 branch 로 이동

branch 생성 및 이동 

git cherry-pick <hash>

해당 commit hash 번호를 가져옴 


ch3-1

실습 완료

깃허브 프로필 만들기 

 

ch3-2

 

git remote add origin <github address>
git push -u origin main

Username for 'https://github.com': <name>
Password for 'https://<name>@github.com': <token>

git config --global credential.helper store

깃허브와 intelliJ연동하기 


ch4-1

 

fork : 공개되어 있는 코드 저장소를 사용자의 저장소 (github) 로 가져와 사용, 로컬로 가져오려면 다시 clone 해야함 

(반대로 clone : 로컬로 가져오는거지 github에 가져오는것은 x)

fork repository --- pull request ---> upstream repository

fork repository <-- fetch, pull ------ upstream repository

 

zip 으로 다운로드는 .exe 파일이 있을 때 사용

 

 

git clone https://github.com/jiwon-e-e/Hello-World.git 
cd Hello-World

실습때 생긴 문제 해결 (with 튜터님)

 

1. 문제: fork 를 해서 올린 후 base (master)로 합치려고 했더니 PR 버튼까진 잘 나오는데 merge 버튼만 안 나옴

 

2. 해결: Comparing changes 부분에서 base repository를 업스트림으로 설정해서 생긴 문제였다

생각해보면 당연히 upstream 한텐 PR 을 보내는것까지만 가능하고 merge는 안 되는게 맞다... PR 을 보낸걸 해당 업스트림에 반영하려면 그 관리자님이 해주셔야함! 

그럼 내가 fork - clone 해서 만든 branch (login)에서 내 repository(다운스트림) master branch 로 보내려면 base repository를 나의 repository 로 바꿔줘야함! (사진 1 -> 사진 2) 

사진1
사진 2

바꾸니까 merge 버튼도 잘 뜨고 master 에서도 제대로 수정된것을 볼 수 있었습니당

ch4-2

해당 영상은 Github Issue, Wiki 등 다른  페이지를 사용해야해서 따로 정리없이 영상만 시청했습니다

 

ch4-3

무료 web site 배포 

1. resume-template clone 후 초기설정

#폴더가 다운로드 되기 원하는 위치로 cd 후 
git clone https://github.com/sparta-contents/resume-template 
cd resume-template

ls -altr # 치면 .git/ 폴더가 존재하는것을 확인 
rm -rf .git/

git init
git add .
git commit -m "init: resume template"
git remote add origin <github.io 저장소 https 주소>
git push origin main

 

git remote 명령어

 

git remote add  <원격저장소 이름> <URL> # 새로운 원격저장소를 추가
git remote remove <원격저장소 이름> # 원격저장소를 삭제

git remote -v #저장소 목록, url 확인 가능

https://priming.tistory.com/173

git remote -v 하니까 같은 url 에 (fetch), (push) 라고 적힌게 떴습니다

(fetch) : github (원격 저장소) -> 내 로컬 로 가져올때 사용하는 주소 (git pull, git fetch 할 때 사용)

(push) : 내 로컬 -> github (원격 저장소) 로 보낼 때 사용하는 주소 (git push 할 때 사용)

나눠져 있는 이유는 둘이 다른 주소를 가질 수 있음: 읽기만 가능하거나 인증이 필요한 상황 

만약에 fetch는 되지만 push 는 안되게 설정하려면 아래처럼 적어주면 됨

git remote set-url --push origin <변경하고싶은 url 주소>

 

2. 이제 깃허브 주소를 통해 홈페이지 접속 가능

알아서 고치고 add, commit, push 해주면 바뀜!

귀엽네용


 

'GIT' 카테고리의 다른 글

Local -> Git 업로드  (0) 2026.02.03
GIT 기본, 트러블슈팅  (0) 2026.01.07