Day_11 (Git & Github)

HD.Y·2023년 11월 13일
0

한화시스템 BEYOND SW

목록 보기
12/58
post-thumbnail

Git 과 Github 란 ❓

  • Git : 소스코드를 효과적으로 관리하기 위해 개발된 " 분산형 버전 관리 시스템 " 으로
       소스 코드가 변경된 이력을 쉽게 확인하는 것이 가능하고, 특정 시점에 저장된
       버전과 비교하거나 특정 시점으로 되돌아갈 수가 있다.
       또한, 내가 올리려는 파일이 다른사람이 편집한 내용과 충돌한다면 서버에
       업로드할 때 경고 메시지가 발생하기도 한다.
       즉, 쉽게 말해 내 컴퓨터에 설치되는프로그램으로 버전관리를 해주는 것이다.

  • Github : Git으로 관리하는 프로젝트를 업로드하거나 공유할 수 있는 웹 사이트를 말한다.


저장소란 무엇인가 ❓

  • 저장소 : 저장소는 말 그대로 파일이나 폴더를 저장해 두는 곳을 말한다.

  • Git 저장소 : 파일이 변경된 이력 별로 구분되어 저장된다. 비슷해보이는 파일이라도
            실제 내용의 일부 문구, 즉 한 글자라도 서로 다르면 다른 파일로 인식하기
            때문에 파일을 변경 사항 별로 구분해서 저장하는것이 가능하다.

  • 저장소의 종류
    1) 로컬 저장소 : 내 컴퓨터에 파일이 저장되는 개인 전용 저장소로, git 관련 파일이
            생성되어 있는 특정 폴더를 말한다.
    2) 원격 저장소 : 여러 사람이 함께 공유하기 위한 저장소로 파일이 원격 저장소 전용
            서버에서 관리된다. 대표적으로 "Github", "Backlog" 가 있다.

      ➡ 평소에는 내 컴퓨터의 로컬 저장소에서 작업하다가, 작업한 내용을 공개하고
        싶을 때에 원격 저장소에 업로드한다고 생각하면 된다. ( 원격 저장소에서 다른
        사람이 작업한 파일을 로컬 저장소로 가져오는 것 역시 가능하다.)


Git 실습하기

  • Git 프로그램 설치 (구글 검색)
  • 로컬 저장소 생성하기
    1) 원하는 위치에 새로운 폴더 생성
    2) 생성한 폴더로 이동
    3) 마우스 우클릭으로 Open Git Bash here 클릭 (보이지 않는다면 추가 옵션 표시 클릭)
    4) git init 명령어 입력 (폴더에 .git 폴더가 생긴다. / 안보일 시 : 숨긴 항목 표시)

    ➡ 만약, 로컬 저장소를 삭제하고 싶다면 .git 폴더를 삭제하면 된다.

  • 계정 설정 (사용자 등록)
    1) email 등록 : git config --global user.email "[깃허브 email ID]"
    2) 사용자 등록 : git config --global user.name "[깃허브 Name]"
    3) 설정 후 확인 : git config --list | grep user

  • 현재 상태 보기 : git status
    현재는 초기 상태라 아래와 같이 아무것도 없다고 뜬다.

  • 생성한 폴더에 새로운 파일( "test01.txt" )을 1개 생성한 후 상태 봐보기 ➡ 위와 같이 "test01.txt" 파일이 Untracked files로 출력되는 것을 볼 수 있다.

  • 생성한 파일을 스테이징 영역 으로 추가해본다 : git add [파일명]
    * 스테이징 영역 : 버전을 만들기 전에 데이터를 잠시 올려 놓는 곳으로,
              무대의 백스테이지라고 생각하면 된다. ➡ 위처럼 "Untracked files" 에서 "new file" 로 변경된 것을 볼 수 있다.

  • 만약 "test01.txt" 파일의 내용을 수정한 뒤 상태를 보면 어떻게 출력되는지 확인해보자. ➡ 위처럼 "test01.txt" 가 modified 됬다고 출력되는 것을 볼 수 있다.

  • 스테이징 영역에 추가한 파일을 다시 언스테이징 하는 방법 ( 3개 중 아무거나 가능 )
    1) git reset [파일명]
    2) git rm --cache [파일명]
    3) git restore --staged [파일명] ➡ 위처럼 스테이징 영역에 추가됬던 파일이 다시 언스테이징 된 것을 볼 수 있다.

  • "test01.txt" 파일을 다시 스테이징 영역에 추가한 뒤 로컬 저장소에 텍스트 파일 2개를 새로 생성한다.
    ➡ 현재 상태를 보면 아래와 같이 새로 생성한 파일 2개가 "Untracked files" 로
      추가된 것을 볼 수 있다.

  • 다음으로 스테이징 영역에 올라온 파일들을 버전으로 배포하기 위해서 commit 명령어를 사용한다.
    1) 파일 커밋 : git commit -m "[메시지]"
    2) 로그 보기 : git log
    3) 수정 내역 보기 : git log -p


    ➡ 커밋 시 주의 사항으로, 공유되면 안되는 파일을 커밋 시켰을때 "git rm" 명령어로       삭제했다가 다시 다른 파일을 커밋시킨다고 해도 수정 내역을 보면 기록이 남아 있기     때문에 잘못 올린 코드를 다른 사람이 다 볼 수 있다는 점이다.

    ➡ 따라서 중요한 파일을 절대 스테이징, 커밋하지 않기 위해 .gitignore 라는       
      파일을 생성해서 절대 올라가면 안되는 파일들의 목록을 작성해준다.

      * 구글에 gitignore 검색 시 (https://www.toptal.com/developers/gitignore) 사이트가
        있는데 여기에 기술 스택들을 입력해주면 자동으로 파일 목록을 생성해준다.
        생성해준 내용을 복사하여 .gitignore 파일에 붙여놓고, 그 외 추가적으로 올리지
        말아야 할 파일들을 추가해주면 된다.


  • 커밋 수행 후 여러 버전들이 생성되었을때 잘못된 버전이 생겨서 이전 버전으로 돌아가고 싶을때는 git reset [옵션] [커밋 ID] 를 사용한다.

    1) --hard 옵션 : 작업 디렉토리 변경, 스테이징 영역 변경, 저장소 변경
      ➡ 파일들이 해당 버전에 있던 상태로 전부 되돌아감

    2) --mixed 옵션 : 작업 디렉토리 유지, 스테이징 영역 변경, 저장소 변경

    3) --soft 옵션 : 작업 디렉토리 유지, 스테이지 영역 유지, 저장소 변경
      ➡ 현재 상태에서 새로운 파일 추가 후 스테이징 영역에 올렸다가 다시 이전
        커밋 버전으로 돌아갔을때, 현재 있던 파일들이 사라지지 않고 유지되어 있음.

      ➡ 위처럼 3번째 버전에서 2번째 버전으로 되돌아 오는 것을 볼 수 있다.

  • 원격 저장소 생성 및 설정 ✏️
    1) 깃허브에서 새로운 "repo" 생성하기 ( repo 명은 임의 지정 )
    2) 원격 저장소 설정 : git remote add origin [repo 주소]
    3) 원격 저장소에 공유 : git push -u origin master

  • 그 외 기타 명령어 ✏️
    1) 모든 커밋을 보고 싶을 때( 리셋 전 포함 ) : git log --all
    2) 로그를 깔끔하게 한 줄로 보고 싶을 때 : git log -oneline
    3) 작업 내역들을 보고 싶을 때 : git reflog
    4) 모든 파일을 한번에 스테이징 영역으로 추가하고 싶을 때 : git add .
    5) 로컬 저장소가 없는 상태에서 원격 저장소를 가져올 때 : git clone [깃 주소]
    6) 원격 저장소의 버전이 로컬 저장소보다 최신일때 ( ex : 로컬 저장소의 버전이 1이고,
      원격 저장소의 버전이 3 ) 로컬 저장소에서 깃허브로 업로드 시 오류가 뜬다.
      이때 강제로 업로드 하고 싶을 때 : git push -f origin master

  • 커밋 규칙 정하기 ✏️
    1) .gitmessage.txt 파일 생성 후 사용할 규칙을 작성한다.

    2) 커밋할때마다 해당 파일을 띄워준다.
       명령어 : git config --global commit.template .gitmessage.txt

    3) 커밋할때 git commit 명령어를 입력하면 사용할 규칙창이 띄워진다.

    ➡ 위처럼 규칙을 사전에 정해놓고, 커밋을 실시할때 체계적으로 제목 및 본문을           적는것이 나중에 되돌아갈때 해당 버전을 찾기가 좋다.

      수정, 추가 등을 할때 한번에 다 끝내고 1개의 커밋으로 실시하기 보다는 하나씩
      실시 후 여러개의 커밋을 실시하는 것이 좋은 것이다.


  • README.md 파일 작성하기 💻
    실무에서는 프로젝트를 가져가서 사용할 때 사용방법들을 적어 놓지만, 프로젝트 시에는 여러가지 프로젝트와 관련된 내용들을 적어 놓는다고 한다.

    1) 작성은 VSCode 를 설치하여 실시한다.
    2) 로컬 저장소에서 "마우스 우클릭" 으로 VSCode 로 열기를 클릭한다.
    3) README.md 파일에 쓰고 싶은 내용을 Markdown을 사용하여 작성한다.
      ➡ 작성법은 벨로그 작성법과 거의 동일하다고 보면 된다.


    4) VSCode 를 이용하여 파일을 작성 후 깃허브에 공유해보는 실습을 해보겠다.
      ➡ README.md 파일을 수정했으므로 스테이징 영역에 다시 추가 : git add .
      ➡ 커밋 실시 : git commit
      ➡ 깃허브로 업로드 : git push -u origin master


    5) github 들어가서 확인해보면 아래처럼 작성한 "README.md" 파일이 나타날 것이다.

오늘의 느낀점 👀

  • 오늘은 드디어 gitgithub 를 배워본 시간이었다. 이번주에 DB 설계 관련 첫 미니 프로젝트를 실시하는데 그 전에 여러가지 사용 규칙들과 "README.md" 파일 작성 등을 배워봤다.

  • 가장 중요한 것은 🔥커밋🔥 을 주기적으로 실시해 주는 것이라 생각한다. 그리고 "README.md" 파일을 처음에 잘 작성하여 프로젝트 전반에 대한 내용을 보기 좋게 꾸미는것 또한 중요하다고 생각한다.

  • 이제 곧 있으면 하나씩 프로젝트가 시작되는데, 그 첫번째인 DB 프로젝트부터 완성도 높은 설계를 해보고 싶은 욕심이 있다. 한번 최대한 머리를 굴려서 해 볼 예정이다🧐
profile
Backend Developer

0개의 댓글