한바다
git pull오류 ,git clone후 브랜치 유지하는 방법,git초대, 로긴세션유지코드 본문
☑️ git pull 오류
다른 조원이 마스터 깃 수정후 수정된 상황을 가져오고자 git pull을 했는데 계속 아래와 같이 오류코드가 노출 되었다.
C:\Users\user1\hanbatang>git pull
remote: Enumerating objects: 53, done.
remote: Counting objects: 100% (53/53), done.
remote: Compressing objects: 100% (22/22), done.
remote: Total 31 (delta 21), reused 17 (delta 7), pack-reused 0
Unpacking objects: 100% (31/31), 8.17 KiB | 170.00 KiB/s, done.
From https://github.com/jaewon0123/hanbatang
3d933d0..ef9cdba master -> origin/master
Updating 3d933d0..ef9cdba
error: Your local changes to the following files would be overwritten by merge:
hanbatang/src/main/resources/application.properties
Please commit your changes or stash them before you merge.
Aborting
C:\Users\user1\hanbatang>git pull
Updating 3d933d0..ef9cdba
error: Your local changes to the following files would be overwritten by merge:
hanbatang/src/main/resources/application.properties
Please commit your changes or stash them before you merge.
Aborting
▶이에 따른 해결책은
우선 git branch명령어를 쳐서 녹색이 master가 아닌 내 브랜치가 녹색인걸 확인한다.
그러고 나서 git add . -> git commit -m" " -> git push 후 진행한다
[진행한 코드]
C:\Users\user1\hanbatang>git branch
jinhwa2-reeGister
* master
C:\Users\user1\hanbatang>git pull -f
Updating 3d933d0..ef9cdba
error: Your local changes to the following files would be overwritten by merge:
hanbatang/src/main/resources/application.properties
Please commit your changes or stash them before you merge.
Aborting
C:\Users\user1\hanbatang>git stash
warning: in the working copy of 'hanbatang/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst', LF will be replaced by CRLF the next time Git touches it
Saved working directory and index state WIP on master: 3d933d0 濡쒓렇?명솕硫댁뿉???뚯썝媛??踰꾪듉 誘멸뎄???섏젙fatal: unknown write failure on standard output
C:\Users\user1\hanbatang>git pull
Updating 3d933d0..ef9cdba
Fast-forward
hanbatang/src/main/resources/application.properties | 9 ---------
hanbatang/src/main/resources/templates/MarketGuide.html | 2 +-
hanbatang/src/main/resources/templates/beefKindsInfo.html | 2 +-
hanbatang/src/main/resources/templates/board.html | 2 +-
hanbatang/src/main/resources/templates/chatbot.html | 2 +-
hanbatang/src/main/resources/templates/editAddress.html | 2 +-
hanbatang/src/main/resources/templates/editMember.html | 2 +-
hanbatang/src/main/resources/templates/getMyPage.html | 2 +-
hanbatang/src/main/resources/templates/introCompany.html | 2 +-
hanbatang/src/main/resources/templates/mainPage.html | 2 +-
hanbatang/src/main/resources/templates/memberBye.html | 2 +-
hanbatang/src/main/resources/templates/memberSign.html | 4 ++--
hanbatang/src/main/resources/templates/productPage.html | 2 +-
hanbatang/src/main/resources/templates/readBoard.html | 2 +-
hanbatang/src/main/resources/templates/success.html | 2 +-
hanbatang/src/main/resources/templates/uploadBoard.html | 2 +-
16 files changed, 16 insertions(+), 25 deletions(-)
C:\Users\user1\hanbatang>git checkout jinhwa2-reeGister
Switched to branch 'jinhwa2-reeGister'
C:\Users\user1\hanbatang>git pull origin master
From https://github.com/jaewon0123/hanbatang
* branch master -> FETCH_HEAD
Auto-merging hanbatang/src/main/resources/application.properties
CONFLICT (content): Merge conflict in hanbatang/src/main/resources/application.properties
Automatic merge failed; fix conflicts and then commit the result.
C:\Users\user1\hanbatang>
☑️깃 마스터가 제대로 당겨오지 않을 시 나는 기존 폴더를 삭제하고 깃 클론 후 브랜치를 새로 생성했다. 그래서 뜻하지 않게 브랜치 부자가 되었다. 벌써 4개째...
그런데 깃 클론을 해도 새로 브랜치를 만들지 않아도 되는 방법이 있었다니... 알게되어서 블로그에 적어놓고 수시로 보려고 한다.
[코드]
Microsoft Windows [Version 10.0.19045.4529]
(c) Microsoft Corporation. All rights reserved.
C:\Users\user1\hanbatang>git status
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: hanbatang/.factorypath
modified: hanbatang/target/classes/com/hanbatang/controller/BoardController.class
modified: hanbatang/target/classes/com/hanbatang/controller/LoginController.class
modified: hanbatang/target/classes/com/hanbatang/controller/MailController.class
modified: hanbatang/target/classes/com/hanbatang/controller/MainController.class
modified: hanbatang/target/classes/com/hanbatang/controller/MainPageController.class
modified: hanbatang/target/classes/com/hanbatang/controller/MemberController.class
modified: hanbatang/target/classes/com/hanbatang/controller/ReadBoardController.class
modified: hanbatang/target/classes/com/hanbatang/controller/UploadBoardController.class
modified: hanbatang/target/classes/com/hanbatang/dto/Board.class
modified: hanbatang/target/classes/com/hanbatang/dto/Member.class
modified: hanbatang/target/classes/com/hanbatang/dto/Members.class
modified: hanbatang/target/classes/com/hanbatang/mapper/BoardMapper.class
modified: hanbatang/target/classes/com/hanbatang/mapper/LoginMapper.class
modified: hanbatang/target/classes/com/hanbatang/mapper/MemberMapper.class
modified: hanbatang/target/classes/com/hanbatang/service/BoardService.class
modified: hanbatang/target/classes/com/hanbatang/service/EmailService.class
modified: hanbatang/target/classes/com/hanbatang/service/LoginService.class
modified: hanbatang/target/classes/com/hanbatang/service/MemberService.class
modified: hanbatang/target/classes/com/hanbatang/vo/MailVo.class
no changes added to commit (use "git add" and/or "git commit -a")
C:\Users\user1\hanbatang>git branch leegyejun-board
C:\Users\user1\hanbatang>git status
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: hanbatang/.factorypath
modified: hanbatang/target/classes/com/hanbatang/controller/BoardController.class
modified: hanbatang/target/classes/com/hanbatang/controller/LoginController.class
modified: hanbatang/target/classes/com/hanbatang/controller/MailController.class
modified: hanbatang/target/classes/com/hanbatang/controller/MainController.class
modified: hanbatang/target/classes/com/hanbatang/controller/MainPageController.class
modified: hanbatang/target/classes/com/hanbatang/controller/MemberController.class
modified: hanbatang/target/classes/com/hanbatang/controller/ReadBoardController.class
modified: hanbatang/target/classes/com/hanbatang/controller/UploadBoardController.class
modified: hanbatang/target/classes/com/hanbatang/dto/Board.class
modified: hanbatang/target/classes/com/hanbatang/dto/Member.class
modified: hanbatang/target/classes/com/hanbatang/dto/Members.class
modified: hanbatang/target/classes/com/hanbatang/mapper/BoardMapper.class
modified: hanbatang/target/classes/com/hanbatang/mapper/LoginMapper.class
modified: hanbatang/target/classes/com/hanbatang/mapper/MemberMapper.class
modified: hanbatang/target/classes/com/hanbatang/service/BoardService.class
modified: hanbatang/target/classes/com/hanbatang/service/EmailService.class
modified: hanbatang/target/classes/com/hanbatang/service/LoginService.class
modified: hanbatang/target/classes/com/hanbatang/service/MemberService.class
modified: hanbatang/target/classes/com/hanbatang/vo/MailVo.class
no changes added to commit (use "git add" and/or "git commit -a")
C:\Users\user1\hanbatang>git checkout leegyejun-board
M hanbatang/.factorypath
M hanbatang/target/classes/com/hanbatang/controller/BoardController.class
M hanbatang/target/classes/com/hanbatang/controller/LoginController.class
M hanbatang/target/classes/com/hanbatang/controller/MailController.class
M hanbatang/target/classes/com/hanbatang/controller/MainController.class
M hanbatang/target/classes/com/hanbatang/controller/MainPageController.class
M hanbatang/target/classes/com/hanbatang/controller/MemberController.class
M hanbatang/target/classes/com/hanbatang/controller/ReadBoardController.class
M hanbatang/target/classes/com/hanbatang/controller/UploadBoardController.class
M hanbatang/target/classes/com/hanbatang/dto/Board.class
M hanbatang/target/classes/com/hanbatang/dto/Member.class
M hanbatang/target/classes/com/hanbatang/dto/Members.class
M hanbatang/target/classes/com/hanbatang/mapper/BoardMapper.class
M hanbatang/target/classes/com/hanbatang/mapper/LoginMapper.class
M hanbatang/target/classes/com/hanbatang/mapper/MemberMapper.class
M hanbatang/target/classes/com/hanbatang/service/BoardService.class
M hanbatang/target/classes/com/hanbatang/service/EmailService.class
M hanbatang/target/classes/com/hanbatang/service/LoginService.class
M hanbatang/target/classes/com/hanbatang/service/MemberService.class
M hanbatang/target/classes/com/hanbatang/vo/MailVo.class
Switched to branch 'leegyejun-board'
C:\Users\user1\hanbatang>git branch
* leegyejun-board
master
C:\Users\user1\hanbatang>
☑️ 깃 초대하는 방법
- 깃에 로그인 한다. -로그인하면 우측 상단에 동그라미 모양을 클릭하면 나의 저장소가 나온다
- 초대하고자 하는 저장소를 클릭 한다.. 그리고 우측 상단에 setting을 누른다
위와 같은 순서대로 초대를 할 수 있다.!!
☑️ 회원가입후 로그인세션유지 코드
금일 조별과제에서 git에서 merge를 진행 한후(각자의 프로젝트를 합쳤다) 마스트에서 각 수행물이 잘 이행되는지 확인하는 과정에서 회원가입 마지막페이지에서 아래의 기능을 추가 하였다.
원래는 회원가입완료 후 메인페이지에서 다시 로그인을 진행해야하는 과정인데 회원가입후 로그인 세션을 유지하는 거였다.
첫번째로 진행한 결과 물은 아래와 같다.
[@Controller에서 수정전 코드]
@PostMapping("/register")
public String insertMember(Member member, Model model) {
memberService.insertMember(member);
model.addAttribute("msg", "한바탕 회원가입을 축하합니다!");
return"success";
}
[@Controller에서 수정후 코드]
@PostMapping("/register")
public String insertMember(Member member, HttpSession session, Model model) {
// 회원가입 로직
memberService.insertMember(member);
// 성공 메시지 설정
model.addAttribute("msg", "한바탕 회원가입을 축하합니다!");
// 회원 정보를 이용해 로그인 처리
Member loginMember = memberService.getLogin(member.getMemberId(), member.getMemberPw());
// 세션에 로그인 정보 저장
session.setAttribute("loginSession", loginMember);
//회원가입 완료 페이지
return"success";
}
그런데 위와 같이 수행 시 " getLogin"가 임포트 되지 않았다. 한마디 로 빨간줄이 가서 난감했다.
해당 부분을 해결하기 위해 결국 마이베티스(sql문 select로 작성), 매퍼,서비스, 세군대를 추가 해야 했다.
추가한 코드는 아래와 같다.
[서비스 추가]
public Member getLogin(String memberId, String memberPw) {
//로그인 문을 가져오는 메서드 추가
}
[매퍼 추가]
Member findByMemberIdAndMemberPw(String member_id, String member_pw);
}
[sql문 추가]
<!-- 로그인 처리를 위한 select 문 추가 -->
<select id="findByMemberIdAndMemberPw" parameterType="map" resultType="com.hanbatang.dto.Member">
SELECT * FROM members
WHERE member_id = #{member_id}
AND member_pw = #{member_pw}
</select>
위와 같이 수정하니 로그인 세션을 유지하는 코드가 너무 길어지는 것 같았다. 그래서
두번째로 아래와 같이 최종적으로 수정을 마무리 하였다.
[컨트롤러 수정 전 코드]
@PostMapping("/register")
public String insertMember(Member member, Model model) {
memberService.insertMember(member);
model.addAttribute("msg", "한바탕 회원가입을 축하합니다!");
return"success";
}
[컨트롤러 수정 후 코드]
@PostMapping("/register")
public String insertMember(Member member, HttpSession session, Model model) {
// 회원가입 로직
memberService.insertMember(member);
model.addAttribute("msg", "한바탕 회원가입을 축하합니다!");
//회원가입을 한 내용을 로긴 세션을 사용해서 유지한 상태로
session.setAttribute("loginSession", member);
// 메인 페이지로 리디렉션
return "success";
}
결국 "session.setAttribute("loginSession", member);" 이 한줄을 추가 한 것이다. 돌고 돌아 핵심을 잡았다.
[해당 구문에 대한 추가 설명]
session은 특별히 model.addAttribute나 어떤 값으로 전달하지 않아도 컴퓨터에서 임시로 저장한다는 의미가
담겨 있고, session.setAttribute("임시저장에사용할변수명",변수에담을내용); 자바에서 전달이 오면
html 파일에서는 session. 임시저장에사용할변수명 을 작성해주면 된다
맨 앞에 session은 컴퓨터상의 약속이기 때문에 붙여준다