git fork
다른 사람이 작업하고 공개한 레포지토리를 내 레포지토리로 가져올 수 있는 방법
- 공부
- 버전 보관
- 라이브러리가 업데이트 될 때, 이전 버전을 보관하기 위해 사용
실습 4. - Hard reset(vscode)
git reset
- 문제가 발생했을 때, 발생 직전의 커밋으로 이동
- 수정한 내역은 남아있고 커밋만 이전으로 되돌림
- soft reset: 코드는 놔두고 이전 커밋을 돌아가기
- hard reset: 이전 커밋으로 돌아가면서 코드, 커밋 히스토리 다 삭제
1. 'second commit' 에서 'first commit' 으로 Hard reset 하기
현재 로컬에서 master 분기의 Head는 'second commit' 을 가리킵니다.
이 상태에서 'first commit' 으로 돌아가기 위해 'reset' 작업을 수행해야 합니다.
'first commit' 오른쪽에 있는 'Hard 버튼'을 클릭합니다

'Hard reset' 작업으로 코드나 파일이 지워질 수 있다는 경고창이 뜨는데 'Ok 버튼' 을 눌러줍니다.

'second commit' 이 삭제되고 'master' 분기는 'first commit' 으로 이동했습니다.

실습 5. - 로컬에서 브랜치 만들고 병합하기
gir branch
- branch : 분기, 작업을 위해 기존 코드에서 가져온 작업 공간
- Master : 로컬에서 첫 분기
- 기존의 코드에서 작업공간을 새로 만드는 것 ⇒ 분기가 새로 생겼다.
- 분기에서 다시 분기를 만들 수 있다.
- 갯수 제한 없음
- 깃허브 상, 온라인에서의 분기
- 로컬에서의 분기
- 둘은 완전 별도
- 커밋은 현재 헤드가 있는 분기로 커밋된다.
git checkout
- 다른 브랜치로 옮겨간다.
- head : 현재 보고 있는 분기
git merge
- 나눠진 분기를 병합한다.
- 병합할 분기가 병합당할 분기의 히스토리를 흡수한다.
- 헤드는 병합할 분기에 있어야 한다.
- 머지되면 기존의 브랜치는 사라짐 (히스토리 상에서는 남아있음)(로컬에서는 머지되도 브랜치는 살아있음, 서버에 푸시하면 없어짐)
- 충돌이 일어날 때는 병합할 분기의 코드와 병합당할 분기의 코드 중 선택하거나 둘 다 선택할 수 있다.
💡 머지를 하지 않고 커밋푸시를 메인으로 하는 경우
소스가 동일해짐, 분기 둘 다 살아는 있음
커밋하면 현재 분기로 커밋 됨
깃은 변경된 역사(히스토리)를 기록한다.
커밋은 깃 저장소에 변경된 역사를 저장한다.
1. 로컬 repository 준비하기
실습을 진행할 폴더를 만든 다음, vscode에서 해당 폴더를 열어줍니다.
git init 을 통해 git을 사용할 준비를 해줍니다.

2. 'master분기' 에서 '1111파일' 만든 뒤, 스테이징, 커밋

3. 'master분기' 에서 '2222분기' 만든 뒤, '2222파일' 스테이징, 커밋



4. '2222분기' 에서 '3333분기' 로 만든 뒤, '3333파일' 스테이징, 커밋

5. '2222분기' 로 체크아웃, '3333분기' 병합
git history에서 '2222분기' 버튼을 누르면 해당 분기로 체크아웃 합니다.


'분기 병합' 을 선택하고 병합당할 분기인 '3333분기' 를 선택합니다.


'2222분기' 가 '3333분기' 를 병합하면서 히스토리 내역을 흡수하였습니다.

6. 'master분기' 로 체크아웃, '4444파일' 스테이징, 커밋
'master분기' 로 체크아웃하고, '4444파일' 을 만들어 스테이징 커밋 해줍니다.


7. 'master분기' 에서 '2222분기' 병합
마지막으로 'master분기' 에서 '2222분기' 를 병합해줍니다.



실습 6. - 자기소개 파일 형상관리하기
1. 사장님이 자기소개.txt(이름, 이메일)파일 만들라고 요구

2. 사장님의 요구사항이 달라질 것이기 때문에 git으로 히스토리를 저장

3. 사장님 왈: '자기소개 파일 수정(전화번호 추가)하고 이미지 추가하고 반영하지는 말고 나한테만 보여줘'

4. 사장님만 보이게 사장님이 원하는 요구사항을 추가하기 위해 따로 Test브런치 만들어 커밋

5. 회사 지침이 만들어져 개인 정보 보호를 위해 자기소개 파일에서 이름만 남겨두기


6. 영업팀장 왈: '테스트 자기소개에서 이미지, 이메일만 지운 뒤 영업팀 자기소개 만들어 줘'


7. 사장님이 영업팀 방식이 맘에 들어 기본 방식으로 채택하고자 하심



실습 7. - 원격 저장소에 push 하면서 진행
1. 깃허브에서 원격 레포지트리 만들기
2. 로컬에 클론할 폴더를 만들고 git clone 으로 가져오기
3. 이전 실습2. 과정 수행하면서 커밋 할 때마다 push 도 같이 진행


실습 8. - 공동작업
1. 하나의 레포지트리 대표가 만들고 팀원 초대

repository >> settings >> manage access >> add people
git email을 가지고 초대
2. 팀원들은 레포지트리를 클론하여 각자 아이디로 브런치 생성
3. 본인이름.txt 파일 생성
4. 파일안에 이메일 입력후 저장
5. commit/push

6. 폴더 생성(아이디)
7. 이름.txt 를 폴더로 이동
8. commit/push
9. 대표가 다 풀하여, 다 머지 한 뒤 푸시
git 전문 IDE
실무에서 많이 사용 : source tree, git kraken