이스트소프트 오르미

[이스트소프트 오르미] 2일차

코 밑 2025. 7. 9. 23:04
Contents

Git/Github

  • 이걸 왜쓰지?
    1. 버전 컨트롤(VCS)
    2. 협업환경 조성(팀플할 때 사용)
      • 코드 변경 이력 확인
      • 팀원 간의 코드 리뷰
      • 효율적인 의사소통
      • 코드 공유 간편화
      • 다른 사용자의 기여(Contiburion) 허용
  • Git의 동작 구조
    • 로컬 환경에서 작업한 것을
    1. 원격저장소로 올리거나(push)
    2. 원격저장소에서 초치신 버전을 내 로컬환경으로 당겨올 수 있다(pull)
      • Github는 Git을 기반으로 만들어진 웹 서비스

Github 연동

  • Git 최초 설정
git config --global user.name "사용자 이름"
git config --global user.email 메일주소
  • 후에 git config listgit config —list 로 확인
  • Github - Repository란
    • 파일들과 이력(변경 기록)을 저장하는 작업 공간

Git 명령어

  • Status
    • git status
    • git의 변경 사항을 확인
  • Add
    • git add [파일명][경로]
    • 경로에 있는 파일을 스테이지에 추가
  • Commit
    • git commit
    • git commit -m "[메시지]"
    • 스테이지에 추가되어있는 변경사항들을 git 로컬 저장소에 추가
  • 변경사항 확인하는 명령어
    • git log
    • 커밋 내역 확인
    • git diff
    • 어떤 파일에서 어떤 내용이 변경되었는지 확인
  • Revert
    • git revert [커밋 해시]
    • 작업한 커밋을 어느 지점(커밋 해시)까지 되돌리는 것
    • 커밋 기록이 남는다
  • Reset
    • git reset —hard [커밋해시]
    • Revert와 비슷하지만 커밋 기록이 남지 않는다 ☢️**위험!!**☢️
  • Branch
    • 브랜치 관리 방법
      • 기능 개발 단위로 단위
      • 각각의 개발자가 서로 다른 기능을 동시에 안정적으로 개발 가능
      • main 브랜치에서 기능 개발 브랜치를 파서 각각 기능을 개발한 뒤 merge한다
    • git branch
      • 브랜치 목록 확인
    • git branch [브랜치 명]
      • 브랜치 생성
      • 현재 위치하는 브랜치를 기준으로 생성됨
    • git switch [브랜치명]
      • 현재 브랜치 이동
    • git switch -c [브랜치명]
      • 생성과 동시에 이동
    • git branch -d [브랜치명]
      • 브랜치 삭제
      • -D 옵션을 사용하면 강제 삭제
    • git branch -m [기존 브랜치 명] [새 브랜치 명]
      • 브랜치명 변경
  • Merge
    • git merge [Feature 브랜치]
      • 브랜치 두개를 합침
      • 브랜치명은 현재 위치하는 브랜치를 따라감
  • Merge 방법

Fast-Forward Merge (FF)

  • Fast-Forward Merge (FF)
      • feature 브랜치가 베이스 브랜치에서 파생되고 베이스 브랜치의 변경 사항이 없다면 가능
      • 단순히 브랜치 포인터를 이동시킨다
      • 병합 작업이 일어나지 않는다

Three-way Merge (Non Fast-Forward)

  • Three-way Merge (Non Fast-Forward)
    • 베이스/ feature 두 브랜치 모두 변경 사항이 적용되면 가능
    • 공통 조상을 기준으로 병합된다

rebase 이전

 

rebase 이후(FF Merge가 가능해보인다!)

  • Rebase Merge
    • feature 브랜치가 너무 많아져서 3way 머지했을 때 그래프가 안이뻐질 거 같으면 한다
      1. 머지하고자 하는 feature 브랜치로 이동
      2. git rebase [main 브랜치]
      3. main 브랜치로 이동
      4. git merge [feature 브랜치]
    •  

Github 이용

  • Git Remote
    • 로컬 저장소에 있는 파일을 깃허브 레파지토리에 push
    • git remote
      • remote된 깃허브 레파지토리를 확인
    • git remote add [remote명] [Repository URL]
      • 깃허브 레파지토리의 URL로 리모트를 추가
      • git remote add origin [Repository URL] - 국룰
    • git push -u [remote명] [브랜치명]
      • remote에 브랜치 푸시
      • git push -u origin [브랜치명]
    • git pull
      • 원격 레파지토리의 최신 작업 받아오기
  • Git clone
    • 깃허브 원격 레파지토리를 내 로컬환경에 복제하는 작업
    • 내가 복제하고자 하는 디렉토리로 이동 → git clone [Repository URL]

Conflict

  • 브랜치를 머지할 때 99% 당연하게 나타남
  • 두 개발자가 같은 구간을 수정해서 자동 머지를 못하고 수동 해결을 요구하는 상황
  • 좀 더 나은 코드를 골라서 머지한 후 다시 커밋한다
  • Error: ‘git pull’ before pushing again.
    • pull할 거리가 남아있을 때 push가 안되는 상황에서 나오는 메시지
    • pull 후 push하면 해결