Git - Git 공부

 

1. Git 시작


1) VSCODE 에서 이용

  • vscode에서 터미널 탭 - 새 터미널 클릭 후
  • ctrl + shift + p 입력 후
  • 검색 창에서 select default bash 입력 후 bash 선택



2) 로컬에서 git 명령어 정리 :

  • git –help로 검색어 공부


  • git init으로 초기화 해주기


  • git add ~~ : 추적 상태로 만들기


  • git rm –cached lecture-schedule.html : 현재 추적 상태이지만 그 상태를 빼주기


  • git config –global user.email address


  • git commit : 새로운 창이 뜨면 코멘트를 간단히 적어주기 ‘초기 git 수업 예’

  • 코멘트 작성하고 esc:wq로 나와서 git status로 확인 : git status -s


  • git checkout master(해쉬코드도 들어갈 수 있다.) : 해당 시점이나 다시 되돌아갈 수 있다.


  • git checkout 해쉬코드 : 해당 시점으로 돌아가서 코드를 볼 수 있다.


  • git commit -m “커밋 코멘트 추가 “


  • git show h-list.html : 해당 파일이 변화된 모습을 확인할 수 도 있다.(엔터 치고 변화된 모습을 확인하고 q를 누르면 나올 수 있다.)


  • git commit -am “” : add하고 commit하고 코멘트 쓰는 것까지 한번에 할 수 있다.


  • git diff : status의 변경 사항을 확인할 수 있다.



3. Git Switch 정리

  • git checkout에서 발전된 명령어이다.


  • git switch 해시코드 : 기본 switch 버전


  • git switch –detach 해시코드 : 헤드에서 따로 떨어져 나와서 이전 버전으로 이동된다.


  • git switch master : 이전 버전으로 이동하였을 때, 원상 복구 할 때, 최근 버전인 master를 사용한다.



4. Git reset, revert


  • git reset : 이전 버전을 전부 없애버리고 이전 버전으로 이동하는 방법

  • git revert(Switch와의 차이점?) : 하고 있는 작업을 살리고 이전 버전으로 되돌리는 방법이다.


  • revert는 특정 커밋을 없애고 해당 시점으로 되돌아 간다.


  • reset은 기록을 없애버리고 초기화 되는 것



5. Git branch

  • git checkout -b newlecture : 첫 번째 방법 / newlecture라는 브랜치를 만들고 해당 브랜치로 이동한다.


  • git switch -c newlecture : 두 번째 방법 / newlecture라는 브랜치를 만들고 해당 브랜치로 이동한다.


  • git branch : 현재 브랜치이름 목록 확인


  • git switch -c newlecture로 브랜치를 생성하여 이동하여 여기서 다시 파일을 만들고 add하고 commit 하면 해당 브랜치에서 커밋이 된 것이다.
    • 여기서 git log –oneline을 입력하면, 브랜치와 master를 확인할 수 있다.
    • git switch master로 브랜치와 마스터를 이동할 수도 있다.


  • release(테스트 버전 용), dev(개발하는 용도)라는 브랜치를 추가해주기
    • 이렇게 작업하는 브랜츠는 무조건 1개만 있어야 한다.



6. Git branch merge 방법

  • dev의 최종 프로제트를 master에 merge하여 붙여준다.(병합)


  • merge하는 방법 :
    • git switch master로 이동한다.
    • git merge dev를 입력하여 master에 dev를 붙인다.


  • 보통 개발에서는 dev1, dev2를 브랜치로 만들어서 최종 브랜치인 dev에 붙인다.
    • 프로젝트개발 1개가 끝나면, 그 나머지 개발은 다 없애 버린다.
    • 추가적인 프로젝트 개발에 브랜치를 하나 추가로 만들어서 개발한다.


  • git branch -D dev : 개발 프로젝트가 1개 끝났으면, dev라는 브랜치를 없애버린다.



7. Git branch merge 심화

  • 같은 페이지를 다른 사람들이 개발하고 서로 각자 커밋하고나서, merge하면 코드 병합이 충돌 된다.

  • 해당 코드로 이동하면 선택자(4가지)가 나온다. 코드를 살릴지 말지에 대하여 선택할 수 있다.


  • vscode에서 test2 merge 탭이 새로 생기는데 여기서 수동으로 코드를 바꿀 수 도 있다.
    • 여기서 병합 완료를 하면, 다른 커밋 없이 병합이 된다.(이미 앞에서 커밋을 했기 때문이다.)


2. Git 시작 - 1


  • git commit –amend : commit할 때, 썼었던 메세지를 수정할 수 있다.


  • vim 편집기 명령어 : i(편집기 수정), d(편집기 1줄 지우기), :wq(저장 후 편집기 나가기)


  • git revert vs reset vs restore
    • git revert 해시코드 : 그 전의 기록을 남기면서 이전 버전으로 돌리는 것
    • git restore 해시코드 : 복원하는 것.
  • git branch -D “” : 브랜치를 지울 때, 무조건 다른 브랜치로 이동해서 지우고 싶은 브랜치를 지울 수 있다. 마스터 브랜치나 타 브랜치로 이동하여 지운다.

  • git merge “브랜치명” 입력하고 병합 편집기로 이동해서 조합 추가하면 두개의 코드가 섞이고 하나씩만 코드를 선택할 수 있다.
    • 여기까지 하고 나서 마지막으로 커밋을 또 해줘야만 한다. 그래야 최종 병합된 코드가 합쳐진다. git graph 확인하기!


  • 병합하는 경우 여러가지 경우의 수 :
    • fast-forward : 코드가 바뀐게 없으면 커밋을 안하고도 커밋이 된다.
    • non-fast-forward : 코드가 바뀐게 있으면 커밋을 안하고도 커밋이 된다.


  • git restore index.html : 커밋된 병합 상태를 병합 이전 단계로 돌아가거나 add된 트랙 상태를 트랙되지 않는 상태로 되돌린다.

  • git stash ? : 변경사항을 임시로 저장할 수 있도록 도와주는 기능

  • git revert : 기록을 남기면서 이전 버전으로 돌리는 것을 하지않는다.

  • git revert –abort : 기록을 남기면서 이전 버전으로 돌리는 것을 하지않는다.

  • 비교 :
    • git reset 해시코드 : 이전 버전으로 돌아갈 때, 그 앞의 버전은 전부 지우고 돌아간다.
    • git switch 해시코드 ㅣ 그 버전으로 돌아가고 앞 버전도 살린다.
  • git rebase : 병합하는 과정인데 병합하고나서 그 병합된 프로젝트를 베이스(프로젝트의 시작부분)로 시작한다.



3. GitHub - vscode

  • 원격으로 서버를 이용하여 코드를 공유할 수 있다.

  • .gitignore : 나중에 버전관리에 코드를 올릴 때, 무시해주는 개발환경을 설정할 수 있다?


1) 깃허브로 코드 올리기!

  • git remote add origin https://github.com/wogjs0911/git-test.git

  • git push -u origin main : 강제로 푸쉬하는 방법

  • git push -u origin +main // git push -u origin main –force : 강제로 푸쉬하는 방법


2) 주의!

  • 토큰을 새로 입력하면, git config의 url도 토큰을 넣어서 바꿔줘야 한다.
    • git pull origin master 입력하면, remote 에러가 발생한다.
    • 그래서 다음 명령어를 입력해서 remote하자! git config --global url.https://"토큰 입력":github.com/newhkim/-.git
    • 원격에 있으면, 에러가 있으면


  • 원격 저장소에 같은 파일이 없다면 push가 되지 않아서 git pull을 해줘야 한다.


  • fetch : 원격 저장소에서 코드를 가져와야 한다.

  • pull : 다른 사람에 바뀐 코드가 있다면, 그 원격 저장소의 코드를 당겨온다.

  • clone : 원격 저장소의 내용을 복사해온다.(보통 회사에서 가져온다.)


3) 해결 방법




4. GitHub - eclipse


1) github에서 새로운 repo 만들기

  • public으로 만들기

  • ignore도 추가해줄 것

  • url 복사해서 이클립스에서 사용하기


2) eclipse에서 이용

  • git repository 탭으로 이동하기

  • clone a repository해서 저장소를 이클립스로 가져오기

  • 이클립스의 git staging 탭에서 add, commit, pull, push하기

  • 추가로 dev라는 branch를 추가해서 개발하고 merge 하기.


3) github 이용하는 법 : 최종 정리


a. github에서 이클립스나 vscode로 소스코드 내려받기

  • git init : 깃 파일 만들기

  • git remote : 원격 저장소 연결

  • git clone : 그 저장소 다 파일 다 받기

  • git fetch : 그 저장소 파일 가져오지만 clone이 더 큰 개념이라서 fetch 해주기!

  • git pull : 당겨오기

  • 브랜치를 main에서 플젝 진행하는게 아니라 dev에서 플젝 진행햐고 내 코드는 jh라는 브랜치에서 만들어서 dev로 병합한다.

  • main은 진짜진짜 마지막 최종플젝용



b. 이클립스나 vscode에서 github로 소스코드 올리기


  • git pull : 당겨오기
    • 안되면 git fetch이나 git clone할 것.


  • git push - clone과 pull로 파일 다 받아왔으면 내가 만든 코드를 저장소에 올리기 위해서 푸쉬해보기!


4) git 사용 시, 주의 사항!

  • Commit 시, Comment 제대로 적기!
    • 이름 / insert / 날짜 / 등등
  • 디스코드 내용 참고!



5. GitHub : 협업 230228

  • github 기본 순서대로 순서대로 하기

  • gitignore는 버전관리를 하지 않는다. #을 앞에 붙여주면 된다.

  • 새로운 폴더에서 레포지토리 만들어서 원격 저장소로 push하는 방법 :

    • git clone 주소
    • git remote add origin 주소
    • git switch dev2
    • git switch -c 새로운브랜치
    • git push -u origin 새로운브랜치

6. Github - gitignore

1) gitignore

  • 깃헙의 레포지토리에서 ignore에 추가해서 이클립스에서 열어서 gitignore를 추가하고 다시 vscode로 열어서 프로젝트를 진행한다.

  • ### first not include this ignore ###는 처음으로 프로젝트를 깃허브에 올리고 그 다음에 주석 처리해준다. 더 찾아보기

# Compiled class file
*.class

# Log file
*.log

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

## ignoring target file
target/

### Eclipse ###
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties

### first not include this ignore ###
.settings/
.classpath
.project

### Project file ###
CommonProperties.*



7. Github - VSCODE 연동(최종)

1) 새 프로젝트를 Vscode에서 Github로 push하는 작업(팀프로젝트)

  • 1) github에서 repository 1개 만들기(organization, public)


  • 2) 팀원들을 collaboratory의 팀원으로 초대하기


  • 3) gitignore를 만들자.


  • 4) 이제 새 폴더에 VSCODE를 키고 프로젝트 만들기.(Readme 파일은 여기서 만들자)


  • 5) VSCode에서 만들어진 새 프로젝트를 원격 저장소로 push하는 방법(터미널) :


  • a. 원격 저장소의 초기 repository clone 하기(clone하면 pull과 remote같이 가능)
    • git clone "원격 저장소 주소"


  • b. 선택 사항 : 원래 clone했으면, remote 연결은 안해도 된다. 생략 가능
    • git remote add origin "원격 저장소 주소"


  • c. “dev”라는 프로젝트의 뼈대 브랜치 만들고 원격 저장소로 push하기
    • git switch -c "dev"
    • git push -u origin "dev"


  • d. “dev2”라는 프로젝트의 주 개발용 브랜치 만들고 원격 저장소로 push하기
    • git switch -c "dev2"
    • git push -u origin "dev2"


  • e. 이제, 개발용 브랜치인 “dev2”를 모든 팀원들이 “git clone”하여 받아서 각자 개인용 브랜치에 만들어서 거기서 개발을 진행하면 된다.


  • f. 아래 코드처럼 팀원 개인들은 “dev2”를 clone하여 현재 브랜치가 “dev2” 위치에서 switch -c하여 개인용 브랜치에서 개발을 시작하면 된다.
    • git switch -c "팀프로젝트 개인용 브랜치"
    • git push -u origin "팀프로젝트 개인용 브랜치"


2) 원격 저장소에 있는 기존의 프로젝트를 Github에서 Vscode로 받아오는 작업(팀프로젝트)

  • 먼저, 해당 프로젝트를 만들기 위해서 임의의 폴더를 만든다.

  • VSCode의 경우에는 프로젝트의 기본 브랜치가 main인지 확인해주고 main이 아니라면 main으로 바꾸자

  • VSCode의 터미널에서 아래의 명령어를 입력하자!(아래 명령어의 ““는 다 빼고 쓰자)


  • 1) 해당 프로젝트 폴더로 이동 :
    • cd "프로젝트 폴더 경로"


  • 2) 원격 저장소의 프로젝트 받기 :
    • git clone "원격 저장소 주소"


  • 3) 클론으로 프로젝트 받자마자 개발용 브랜치인 “dev2”로 이동하기 :
    • git switch dev2


  • 4) dev2로 이동했으면 프로젝트 다 받았는지 확인하고 여기서 바로 “팀원 개인용 브랜치” 만들기 :
    • git switch -c "팀원 개인용 브랜치명(보통 개발 기능별 이름 들어감)"


  • 5) 새로운 브랜치로 이동했으면, 거기서 팀원 개인은 거기서 개발하고 나중에 원격으로 올릴 때는 그 새로 만든 개인 브랜치명으로 push 하기 :
    • git push -u origin "팀원 개인용 브랜치 명"


  • 6) 이렇게 하면 Github에서 push된 새 브랜치 확인 가능



8. Github - STS4 연동(최종)


1) gitignore




2) 새 프로젝트를 STS4에서 Github로 push하는 방법

  • 1) github에서 repository 1개 만들기(organization, public)


  • 2) 팀원들을 collaboratory의 팀원으로 초대하기


  • 3) gitignore를 만들고 만들어진 원격 저장소의 repository에서 주소를 복사하자.


  • 4) 이제 새 폴더에 STS4를 키고 Spring-Boot 프로젝트 만들기.(라이브러리는 간단히 추가)


  • 5) STS4에서 git repository 탭으로 이동하기


  • 6) git repository 탭에서 clone a repository 버튼을 누르고 원격 저장소를 STS4에 연결시킨다.


  • 7) 팀원들과 해당 프로젝트를 공유하는 방법 :
    • 원격 저장소로 push하여 팀원들과 공유하게 하기 위해서 Spring-Boot 프로젝트 자체를 우클릭하여 Compare with 탭에서 Share Project를 클릭하자.


  • 8) Share Project 탭에서 해당 원격 저장소의 주소를 클릭하고 설정을 마무리한다.


  • 9) 이렇게 설정이 끝났으면 gitignore 파일을 수동적으로 수정하고 branch도 “dev”로 새로 추가해서 스프링 기본 프로젝트를 현재 브랜치가 “dev”에서 git staging을 통해서 원격저장소로 push한다.


  • 10) dev를 만들어서 push했으면 이제는 “dev2”를 만들어서 push에 사용한다. 추후 개발에서는 “dev2”가 개발용 주된 브랜치가 된다.


  • 11) 그래서 모든 팀원들은 브랜치가 “dev2”를 clone하고 현재 브랜치가 “dev2” 위치에서 각자 개인 브랜치를 만들어서 팀원들은 거기서 개발을 시작하게 될 예정이다.


3) 원격 저장소에 있는 기존 프로젝트를 GitHub에서 STS4로 내려받기

  • GitHub에서 해당 프로젝트의 URL을 Copy해서 STS4에서 Git Repository 탭에서 Clone Repository로 해당 프로젝트를 받아서 사용한다.


  • Git Repository탭의 Branches-Remote Tracking 탭에서 실제 프로젝트를 진행하는 주 브랜치인 “dev2”를 클릭하여 이동하자! “dev2”로 이동하면, new branch를 만들 수 있는 새로운 창이 나오는데 거기서 팀원 개인이 진행하는 새로운 브랜치로 만들자!


  • 이렇게 새로운 브랜치를 만들면 git repogitory 탭의 working tree탭에서 원격 저장소에서 가져온 프로젝트를 확인할 수 있다.


  • 이렇게 원격 저장소에서 가져온 프로젝트를 실제 스프링 작업하기 위해서는 working tree 탭에서 해당 프로젝트를 우클릭하며 “import project” 버튼을 누르면 STS4의 로컬 워크 스페이스에서 스프링 작업을 가능하게 해준다.


  • 이제 팀원 각자들이 개인이 만든 브랜치로 push하면 된다.