Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

한바다

git Merge 와 Branch 본문

카테고리 없음

git Merge 와 Branch

한바다진화 2024. 8. 12. 21:49

☑️ git Merge

 금일 파이널프로젝트에서 git Merge를 진행하였다.

 각 조원이 했던 부분을 하나씩 합치는 작업을 진행 한 것이다!

 주의사항은 git Merge를 진행할 때 우선 내가 어느 위치에 있는지 확인한다

C:\Users\user1\Final>git branch
C:\Users\user1\Final>git status

확인 시 나는 브런치에 있어서  마스터 경로로 이동을 하였다. 

C:\Users\user1\Final>git checkout master

마스터로 이동한 후 마스터에 있는 최신 변경사항을 가져오기 위해 아래 명령어를 입력한다!

C:\Users\user1\Final>git pull

그리고 드디어 병합!! merge를 시도한다!!!

C:\Users\user1\Final>git merge jinhwa2-board

merge가 완성되었다! merge된 것을 git add .   그리고 git commit -m  ""  그리고 gti push를 진행한다.

C:\Users\user1\Final>git add .

C:\Users\user1\Final>git commit -m "fist merge"
[master 353fa02] fist merge

C:\Users\user1\Final>git push
Enumerating objects: 70, done.
Counting objects: 100% (70/70), done.
Delta compression using up to 6 threads
Compressing objects: 100% (20/20), done.
Writing objects: 100% (24/24), 10.60 KiB | 2.12 MiB/s, done.
Total 24 (delta 11), reused 0 (delta 0), pack-reused 0 (from 0)
remote: Resolving deltas: 100% (11/11), completed with 11 local objects.
To https://github.com/kimjinwoo23/Final.git
   a4926f3..353fa02  master -> master

C:\Users\user1\Final>

위와 같이  a4926f3..353fa02  master -> master 해당코드가 나오면 완성 된다!!

 

☑️ 이제 조원들이 merge한 결과물들을 정리 해야 한다!  merge 후 아래와 같은 충돌이 발생 하였다!

- 우선 스프링부트 설정 부분 DBConfig, DTO 중복, 공백 생성 등

- 리액트에서는 서로 설치한 파일이 다르므로 패키지 제이슨에 겹치는 구문들을 제거 하였다.

- 또한 npm i 가 설치되지 않은 것은 package.json에 쉼표가 누락되어 설치되지 않은 상황이 발생되었다.

- 각자 개성이 다른 파일들의 import경로를 지정해주었다

▶ merge를 하면서 반성되었던 것은 나혼자 폴더명을 component라고 적은 것이다!! 다른 팀원들의 폴더명을

    한번 더 확인 했다면 좋았을 것 같다!!

☑️ 위 상황들이 한차례 정리가 되고 완성된 파일을 git pull 하였다!

[우선 브런치에서 마스터로 이동하였다]
C:\Users\user1\Final>git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.

[마스터로 이동한 후 git pull 진행한다]

C:\Users\user1\Final>git pull

[깃 브랜치로 이동한다]

C:\Users\user1\Final>git checkout jinhwa2-board
Switched to branch 'jinhwa2-board'
Your branch is up to date with 'origin/jinhwa2-board'

[내 브런치에서 git pull 진행한다]

C:\Users\user1\Final>git pull origin master

 

☑️리액트 로그인 하기

[리액트 화면]

- Register.js

// fetch 활용 문법  자바 try catch문법과 리액트 fetch catch문법은 다르다. fetch문법에서 성공과 실패로 나눠짐

fetch('http://localhost:9010/api/user/register',{
   method : "POST",  //DB에 저장하는 방식
   body : formData  //사용자가 작성한 데이타가 스프링부트 controller 에 전송
   })
 .catch(error => {
   console.error(error);
   setMessage("회원가입에 실패했습니다.");
   });
 }

 

- Login.js

//axios 로 로그인 완료하기

const hancleLogin = () => {
 axios.post('/api/user/login',
   new URLSearchParams({
      username: username,
      password: password,
     }),
     {
     headers: {
       'Content-Type': 'application/x-www-form-urlencoded',
       }
      }
   )
   //axios 끝나는 구문에 then작성
   .then((reoponse) => {
    //setUser 찾는 법 상단에 functon Login({setUser})이 꺼져 있으며, UserProfile에서 <p>사용자이름:{user.username}</p>
    //App.js에서 <Login setUser={setUser} 에서 추측해볼수 있듯이 setUser함수를 갖고 와야 한다
     setUser(response.data);
   })
   .catch(error => {
     if(error.response && error.response.status === 401) {
       setMessage('아이디 또는 비밀번호가 잘못되었습니다');
     } else {
       setMessage('로그인에 실패했습니다.');
     }
    });
   };
 ▶ 위와같이 적힐 경우 console창에 localhost3000이라고 뜨면서 경로가 잘못 지정되었다고 나온다.
 외냐하면 앞서 Register.js에서 fetch경로에 'http://localhost:9010/api/user/register' 이라고
 경로를 지정 해줬기 때문에 위 axios.post다음에도 "http://localhost:9010"해당구문을 입력하여
 'http://localhost:9010/api/user/login' 이렇게 경로를 지정해줘야 리액트 3000아 아닌 로컬 호스트
 9010으로 간다. 아니면 proxy 설정에서 경로 설정해준것으로 두개의 js파일 경로를 동일하게 맞춰준다.
 그런데 아무래도 로컬호스트를 넣게 되면 좀더 정확한 경로로 진행할 수 있다!! 두개의 경로가 모두 같아야 
 하는 것이 핵심이다!!
  ▶ 그리고 axios ~ then 구문에서 setUser함수는 상단에 사용하지 않은 꺼진 함수가 있는지 보고
  또한 APP.js에서 가입시 어떤 함수를 사용했는지 확인을 해본다!!

 

[UserController.java]

리액트에서 fetch와 axios로 전송해준 내용은 자바 컨트롤러에서 받으며 받은 내용을 잘처리한 후 리액트로

다시 보낸다

@PostMapping("/login")
public User login(
    @RequestParam("username") String username,
    @RequestParam("password") String password
    ) {
    return userService.getUserInfo(username,password);
   }
   
 @PostMapping("/register")
 public String register(
     @RequestParam("username") String username,
     @RequestParam("password") String password,
     @RequestParam("profileImage") MultipartFile profileImage
     ) {
    userService.register(username, password, profileImage);
        return "ȸ������ ����!";
    }
}