1. Git
📢 Git은 분산 버전 관리 시스템이다.
분산: 브랜치를 나눌 수 있다.
버전: 기존의 히스트로리를 만들고, 현재와 차이점(different)를 확인할 수 있다.
소프트웨어 개발에서 소스 코드의 변경사항을 추적하고 여러 사용자 간의 작업을 조율하는 데 사용된다.
💡 저장소 설명
- project Source code: 소스코드가 있는 프로그램.
- Staging Area : 작업중인 파일의 소스코드의 변경사항시 해당 파일을 커밋 하기전 저장하는 임시 공간.
- Local Repo(.git 파일이 있는 폴더 혹은 저장소): 프로그래머가 소스코드를 개발 중인 컴퓨터의 저장소.
- Remote Repo(Git hub): 작업중인 컴퓨터가 아닌 원격지에 있는 원격 저장소.
💡 Git 명령어 정리
- Add: 프로젝트 전체 폴더 중 변경사항이 있는 파일을 Staging Area에 올리는 작업
- commit: Local Repo로 Staging Area에 있던 것을 반영하기. 이때 Remote Repo에 변경사항에 대한 메세지도 저장(=commit message)
- push:
- fetch: Remote Repo로부터 필요한 파일을 Local Repo로 받기
- merge: fetch로 받은 것을 Local Repo에 있는 변경 사항을 개발자가 작업중인 프로젝트 폴더에 합치기
- pull= fetch+ merge
❓ Git Hub에서 기능을 나누는 이유(깃허브에서 협업하는 과정)
- 내 작업물을 commit해서 local 레포에 반영,
- 상대방 작업물을 fetch 함으로써 local 레포에 반영.
- 수동으로 merge
이게 너무 복잡하니까 그냥 기능을 나누고, 기능별 파일을 나눠서 각자 맡아서 업무를 진행하는게 좋다.
2. 소스트리(GUI) 환경에서 Git Hub 호스팅하기
2-1. 소스트리 사이트 주소
AtlassianSourcetree | Free Git GUI for Mac and Windows
Sourcetree | Free Git GUI for Mac and Windows
A Git GUI that offers a visual representation of your repositories. Sourcetree is a free Git client for Windows and Mac.
www.sourcetreeapp.com
2-2. 호스팅서버(Git Hub) 설정
1. new tab → 빨간색으로 표시한 부분 변경하기
2. 제대로 계정이 추가됐는지 확인
3. 레포지토리(workspace) 추가하기
4. 소스트리에서 확인하기
2-3. 호스팅서버(Git Hub)에 push하기
1. workspace에서 작업하기
2. 작업한 파일 스테이지에 올리기(파일 우측의 + 버튼을 누른다)
3. 스테이지에 올린 파일 커밋하여 local repository(= .git 파일)에 올리기
ㄴ 커밋 메시지를 작성해서 Local repository에 반영(=.git 파일에 반영)
4. 원격 레포지토리 설정하기
5. 원격지(Git hub Repository)를 연결
6. 원격지에 push하기(local repository → remote repository )
7. push 하면 깃허브에 push된 파일 확인
2-4. 작업물 수정하고, Git Hub에 반영하기
1. 파일 수정후 파일을 저장하기
우측을 보면 자동으로 수정된 내역을 확인할 수 있다.
2. 스테이지에 올리고 커밋하기
3. push하고 commit 내역 확인하기(sesond commit)
3. 충돌 해결하기
3-1. workspace로 원격 repository clone 하기
3-1-1. 소스트리에서 Clone 클릭
3-1-2. 깃허브 code → htttps 링크 복사
3-1-3. https 링크 붙여넣기 & 클론할 저장소 선택
3-1- 4. 클론 성공 확인하기
3-1- 4-1. 소스트리에서 확인하기
3-1- 4-2. 로컬저장소에서 확인하기
클론을 하면 깃허브에 작업한 내용을 확인할 수 있다.
3-2. 충돌대처하기
3-2-1. 충돌하지 않은 상황 만들기
1. clonespace에서 test2.txt 파일 생성
2. A에서 수정해서 올리면 에러 발생
- 내거 commit
- fetch
- merge
또는 pull(fetch+merge)
후에 push를 통해서 원격지에 반영
3. 초기 B의 디렉토리
B에서도 A가 바뀐 변경사항을 반영해야함
4. pull 해서 원격레포의 디렉토리 반영하기
5. push해서 완전히 A,B 동기화 하기
3-2-2. 충돌하는 상황 만들기
1. A,B의 파일을 다르게 저장하기
2. A,B 커밋하고, A먼저 push하기
3. 2번에서 b가 push하면 conflict 발생
4. fetch해서 local repository에 반영하기
5. merge를 통해서 해결하기
6. A도 pull해서 원격의 레포를 반영함으로써 merge를 모두 해결하기
3-3. 충돌 해결 방법
💡충돌 해결 방법
1. 내 작업물을 commit해서 local 레포에 반영.
2. 상대방 작업물을 fetch 함으로써 local 레포에 반영.
3. 수동으로 merge.
위와 같이 충돌이 되면 해결하기 복잡하므로 기능을 나누고, 기능별 파일을 나눠서 각자 맡아서 업무를 진행하는게 좋다
'수업자료 > sw공학' 카테고리의 다른 글
[요구사항 분석] 요구사항 (0) | 2024.06.25 |
---|---|
[요구사항 분석] UML (1) | 2024.06.25 |
[Git] Git Hub (0) | 2024.06.25 |
[SW 공학] 소프트웨어 개발 프로세스 (0) | 2024.06.24 |