자, 기억도 가물가물한 대딩 시절...팀프로젝트 할 때를 생각해보면
협업중 파일들이 왔다갔다 하면서 이런식으로 복잡하게 저장 되어있던 기억이 날 것이다
팀프로젝트(1).ppt Sarah's version
팀프로젝트(2).ppt + MJ's version
팀프로젝트.ppt + April's version
팀프로젝트최종본.ppt
팀프로젝트진짜진짜최종본.ppt
이럴 때 파일을 저장하기 전 상태로 되돌아가고 싶기도 하고, 누가 얼마만큼 어떤 부분을 수정했는지, 3번째로 수정된 상태로 되돌아가고싶을때...
이런 다양한 상황에서 사용하면 좋은 것이 git이고 현업에서 모든 개발자들은 이 프로그램을 사용하고 있다
버전 관리 프로그램에는 여러 종류가 있지만(git, svn, etc...)
현재 시장 점유율 1위는 git이다
✔ git != github
(나혼자 버전관리 할때) (협업 할때 사용)
어떤 프로그램을 설치하던간에 설치 여부를 미리 확인하는 것이 기본이다
맥북(제품 출시 할때 이미 설치되어서 나옵니다)
window는 설치 X
맥북 : terminal연 후에
git -v 입력
window : cmd(커맨더, 명령프롬프트)를 연 후에
git -v 입력
"지금 설치된 git의 버전을 알려줘!"
만약 설치가 되어있다면 설치된 버전이 출력된다
만약 설치가 되어있지 않다면 '실행할수 없는 배치파일입니다.' 라고 뜬다
https://git-scm.com/
git 검색 > 가장위의링크클릭 > 우측 download git for Mac/Window >
click here to download 클릭 > 기본옵션 유지한 채 next
git 삭제
제어판 프로그램 제거 > git 제거
사용이유 : 버전 관리를 위해서
컴퓨터에는 수많은 폴더들이있다..
가장먼저 해야하는 것은 어떤 폴더를 버전관리 할 것인지 알려주는 것이 중요
✔ window에서 cmd창 d드라이브로 이동하는 방법
D:
cd 명령어 사용(change directory)
cd 폴더이름/폴더이름/
상위폴더로 이동하고 싶다면 .. 을 쓴다
"이 폴더를 git repository로 만들거야(버전관리 할거야)!" 알려주는 명령어
(cmd나 터미널을 버전관리 할 폴더까지 이동을 하고)
git init
을 실행한다
실행이되면 .git 이라는 숨김 폴더가 하나 만들어지고,
이 폴더를 통해서 누가 몇시 몇분에 몇번째줄을 어떻게 수정했는지를
기록하게 된다(버전관리 하게 된다 --> .git 이라는 폴더가 없으면 평범한 폴더가 되어버리는 것)
최초 한 번만 .git 폴더를 만들어 주면 된다
마우스 우클릭 > git bash here > git init
New Terminal 클릭 > 경로 이동 후 > git init
(이미 a라는 폴더를 git repository로 만들었다)
git repository에 새로운 파일이 만들어졌다 --> 해당 파일은 untracked 상태
변화를 감지하지 못하는(추적하지 못하는 상태)
repository에 새로운 파일이 만들어지면 무조건 untracked
변화를 감지할 수 있도록 추적하고 있는 상태
최소 한번이라도 등록(저장)이 되었다면 무조건 tracked 상태
스테이지에 올라가지 않은 상태
스테이지에 올라간 상태(변경사항이 임시 저장이 된 상태)
stage 상태로 만들기(임시 저장하기)
git add 파일이름
stage에 올라가게 되면 해당 파일은 tracked 상태가 된다!
이후 변화를 감지할 수 있게 된다
Visual Studio Code의 터미널을 사용하니 바로바로 확인이 가능해서 참 편리하다
--> stage에 올라갔던(임시저장된파일들)파일들이 영구적으로 저장된다
영구저장이 되고 나면 해당 파일들은 unstaged된 상태
--> 에디터가 뜨며, 반드시 커밋 메시지를 작성해야한다
i 를 클릭하여 INSERT(끼워넣기) 모드로 만들고, 커밋 메시지를 작성한 후
esc 를 클릭하여 끼워넣기모드 종료
:wq 엔터
하면 커밋이 완료 된다
--> git commit -m "커밋메시지"
옵션을 사용하여 편하게 미시지 작성후 커밋할 수 있다
현재 git repository의 상태를 보여줘
누가 커밋을 했는지 정보를 보는 명령어
<심플하게 설명하자면>
우리는 이것만 하면 된다!
파일수정 --> git add . --> git commit -m "메시지"
커밋하기 전에 모든 변경사항을 add 하고 commit 해줘
(untracked (새로만든파일) 상태인 파일은 해당옵션 적응 안됨)
-a옵션과 -m옵션을 동시에 사용
브랜치(가상의 폴더, 작업을 나눠서 할 수 있다)
git을 설치하면 기본적으로 브랜치 한개(기본 : master브랜치)가 만들어진다
현재 레포지토리 속 브랜치 목록을 보여줘
브랜치를 새롭게 만들어줘
브랜치 이동
✔--global
지금 내가 레포지토리로 쓰고 있는 이 지역만 이렇게 바꿔줘
자기자신이 위치한 브랜치에다가 다른 브랜치가 병합이 된다
브랜치가 삭제된다
✔ 가끔 터미널 창에 ':'이 나올때는 입력 로그가 너무 길어서 그렇다
q 를 치면 명령어 입력창이 다시 나온다
header
커밋1 커밋2
헤더에서 추가한 코드
기본코드 기본코드 aaa
master
커밋2
기본코드 bbb(같은 라인을 수정해버리면 충돌이 발생한다)
마스터브랜치에서 작성
master
병합
헤더에서 추가한 코드
기본코드
마스터브랜치에서 작성
< header branch의 사용 예시>
충돌이 발생하면 직접 충돌되는 부분의 코드를 수정한 후
add, commit 하면 된다
git branch 원래이름 바꿀이름
✔ 'master' 가 인종차별적인 단어이기 때문에 요즘은 'main'으로 변경하는 추세이다
✔ git add 는 뭔가를 새롭게 추가할때만 사용XXX
파일삭제, 코드지우기 --> 수정사항 발생
add는 수정 사항을 임시저장하겠다
git config --global user.name "닉네임" 확인
git config --global user.email "github로그인이메일" 확인
git remote
git remote add 원격저장소이름 원격저장소주소
eg) git remote origin(관례적으로) www.april.com
git push 원격저장소 브랜치이름
git push -u 원격저장소 브랜치이름
내가지금 위치한 브랜치에서 앞으로 git push라고 하면
자동으로 저 원격저장소에 저 브랜치를 업로드해줘 라고 설정을 해준다
그러면 그 이후로는 git push 만 써도 알아서 원격저장소에 내위치브랜치가 업로드 된다
git pull 원격저장소이름 브랜치이름
git add
git commit
git push 원격저장소이름 브랜치이름
git pull 원격저장소이름 브랜치이름
(항상 내가 내 로컬 레포지토리를 push하기 전에는 pull이 먼저 되어있어야지만 push할 수 있음)