이미 알고 있던 내용이지만 한번 더 정리하기로 했다.
홈 디렉토리 이동 :
cd ~
맥 폴더 생성 :mkdir [폴더명]
현재 폴더 위치 확인 :pwd
종료 :exit
해당 폴더로 넘어가서
저장소 생성 :
git init
저장소 확인 :ls -al(숨겨진 폴더까지 확인 가능)
화면 클리어 :clear
저장소 폴더 삭제 :
rm -rf (.git)[폴더명]
저장소 삭제 확인 :ls -al
git branch 명령어가 작동하지 않으면 git init이 필요하다. 맥의 경우 git branch 명령어를 쳐도 보이는게 없다.
폴더를 생성하면 폴더가 레포지토리가 아니고 폴더 안에 git 폴더가 레포지토리이다. 레포지토리 안에는 다수의 브랜치가 있을 수 있다. 디폴트 브랜치의 이름은 master 혹은 main
master에서 main으로 넘어가는 추세이지만 아직 과도기라고 할 수 있다.
확인 :
git config --global 변수명
변경 :git config --global 변수명 새_값
확인 :
git config --global init.defaultBranch
변경 :git config --global init.defaultBranch main
확인 :git config --global init.defaultBranch
처음에 브랜치가 master로 생성된 다음 브랜치를 변경하면 그 이후 생기는 레포지토리는 모두 브랜치가 main이 된다.
맥의 경우 위의 확인 구문을 쳐도 따로 브랜치가 나오진 않는다. 하지만 main으로 브랜치 변경 후에 확인 구문을 치면 main이 나온다.
파일명이 a인 파일 생성 :
touch a
숨김파일 빼고 전부 리스팅 :ls -l
숨김파일 빼고 전부 삭제 :rm -rf *
숨김파일 빼고 전부 삭제 되었는지 확인 :ls -al
만약에 상위폴더에 git init을 잘못하면 그 폴더를 찾아서 .git 파일을 지우면 된다.
상위폴더마다
ls -al커맨드로.git파일이 있는지 확인
확인 후rm -rf .git으로 git파일 삭제

git add [파일명] : 특정파일만 add
git add . : 변경파일 모두 add
git status : 가장 최근 커밋과 작업폴더 사이의 차이점을 보여준다.
git add . && git commit -m "[커밋메시지]"
: Add와 commit을 한번에
git 에서는 빈 폴더를 인정하지 않는다.
add는 장바구니 개념. 잠깐 index에 저장했다가 commit을 해야 저장소에 저장이 됨.
만약 무엇인가 잘못되었다면, 극단적으로 저장소 안에 파일 다 날리고, .git 파일을 날리고 다시 init해주면 된다.
git log --online : 간단하게 커밋 기록들 보기
git checkout [log에 남은 커밋메시지(앞에 네개만 써도 가능)]
: 커밋간 이동 가능
git log --oneline
git checkout 최초커밋코드 # 과거로 돌아감
ls # 파일 a 만 존재함
git checkout main # 현재로 돌아옴
ls # 파일 a,b,c 존재
홈 디렉토리로 이동해 git-work라는 폴더를 생성해보자.
이 폴더에 git init을 하고 ls -al을 통해 .git파일이 생성된 것을 확인한다.
git을 이용하지 않고 git저장소 폴더를 삭제하려면 rm -rf .git이라고 치면 된다. 삭제한 다음 ls -al 을 통해 .git파일이 제대로 사라졌는지 확인하자.
다음 연결된 브랜치 이름을 확인하자. git config --global init.defaultBranch 라는 명령어로 git의 브랜치를 확인해주고 브랜치가 master라면 git config --global init.defaultBranch main명령어로 브랜치를 main으로 설정해주자. 이제부터 생성되는 git 레포지토리 파일들은 모두 main으로 설정된다.
만약 잘못해서 상위폴더에 git init을 해주면 상위폴더들을 확인해가며 .git 파일의 유무를 확인하고 삭제한 다음 다시 원하는 폴더 들어가서 git init을 해준다.
자 이제 파일들을 생성해 git add 와 git commit 의 동작을 확인할 것이다.
# 현재 위치 : git-work
rm -rf .git
rm -rf * # 앞문단에 설정해둔것 때문에 다시삭제해줌
git init
git status # 안나옴
touch a
touch b
touch c # 각각 a,b,c 라는 이름의 파일 생성
mkdir d # d라는 이름의 폴더 생성
git status # 3개 나옴(d는 안나옴, git은 빈 폴더를 무시)
이제 이 상태에서 add를 해주면 인덱스 영역(예를 들면 구매직전에 장바구니) 에 담긴다.
장바구니(index, stage영역)에 담을 수 있다. # 현재 위치 : git-work
git add a # 파일 a를 stage에 담기
git status
git rm --cached a # 파일 a를 stage에서 제거
git add b c # 파일 b,c를 stage에 담기
git status
git rm --cached c # 파일 c를 stage에서 제거
git status는 위에서도 말했듯이 저장소의 최근상태(가장 최근 커밋상태)와 작업폴더 사이의 차이점을 보여준다.
git add . 으로 변경파일들을 모두 한번에 stage에 올릴 수 있고, git reset으로 모든 파일을 unstage할 수 있다.
# 현재 위치 : git-work
git add .
git status
git reset
git status
git config --global user.email # 사용자 email 확인
git config --global user.email "깃허브에 가입할 때 사용한 이메일 혹은 자주사용하는 이메일" # 사용자 email 변경
git config --global user.name # 사용자 이름 확인
git config --global user.name "깃허브 ID" # 사용자 이름 변경(꼭 깃허브 ID를 안써도 되지만 관례상 많이 그렇게 함.)
이제 커밋을 위한 세팅은 모두 마무리 되었다.
git commit -m "커밋 메시지" 를 통해서 stage영역에 담긴 파일을 로컬 리포지터리(.git폴더)에 저장 # 현재 위치 : git-work
git add b
git status
git commit -m "b 파일 생성"
git status
# 현재 위치 : git-work
rm -rf * # 모든 파일 삭제(숨김파일 제외)
rm -rf .git # 깃 레포지토리(저장소) 삭제
git init # 다시 저장소 생성
git log --oneline : git log에 --oneline 옵션을 붙이면 간략하게 커밋기록들을 볼 수 있다. # 현재 위치 : git-work
touch a
touch b
touch c
git add a
git commit -m "a 파일 추가"
git add .
git status
git commit -m "b,c 파일 추가"
git log
git log --oneline
git checkout으로 커밋간 이동을 할 수 있다. # 현재 위치 : git-work
git log --oneline
git checkout 최초커밋코드 # 과거로 돌아감
ls # 파일 a만 존재함
git checkout main # 현재로 돌아옴
ls # 파일 a,b,c
이렇듯 원격 레포지토리를 두면 협업도 할 수 있고, 개인이 여러곳에서 작업도 가능하다.
github의 기본 브랜치를 master에서 main으로 변경
레포지토리 생성
로컬 저장소를 원격 저장소와 연결 후 push ( git push origin main )
# 현재 위치 : git-work
git remote -v # 연결되어 있는 원격 레포지토리 목록, 현재는 없음
git remote add origin https://github.com/jhs512/demo-2023-10-19 # 원격 리포지터리 연결
git remote -v # 연결되어 있는 원격 레포지토리 목록, origin 출력됨
git push origin main # 현재 로컬 저장소의 main 브랜치를 원격지 중 origin 으로 보낸다. origin에도 main브랜치가 생성됨
이렇게 내 로컬의 데이터를 원격 레포지토리에 저장했다. 여기서 만약 내가 회사에 가서 원격 레포지토리에 있는 내용들을 가져가다 작업하고 싶으면 어떡할까
git-work2라는 폴더를 생성해보자.
# 현재 위치 : git-work2
git init
git config --gloval init.defaultBranch # 확인
git config --global init.defaultBranch main # 안되어 있으면
git config --global user.email # 사용자 email 확인
git config --global user.email "깃허브에 가입할 때 사용한 이메일 혹은 자주사용하는 이메일" # 안되어 있으면
git config --global user.name # 사용자 이름 확인
git config --global user.name "깃허브 ID" # 안되어 있으면
git remote -v # 연결되어 있는 원격 리포지터리 목록, 현재는 없음
git remote add origin https://github.com/jhs512/demo-2023-10-19 # 원격 리포지터리 연결
git remote -v # 연결되어 있는 원격 리포지터리 목록, origin 출력됨
git pull origin main # origin 에 있는 main 브랜치의 내용을 현재 리포지터리(저장소)의 메인 브랜치에 복사(다운로드)
git init, git remote add origin ~, git pull origin main 이 3개의 명령어를 한번에 수행하는 git clone# 현재 위치 : git-work2
git clone https://github.com/jhs512/demo-2023-10-19 . # git init, git remote add origin ~, git pull origin main 까지 한방에 수행
방금 커밋한 커밋 메시지를 바꾸고싶을때
git commit --amend
방금 했던 커밋 취소하기
git reset HEAD^