Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
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
29 30
Tags more
Archives
Today
Total
관리 메뉴

어? 이게 되네

2022.06.29. 수요일 이공계 전문기술 연수사업 (Git) 본문

TIL

2022.06.29. 수요일 이공계 전문기술 연수사업 (Git)

토끼귀에진주귀걸이 2022. 6. 29. 18:23

오늘 배운 것

Git : 형상 관리 시스템 (버전 관리 시스템)

목적 - 협업/형상관리/버전관리

 

git 용어

commit : 하나 또는 다수의 파일에 대한 변경 내용을 저장할 때마다 새로운 commit을 생성함

commit message : commit을 생성할 때마다 왜 변경했는지에 대한 이유를 설명하는 메시지를 제공해야 함

branch : 테스트를 해보거나 새로운 기능을 개발하기 위해 사용할 수 있는 따로 떨어진 독립적인 commit들

master branch : 새로운 git프로젝트를 만들 때마다 master라는 기본 branch가 생성됨. 배포할 준비가 되면 작업이 최종적으로 마무리 되는 branch

feature branch : 새로운 기능을 개발할 때마다 작업할 branch를 만드는데 이를 feature branch라고 함

release branch : 직접 qa 작업을 하거나 고객의 요구로 구 버전의 소프트웨어를 지원해야

merge : 한 branch에서 master branch로 병합 작업을 하는 것 

pull request

fork 프로젝트에 직접 참여하려면 그 프로젝트를 소유하거나 협력자로 포함되어야 함 그렇지 않으면 github 사용자 계정에 프로젝트의 복사본을 만듦. 이 과정을 forking이라고 함. 프로젝트를 fork하면 복사본을 원하는 대로 변경할 수 있고 pull request를 이용해 원본 프로젝트를 변경할 수도 있음 !

 

git remote add origin 저장소주소

저장소 주소를 origin이라는 애칭으로 사용해서 remote하겠다

push : 원격 저장소에 내용물을 밀어넣겠다

git push -u origin main

 

우리는 자주자주 합쳐야함 ! ㅠㅠ 

 

현재 이 폴더를 깃 저장소로 초기화해달라는 뜻
현재 폴더에 있는 거 전부 스테이지에 올리겠다
커밋을 하고 main 브랜치를 하나 만들어 달라는 뜻

 

원격 저장소에 orgin이라는 애칭으로 remote하겠다는 뜻?

 

origin 브랜치에 있는 애를 main 브랜치로 가져가서 push 하겠다는 뜻
고대로 따라쓰면 됨 !

원격 저장소(깃헙홈페이지저장소)의 main 브랜치를 나(로컬저장소)한테 땡겨와달라는 뜻 !

(remote할 때 애칭을 origin이라고 했었음)

 

충돌테스트

프로젝트 소유자 : DAO의 insert메소드에 출력문 하나 추가

프로젝트 기여자 : DAO의 insert메소드를 아예 반환값이 없도록 만들고 기존의 출력문을 지우고 다른 출력문을 넣음 

충돌을 안나게 하려면 먼저 pull한 다음에 push해야함 !!!

즉 충돌을 최대한 안나게 하려면 pull다음 push하는 세트를 자주 빈번하게 해줘야함 !!!!!!!!!!!!

 

우리는 pull하기전에 코딩을 이미 해버림 그러면 pull 당하기 (덮어씌워지기)전에 충돌나서 깃이 알려줌!

그런데 즉 코딩하기 전에 pull하고 코딩하는 중에도 pull하고 만약 충돌난다면 해결해서 push해야함 !!!!!!!!!!!!

원격 저장소 것을 pull하기 전에 코딩해버려서 (같은 메소드를 다른 방향으로 코딩되어서) push가 거부됨!!!

같은 메소드의 같은 코드였다가 소유자가 다르게 코딩하여 커밋하고 push했고

나는 그 변경사항을 먼저 pull하지 않고 또 소유자와 다르게 코딩하여 커밋하여 push하려고 했더니 충돌난 거임 !!!

근데 그러면  

그래서 pull하려고 했더니 그래도 오류남
직접 코드에 가서 충돌난 현장 확인

충돌난 코드에서 소통하여 협의하고 충돌난 표시 지운 다음에

commit후 최종 push

 

(같은 클래스 수정시 충돌이 나면) 마지막 수정자가 push를 해서 reject가 나면 pull을 해보고 에러메시지 확인 후 소통하여 완벽하게 클래스를 수정한 다음 마지막 수정자가 push함