[TIL] Git & Github 사용법 정리

지혜·2023년 12월 22일

Android_TIL

목록 보기
24/70

✏231222 금요일 TIL(Today I learned) 오늘 배운 것

📖 Git & Github 개념

  • Git : 버전 관리 도구. 코드 변경점을 기록한다.
  • Github : 온라인 코드 저장소. 온라인 백업, 공유, 협업 환경을 지원한다.

📖 Git에서도 통용되는 유용한 리눅스 명령어

✅ 명령어들을 사용할 때는 띄어쓰기와 붙여쓰기 마저도 중요하다! . 을 사용하는 것도 주의!

  • pwd : print working directory. 현재 작업하는 폴더를 보여달라는 뜻
  • ls :현재 폴더 안에 있는 폴더와 파일 내역을 모두 보여달라는 뜻
  • ls -a :현재 폴더 안에 있는 폴더와 파일 내역과 숨겨진파일들까지 모두 보여달라는 뜻
  • cd 폴더명1/폴더명2 (change directory) : ls(ls -a)명령어를 통해 확인된 폴더명1을 거쳐 폴더명2으로 이동
    • 현재 작업하는 폴더에서 폴더명1으로 그 곳에서 또 폴더명2 더블클릭하여 들어가는 효과
    • cd .. 은 한 단계 위의 폴더로 이동.
  • mkdir 폴더명 : make directory. 현재 경로에 폴더를 생성하는 명령어
  • touch 존재하지않는파일명 : 현재 경로에 파일을 생성하는 명령어
    +touch 존재하는파일명 : 존재하는파일명 파일의 타임스태프(따로 옵션이 없다면 atime,ctime,mtime 3가지 모두) 변경

📖 Github에 코드 올리기 (개인)

  1. 안드로이드스튜디오에 코드를 다 작성하면, 밑의 탭메뉴에서 Terminal을 연다.
  2. Terminal이 열리면 Local인지 확인하고, Local이라면 옆에 ∨ 를 눌러 꼭 Git Bash로 변경해준다!!!
  3. git init
    • git init 명령어를 입력하여 현재 프로젝트 폴더에 .git 을 생성해준다.
    • git branch -M main
      : branch명은 깃페이지에서 기본으로 main을 쓰는데, main이 아닌 경우에는 명령어를 작성하여 main으로 바꿔준다.
  4. git remote add origin 깃허브레포지토리주소
    • 깃허브레포지토리주소를 origin이름으로 등록 및 연결해주는 명령어.
  5. git switch -c 새브랜치명 / git checkout -b 새브랜치명
    • 필요한 경우(기본 main 브랜치는 두고, 새브랜치에 코드복사본을 저장하고 싶을 때)에 사용한다. 바로 새로운 브랜치가 생성되고 그 이름으로 브랜치가 변경된다. 둘 중 아무거나 하나 쓰면 되고, switch가 최신형이고 더 목적에 맞게 만들어진 명령어.
    • git branch
      : 명령어를 사용해 지금 등록되어있는 모든 branch와 사용하고 있는 branch를 확인 할 수 있다.
    • git switch 이동할브랜치명 / git checkout 이동할 브랜치명
      : 둘 중 아무거나 하나로 브랜치 이동을 할 수 있다.
  6. git add . (여기서 .은 꼭 띄어써주기!)
    • 현재 폴더의 모든 파일( . )을 등록(add)해준다.
    • 만약 LF CRLF 오류가 발생한다면 작성할 것 : git config --global core.autocrlf true
  7. git commit -m "커밋메시지 작성(내가 무엇을 작성했는지 자세히 기재)"
    • 이 때 Please tell me who you are 오류가 발생한다면
      : git config --global user.email "깃로그인할때쓰는이메일"
        git config --global user.name "깃에서사용하는이름(닉네임)"
  8. git push -u origin main
    • 여기서 main은 내가 올릴 브랜치명. 다른 브랜치명을 사용중이라면 그 브랜치명으로 작성
    • pull 오류가 발생한다면 : git pull origin main
    • 했는데 histories 하는 오류가 발생한다면 (ReadMe.md파일이 연관되지 않는 파일이라고 판단되어 발생하는 오류)
      : git pull origin main --allow-unrelated-histories
    • 침착하게 pull로 깃허브 레포지토리와 상태를 맞춰준 후 다시 git push -u 브랜치명 을 해주면 된다.
  9. 수정하여 재업로드 하고 싶다면 6번 부터 반복.

📖 Github에 코드 올리기 (팀 협업)

  1. 팀장이 github repository 만들고 초기코드 작성하여 push 까지 해주기.
    • 이때 최종배포본인 main 브랜치보다는 테스트용으로 develop브랜치를 만들어 기본값으로 설정하고, 여기서 합쳐주는 것이 좋다.
  2. github 레포지토리의 settings에서 Collaborators로 팀원들을 등록해주기.
  3. 팀원들은 Collaborators를 수락하고, 안드로이드스튜디오에서 File> New> Project from Version Control> Git에 들어가서 URL에 팀장이 만들어준 레포지토리 주소를 등록하여 코드를 clone해온다.
    • 어떤 프로젝트가 열려있더라도 이 방법을 사용하면 URI 밑에 있던 directory에 레포지토리이름의 폴더가 새로 생기게 되므로 폴더를 생성해 둘 필요도 없고, 소스코드만 들고 오는 게 아니라 git 저장소, GitHub에 있던 commit log들, 원격 저장소 주소도 같이 들고온다.
      => 그래서 Clone을 하면 따로 GitHub에 설정을 하지 않아도 자동 연결된 상태.
    • git clone 클론할레포지토리주소 .
      : 명령어를 사용해서도 클론할 수 있지만 위의 이유로 굳이 써야..하나..싶다!
  4. 클론하여 만약 프로젝트디렉토리 자체가 로드 되었다면, File> Open을 눌러 가지고온레포지토리폴더 하위에 있는 안드로이드 프로젝트를 open하면 된다. Android 개발 창으로 세팅이 되었다면, git switch -c 기능브랜치명(=내가작성한코드를올릴브랜치명) 으로 브랜치를 만들어주고 그 브랜치에 기능 개발을 한다.
  5. 기능 개발 후 (물론 git add . 과 git commit -m "" 이 되어있어야 push가능) 바로 git push origin 작성중브랜치명 으로 한 번 올린 후(백업), 바로 Pull Request하지 않고!! 내가 작성중인 브랜치에서 git pull origin dev를 하여 나의 로컬에서 충돌 테스트를 해본다.
  6. 충돌 테스트 후에 완성된 코드를 다시 작성중인 브랜치에 git push origin 작성중브랜치명 으로 github에 올려주고 github페이지에서 Pull request를 생성한다. Pull request 화면에서 내가 등록한 compare 기능브랜치가 원하는 base브랜치로 잘 들어가는지 확인 후 Create pull request 생성.
  7. 수정이 필요하거나 추가할 내용이 생기면, 다시 (필요한 경우) Pull로 dev에 등록된 팀원들의 코드를 꼭 업데이트 해 준 후,(충돌방지) 수정 및 추가 사항을 기재하고 5번부터 반복한다.

+안드로이드 스튜디오에서는 한 번 git 연동을 해놓으면 상단 메뉴에서 아이콘 클릭을 통해 쉽게 Update Project(또는 Git> Pull), commit, push가 가능하다.


✏오늘 복습한 문제 및 느낀점

  • 이번주와 저번주는 새로운 챕터의 과제들을 수행하느라 2챕터의 피드백이 올라온 줄도 몰랐다. 서둘러 이번 챕터 과제들을 마무리하고 주신 피드백을 좀 봤는데, git에 대한 이야기도 있었다. git에 대해서는 사실 수업이 시작된 초반부부터 특강이 있었는데, 과제를 우선하다보니 필요한 부분을 맨날.. 찾아서..ㅎㅎ 쓰고.. 또 2챕터 팀과제 때 깃에서 허둥거리느라 팀원들에게 미안했던 기억이 떠올라서.. 다음주에 도래할 새 팀프로젝트를 위해 날을 잡아 제대로 git에 대한 정리를 해보았다. 철저히 내가 기억하기 좋고 당장 실용적인... 실용적이겠지? 실용적인 기준으로 작성했다!!

  • 개인프로젝트를 개인 github에 올리는 것은 아무래도 과감하게..ㅎ 사용해볼수도 있고, 문제가 생겨도 혼자의 힘으로 수습할 수 있어서, 원하는 브랜치로 변경하여 올리고 기본 브랜치를 원하는 것으로 설정하는 수준까지는 이제 할 수 있는데,

  • 팀프로젝트로 git을 사용하는 건 혼자서 해보기 어려우니까.. 좀 방치하고 있었다가, 오늘 정리를 하면서 저번에 헷갈렸던 부분을 최대한 정리해보았다.

  • 뭐가 제일 헷갈렸나면, 내가 작성 중인 브랜치를 어디 브랜치에 올려서 Pull request하는지? 내가 작성중인 branch에 뭘 pull 해와야 할지?가 많이 헷갈렸었는데, 오늘 정리해보니까. 일단. 클론해오고, 내 브랜치 만들기. 그 브랜치에 코드 작성하기. 다 했으면 내 브랜치에 한번 올리기. 바로 pull request하지말고 dev에 올려진 팀원들 코드 pull하거나 update해서 충돌확인하기. 그리고 문제가 있다면 수정 후 다시 내!브랜치에 올리고 Pull Request 요청하기.가 맞는 것 같다. 이런 과정 중에서 내 로컬 안드로이드 스튜디오에 dev브랜치를 만들어서 이 브랜치에 팀원들에 dev코드를 따로! 저장할 수도 있는 것이다! (물론 main도. 굳이 dev가 아닌 그 어떤 브랜치라도!)
    => 요약하자면? pull 브랜치명 하면, 그 브랜치를 pull 해오는 것이고! push 브랜치명 하면 그 브랜치명에 push하는 거니까.. 그리고 내가 지금 무슨 branch에 작성 중인지 알고싶으면 터미널에 (브랜치명)으로 알려주지만.. git branch를 통해서도 알 수 있는 것이다.

  • 이 점을 명시하고 다음주에 실전에서 부디 생각한대로 잘 먹혀서 팀원들과 원할한 협업이 되었으면 좋겠다.!

profile
파이팅!

0개의 댓글