본문 바로가기

웹개발 풀스택 과정/GIT

9일차(2022.01.04) _ Git 사용하기

Git은 버전관리를 하기에 유용하다.

대학시절.. 과제를 할때 파일이름에는 항상

최종, 찐 최종, 진짜 마지막 최종 ..... 이런식으로 항상 과제를 수정하던 기억이 있는데

코드도 마찬가지이다.

Git을 통해 수정될 때마다 버전관리를 용이하게 할 수있다.

Git은 로컬컴퓨터, 즉 내 컴퓨터 내에서 버전관리를 할 수있게 해준다.

 

1. Git

Local 버전관리 프로그램

1. Git download
- https://www.git-scm.com/

2. 설치
- 기본값으로 설치해도 됨

 


2. Git - Hub

Romote 온라인 저장소 (구글 드라이브 같은 저장소, 백업용)

1. 회원가입
- https://github.com/

 


3. Git - Fork

Local과 Romote( github )와 연결

1. Git - Fork download
- https://git-fork.com/

2. 설치
 - github가입할 때 입력했던 이름과 이메일을 입력

 


4. Local 에서 Repository 를 생성 후 Romote로 push 하기

Repository : 저장소

- 순서
 1) Git - Fork 실행 후 File -> init new Repository
 2) 탐색창 -> repository로 사용할 폴더(Java Project로 사용 할)를 생성 후 선택
 3) repository 폴더에 gitignore 파일 생성 ( 아래 설명 참조 )
 4) git-fork에서 gitignore파일을 stage로 이동 후 commit
 5) STS에서 Java project를 생성
  - 프로젝트명은 Reository 이름과 동일 한 경로와 이름
 6) 생성한 프로젝트 명 옆에 mater 라고 되어 있다면, 추적이 완료된 것
 7) Git-Hub에 로그인
  - 우측 상단 + 버튼 후 new repository 클릭
  -  repository name 에는 프로젝트 명과 동일한 이름 입력(권장) 후 완료
  - 이후 상단에 링크를 복사
 8) git-fork창의 왼쪽 remote에서 우클릭 - Add new remote
 9) 아까 복사했던 링크가 자동으로 입력되어 있음, 확인
 10) github로 push 완료

** gitignore

내가 쓰는 로컬파일하고 Git하고 연결했고, 버전관리를 위해 파일을 추적한다.
추적하는 파일들 모두를 깃허브에 올릴것인데, 소스코드만 올리면 되지 다른 설정 파일은 올릴 필요가 없다.
그래서 그런 설정파일들 (불필요한 파일들)은 추적하지 말라고 하기 위해 gitignore 를 사용한다.

 

gitignore.io 로 들어가서 자신의 개발 환경을 모두 검색한다.

나는 윈도우, 자바, 이클립스를 검색했다.

하면 어떤 문자들이 나오는데 그것을 전부 복사해서 메모장에 붙여넣는다.

그리고 다른이름으로 저장을 누르고, Ropository를 초기화한 폴더 안에 저장한다.

파일명은 .gitignore 파일 형식은 모든 파일로 저장해야한다.

 

저장 후 깃포크로 이동해서 .gitignore 파일을 찾아 클릭한다.

그리고 상단에 Stage를 눌러서 추가한다.

이후 Commit 부분에 내가 알아볼 수 있게 이름을 저장한다.

나는 add ignore라고 입력하고 Commit 버튼을 눌러 저장했다.

그러면 Staged에서 .gitignore 파일이 없어지고 Unstaged로 저장된다.

Commit 하는 거는 앞으로도 계속 해야할 작업이다.

내가 뭔가를 수정하면 local change에 바뀐 것들이 뜰텐데,

바뀐 내용을 최종적으로 Commit 해야 버전이 저장되는 것이다.

 


** 프로젝트를 이미 생성했을 때

원래는 미리 만들어 놓고 프로젝트를 만드는 것이 맞다.

나는 프로젝트를 먼저 생성하고 ignore를 적용했기 때문에 명령어를 하나 추가해야한다.

명령프롬프트를 킨다음, "cd + Repository를 초기화한 폴더의 경로" 를 넣는다.

그 다음 git rm -r --cached . && git add . && git commit -m "fixed untracked files"

이 코드를 명령프롬프트에 붙여넣는다.

이후에 Repository를 초기화한 곳으로 가서 어느 소스코드든지 수정을 한번 해보자.

그러면 깃포크 앱에 Local Changes 옆에 (1)이라고 생겼을 것이다.

바뀐 파일을 클릭해보면 어떤 부분이 수정되어있는지 수정 전과 수정 후의 내용이 둘 다 표시되어 있다. 

 


** 최초 push가 끝난 후

뭔가 작업이 끝나고 내가 소스코드를 저장하면 깃포크에 Local Changes에 뜬다.

그것을 클릭하고 Stage를 누른다음 Commit Subject에는 내가 무엇을 바꿨는지 알아볼 수 있게 제목을 정한다.

만약 설명이 더 필요하면 Discription에 더 추가하면 된다.

이후 Commit을 누르면 Local에 저장이 완료가 된 것이다.

이후 다시 Remotes에 origin을 클릭하고 상단 push를 누르면 깃허브에 올라가게 된다.

작업순서
1. STS 코딩 작업 후 저장
2. git - fork에서 원하는 파일을 Stage로 이동
3. Commit Subject 입력 후 commit 클릭 ( Local에 저장 )
4. git-hub에 올리려면 push 클릭
 
소스코드 수정 - Git Fork를 통해 로컬 저장 - Git Fork를 통해 Git Hub로 push 

 


** 프로젝트 삭제 시

STS 툴에서 우클릭을 해서 삭제를 하면 실제 패키지 익스플로러에서만 삭제를 할 수도 있지만

옵션을 통해 컴퓨터 자체의 파일도 삭제가 가능하다.

하지만 이는 Local 에서만 삭제됐을 뿐, Romote에는 남아 있게 된다.

그래서 만약 다시 불러오고 싶으면 pull을 하면 되고 아니면 깃허브에서도 삭제를 하면 된다.

 


5. Remote 에서 Repository 를 생성 후 Local로 pull 하기

- 1. Remote 에서 작업

1) Git-Hub에서 새로운 repository 생성
 - Add .gitignore 선택 ( 나중에 Local에서 만들어도 되긴 함 )
  --- templete에 사용하는 언어 선택 
2) ignore는 언어만 선택을 했기 때문에 gitignore.io에서 개발환경에 맞게 검색 후 복사
 ex) Window, Eclipse, Java 선택 후 검색 > 코드 전체 복사
3) repository의 gitignore 수정
 - 본래 있던 코드는 전부 삭제
 - gitignore.io에서 복사한 코드 전체 붙여넣기
4) repository의 URL 주소를 복사
 - 우측 상단 초록색의 code버튼 클릭 > 복사

- 2. Local 작업

 1) GIt-Fork 에서 File - Clone
 2) Git-Hub에서 복사한 URL 주소가 자동으로 복사되어 있음
 3) Parent Folder의 경로를 WorkSpace 폴더로 설정 (프로젝트 폴더 아님)
  - Name은 자동으로 입력되어 있지만, 아니라면 repository 이름과 동일하게 입력

- 3. 에디터 작업

 1) STS 툴에서 새로운 프로젝트 생성
 2) 프로젝트 이름은 repository 이름과 동일하게 설정

 


6. 삭제

1. Git-Hub Repository 삭제
 - git-hub에서만 삭제, Local은 영향이 없음
 1) 삭제할 Repository에서 Settings으로 이동
 2) 하단 Danger Zone - Delete this repository

2. Local Git 삭제
 - git-hub, 실제 프로젝트 파일에는 영향 없음, 추적을 멈춤
 - git-fork 에서만 보이지 않게 하는 것, git 설정은 남아있음
 1) Git - Fork에서 우측 상단 + 버튼 클릭
 2) 지우고 싶은 repository 우클릭 - Remove
 3) 완전히 지우려면 프로젝트 파일 경로로 찾아가 .git을 지워야 함

3. Java Project 삭제
 1) STS에서 삭제할 프로젝트명 우클릭 - Delete
 2) Delete project contents on disk 체크 후 확인

유동적으로 뭐 깃허브에 남겨놓고는 싶을 때는 2, 3번만 하면 되는 것이다.

 


아래부터는 이후 추가되는 내용마다 추가할 예정!

 

** 

git - fork 와 git - hub 에 Commit 한 파일의 수가 다르다면 

git - fork의 좌측 Branches에서 그 수를 표시를 해줌 

 

** 깃포크 - Revert Commit

Commit을 이전버전으로 돌려준다

 

** STS Import

Git-Hub에서 pull할 때, STS에서 직접 프로젝트명을 동일하게 해서 연동할 수도 있지만,

File - Import - General - Existing Project into Workspace 

                  - Git - Project from Git 

이렇게 프로젝트를 Import 할 수도있다.

Import는 무조건 만들어진 프로젝트를 가지고 올때 사용!! 

프로젝트를 깃허브에서 새로 만들었을 때는 직접 STS에서 새로운 프로젝트를 같은 이름으로 만들어야 한다!

 


7. conflict

 

만약 깃허브(Remote)에서 코드를 수정하고 pull을 안한 채,

내 Local에서 코드를 수정하고 깃포크에 업데이트를 했다면

깃허브의 코드버젼과 깃포크 코드의 버전이 달라서 충돌(conflict)이 일어난다.

이렇게 깃포크에서 이미 충돌됐다고 말해준다. 이 상태에서는 풀도 푸쉬도 못한다.

이걸 해결하는 방법은 두가지인데, 이 화면에서 적용할 버젼, 깃허브냐 깃포크냐를 고른다음에 합치는 방법 한가지랑

직접 STS에서 코드를 수정하는 방법이 있다.

이렇게 깃포크에서 알아서 표시를 해준다. Head에는 Local 버전이고

그 아래는 GitHub 버전이다.

둘중 뭘 쓸지를 고르거나 합치거나 하면 알아서 깃포크에서

이런식으로 conflict가 해결되었다고 뜬다.

 

이러한 충돌을 방지하기 위해서 습관적으로 깃허브에서 먼저 pull을 해주는게 낫다.

pull되는게 없으면 동일한 버전이고, 가져오는게 있다면 알아서 가져올 것이다.