깃허브 협업을 위한 push, pull기초

jinhan han·2024년 5월 15일
0

풀스택 개발 세팅

목록 보기
2/4
post-thumbnail
post-custom-banner

Git 다운로드 필요
멤버는 총 2명이라는 가정하에 설명. (책임, 1번 개발 멤버)

알아두어야할 기본 개념

주제 : 깃헙 푸시 풀 브랜치의 활용
푸시 (push) : 내가 제작한 코드를 업로드
풀 (pull) : 깃헙에 코드를 불러서 내코드에 적용
커밋 (commit) : 해당작업에 푸시나 풀이전에 메세지를 남기기 위한 작업
브랜치 : 깃헙에 푸시 밑 풀기록을 남기기 위한 작업 이름 (main 브랜치와 동일한 작업 이름은 사용 하지 않는다.)
git init : 현재 폴더가 Git의 버전 관리아래에 들어감
git add --all : 깃의 버전이나 깃의 작업 변경 사항 적용
git add . : 현재 터미널에서 선택한 디렉토리(폴더)에서의 버전이나 깃의 작업 변경 사항 적용

git init 입력 -> git add --all또는 git add . -> 커밋 -> 푸시or풀

최초의 깃허브 작업 세팅

개발 책임의 작업

1. 깃허브 사이트에서 repository 생성


참조 사진 -1

2. github 관리 전용 디렉토리(폴더) 생성
-선택이긴 하지만 강력 추천
3. github 관리 전용 디렉토리(폴더) 안에 개발 환경 생성
4. 터미널로 개발 환경 디렉토리로 들어가 아래와같이 git init입력

PS C:\users\user\Documents\github\untitled> git init /좌측처럼 입력
Initialized empty Git repository in C:/Users/user/Documents/github/untitled/.git/ --메세지

git init : 현재 폴더가 Git의 버전 관리아래에 들어감
5. 터미널로 개발 환경 디렉토리로 들어가 아래와같이 ' git remote add origin 깃레포지토리 주소 ' 입력
참조 사진 -1에 깃 레포지토리 주소가 초록색 상자로 표시

git remote add origin https://github.com/be-01-team/practice-spring-api.git /좌측처럼 입력
git add --all  /좌측처럼 입력 
--아래는 메세지
warning: in the working copy of '.gitignore', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of '.idea/misc.xml', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of 'gradlew', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of 'src/main/java/com/example/StreamExample1.java', LF will be replaced by CRLF the next time Git touches it -- 메세지

6. 깃허브 브라우저나 어플에서의 요청 허가
(깃헙에서 요청을 안하는 경우도 있으나 문제는 안됨)

7. 깃허브 커밋 (commit) 입력으로 첫 코드 푸시전 환경 세팅

git commit -m "first initalized codes"  /좌측처럼 입력
--아래는 메세지
[master (root-commit) 3c60ce1] first initalized codes
 24 files changed, 910 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 .idea/.gitignore
 create mode 100644 .idea/encodings.xml
 create mode 100644 .idea/gradle.xml
 create mode 100644 .idea/misc.xml
 create mode 100644 build.gradle
 create mode 100644 gradle/wrapper/gradle-wrapper.jar
 create mode 100644 gradle/wrapper/gradle-wrapper.properties
 create mode 100644 gradlew
 create mode 100644 gradlew.bat
 create mode 100644 settings.gradle
 create mode 100644 src/main/generated/com/example/repository/QAcademy.java
 create mode 100644 src/main/generated/com/example/repository/QTodo.java
 create mode 100644 src/main/java/com/example/Customer.java
 create mode 100644 src/main/java/com/example/StreamExample1.java
 create mode 100644 src/main/java/com/example/StringUtils.java
 create mode 100644 src/main/java/com/example/config/QueryDslConfig.java
 create mode 100644 src/main/java/com/example/repository/Academy.java
 create mode 100644 src/main/java/com/example/repository/AcademyRepository.java
 create mode 100644 src/main/java/com/example/repository/AcademyRepositorySupport.java
 create mode 100644 src/main/java/com/example/repository/Todo.java
 create mode 100644 src/main/java/com/example/repository/TodoRepository.java
 create mode 100644 src/main/java/com/example/repository/TodoRepositoryCustom.java
 create mode 100644 src/test/java/BasicTest.java --메세지
 '''

커밋 개념 : git commit -m(메세지의 줄임말) "first initalized codes"(해당 작업에 대한 명시를 해야 협업시 수월한 협업 가능)
더하여 커밋이 안되있다면 어떤한 pull이나 push가 작동 불가

8. 깃허브 브랜치 이름 확인 후, git push -u origin master 입력으로 첫 코드 push 성공

PS C:\users\user\Documents\github\untitled> git branch /좌측처럼 입력
* master
--브랜치 확인 후
PS C:\users\user\Documents\github\untitled> git push -u origin master /이렇게 입력
--아래는 메세지
Enumerating objects: 42, done.
Counting objects: 100% (42/42), done.
Delta compression using up to 12 threads
Compressing objects: 100% (31/31), done.
Writing objects: 100% (42/42), 65.88 KiB | 13.18 MiB/s, done.
Total 42 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), done.
To https://github.com/be-01-team/practice-spring-api.git
 * [new branch]      master -> master
branch 'master' set up to track 'origin/master'.

push 개념 : git push -u (upstream 약자로 해당 브랜치로 업로드시 그 브랜치가 다음에도 기본으로 브랜치로 변경) origin (해당 원격저장소의 기본 default) master(브랜치 이름)

아까 그 repository로 들어가면 아래사진과 같이 업로드 완료

이렇게 브랜치 명칭에 맞게 생성 최초로 올린 브랜치의 이름이 기본 브랜치가 되며 그 브랜치가 프로젝트 총 책임 브랜치로 되어야한다.

총 책임 브랜치가 사용되는 경우

  • 최초의 repository 생성시
  • PR(Pull request) merge를 할때 - 즉, 멤버의 개발 코드를 병합하여 업데이트할 경우

이거 이외는 이 브랜치를 사용하지 않도록 한다. 왜냐면 분리된 브랜치로 코드의 변형을 막기 위함이다.

요약

git init
git remote add origin https://github.com/....
git add --all
git commit -m "first initalized codes"
git branch
git push -u origin master

멤버의 최초의 깃허브 코드 받기

개발 1번 멤버의 작업

깃허브에 기본 코드 틀이 올라간 이후, 개발 멤버가 코드를 받는다

9. 터미널로 개발 환경 디렉토리로 들어가 아래와 같이 git init입력
그 이후, git clone https://github.com/be-01-team/practice-spring-api (리포 주소) 입력

PS C:\kotlintutorial\practice-spring-api> git init /좌측처럼 입력
PS C:\kotlintutorial\practice-spring-api> git clone https://github.com/be-01-team/practice-spring-api /좌측처럼 입력
--아래는 메세지
Cloning into 'practice-spring-api'...
remote: Enumerating objects: 42, done.
remote: Counting objects: 100% (42/42), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 42 (delta 1), reused 42 (delta 1), pack-reused 0
Receiving objects: 100% (42/42), 65.88 KiB | 5.07 MiB/s, done.
Resolving deltas: 100% (1/1), done. --메세지

git clone 개념 : git clone https://github.com/be-01-team/practice-spring-api (레포지토리 주소) 이 개념은 해당 주소에 관련된 코드를 현재 디렉토리로 다운 받는다.

10. 터미널로 second-kim 브랜치 생성
이유 : !!![필수] master브랜치에 영향을 주기 때문에 브랜치를 second-kim으로 변경 하고 작업

PS C:\kotlintutorial\practice-spring-api\practice-spring-api> git branch /좌측처럼 입력
* master
PS C:\kotlintutorial\practice-spring-api\practice-spring-api> git branch second-kim /좌측처럼 입력
PS C:\kotlintutorial\practice-spring-api\practice-spring-api> git branch
* master
  second-kim

11. 터미널로 master브랜치를 git checkout second-kim으로 second-kim으로 변경하여 작업

PS C:\kotlintutorial\practice-spring-api\practice-spring-api> git checkout second-kim /좌측처럼 입력
Switched to branch 'second-kim'
PS C:\kotlintutorial\practice-spring-api\practice-spring-api> git branch /좌측처럼 입력
  master
* second-kim

개발 환경에 깃환경을 정착하면 왼쪽 초록색 상자 처럼 새로운 ui가 추가됨
이 상태에서 master 브랜치를 유지한 채로 개발하면 원격적으로 변경 가능성이 있음. 본 코드에 오류 가능성 유발, !!!따라서 [필수] 작업 브랜치로 변경 후 코드 작업

개발 브랜치에 위와같이 추가 됨

12. git init 입력과 git add . 입력으로 git 환경 구성

PS C:\kotlintutorial\practice-spring-api\practice-spring-api> git init
Reinitialized existing Git repository in C:/kotlintutorial/practice-spring-api/practice-spring-api/.git/
PS C:\kotlintutorial\practice-spring-api\practice-spring-api> git add --all
warning: in the working copy of '.idea/misc.xml', LF will be replaced by CRLF the next time Git touches it

13. 커밋 입력 후, git 환경 구성

PS C:\kotlintutorial\practice-spring-api\practice-spring-api> git commit -m "user list changed"   /좌측처럼 입력
[second-kim e817c13] user list changed
 4 files changed, 23 insertions(+), 7 deletions(-)
 create mode 100644 .idea/jpa-buddy.xml
 create mode 100644 .idea/vcs.xml   --메세지

14. git push -u origin second-kim으로 코드 올림

PS C:\kotlintutorial\practice-spring-api\practice-spring-api> git push -u origin second-kim
--아래는 메세지
Enumerating objects: 21, done.
Counting objects: 100% (21/21), done.
Delta compression using up to 4 threads
Compressing objects: 100% (10/10), done.
Writing objects: 100% (12/12), 1.26 KiB | 323.00 KiB/s, done.
Total 12 (delta 4), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (4/4), completed with 4 local objects.
remote:
remote: Create a pull request for 'second-kim' on GitHub by visiting:
remote:      https://github.com/be-01-team/practice-spring-api/pull/new/second-kim
remote:
To https://github.com/be-01-team/practice-spring-api
 * [new branch]      second-kim -> second-kim
branch 'second-kim' set up to track 'origin/second-kim'.

15. 위 작업 이후 second-kim 브랜치에 PR(pull request) 요청이 오면 깃허브에서 PR(pull request) create 그리고 코드 merge 및 업데이트

해당 코드 작업

해당 코드 작업 merge 이후, 코드 변경됨

브랜치 기록

요약

git init
git clone https://github.com/...
git branch second-name
git checkout second-name
git commit -m "user list changed"
git push -u origin second-kim
깃허브 사이트에서 PR 생성
책임 계정으로 PR merge로 코드 업데이트

2번째 깃헙 업데이트 깃헙 코드 pull(다운) 받아서 개발 작업

git init은 이미 했기에 git add --all 입력 -> git commit -m "pull finished work" 입력

PS C:\users\user\Documents\github\untitled> git add --all /좌측처럼 입력
PS C:\users\user\Documents\github\untitled> git commit -m "pull finished work"  /좌측처럼 입력
--아래는 메세지
[master 75aa2c8] pull finished work
 1 file changed, 6 insertions(+)
 create mode 100644 .idea/vcs.xml

16. pull로 코드 다운받기

PS C:\users\user\Documents\github\untitled> git pull origin master
--아래 메세지
From https://github.com/be-01-team/practice-spring-api
 * branch            master     -> FETCH_HEAD
Auto-merging .idea/vcs.xml
CONFLICT (add/add): Merge conflict in .idea/vcs.xml
Automatic merge failed; fix conflicts and then commit the result.

17. manager라는 branch를 생성

PS C:\users\user\Documents\github\untitled> git branch manager
PS C:\users\user\Documents\github\untitled> git branch
  manager
* master

18. git add --all 입력 후, manager로 브랜치 변경 그리고 코드 작업

PS C:\users\user\Documents\github\untitled> git add --all
PS C:\users\user\Documents\github\untitled> git checkout manager
--아래 메세지
Switched to branch 'manager'
A       .idea/jpa-buddy.xml
M       .idea/misc.xml
M       .idea/vcs.xml
M       src/main/java/com/example/StreamExample1.java

19. 그리고 아까와 비슷한과정으로 코드 push를 하여 업데이트

자주일어나는 오류 상황 해결 대처 법

1. branch 명칭을 잘못 만들경우 branch 삭제

브랜치 삭제 : git branch -d 브랜치이름

2. git의 push 및 pull 기록들이 꼬여서 pull 받았을 경우

리포지토리에 가장 최신기록의 push와 pull로 덮어써서 업데이트하는 방법
git commit -m '메세지' 입력 이후 , git pull --rebase origin main 입력

3. 잘못된 레포지토리 주소를 remote로 추가했을 경우 remote를 제거하는 법

git remote remove origin

하위 브랜치에서 오류 발생시 main으로 푸시하는 법

git checkout master

git rebase main

git fetch origin

git merge origin/main

git checkout main

git checkout -b new-feature-branch

Switched to a new branch 'new-feature-branch'

git checkout master

git push origin main --force

git merge master

만약 이런 문구가 뜬다면 fatal: refusing to merge unrelated histories

추가적인 방법

git merge master --allow-unrelated-histories

git add .

git commit -m "Resolved merge conflicts"

git push origin main

profile
개발자+분석가+BusinessStrategist
post-custom-banner

0개의 댓글