공부

프로젝트를 위한 협업: Github

글로벌디노 2024. 12. 16. 21:38

Shell이란

운영체제의 커널과 사용자를 이어주는 소프트웨어

Shell Command

  • ls (list segments) : 현재 디렉토리의 파일 및 디렉토리 목록 표시
    • ls -l: 파일 및 디렉토리에 대한 자세한 정보를 표시
    • ls -a: 숨겨진 파일 및 디렉토리까지 표시
  • cd (change directory) : 디렉토리 이동
    • cd .. : 상위 디렉토리로 이동
    • cd / : 루트 디렉토리로 이동
    • cd ~ : 홈 디렉토리로 이동
    • cd - : 이전 디렉토리로 이동
    • cd Documents : Documents 폴더로 이동
  • mkdir (make directory) : 디렉토리 생성
    • mkdir [옵션] [디렉토리명]
    • mkdir -p : 중간에 없는 디렉토리까지 한 번에 생성
    • mkdir dev : dev 디렉토리 생성
  • pwd (print working directory) : 현재 작업중인 디렉토리 절대경로 표시
  • touch : 빈 파일 생성 또는 파일 타임스탬프 업데이트
    • touch newfile.md : newfile.md 파일 생성
  • mv (move) : 파일 또는 디렉토리 이동/이름 변경
    • mv [옵션] [원본 파일/디렉토리] [대상 파일/디렉토리]
    • mv newfile.md temp/ : newfile.md 파일을 temp 디렉토리로 이동
  • cp (copy) : 파일 또는 디렉토리 복사
    • cp [옵션] [원본 파일/디렉토리] [대상 파일/디렉토리]
    • cp -r : 디렉토리 및 하위 내용까지 재귀적으로 복사
  • rm (remove) : 파일 또는 디렉토리 삭제
    • rm [옵션] [파일 또는 디렉토리]
    • rm -f : 강제 삭제 (삭제 확인 메시지 없음)
    • rm -r : 디렉토리 및 하위 내용까지 재귀적으로 삭제
  • cat : 파일의 내용을 표준 출력(일반적으로 터미널 화면)으로 출력하는 데 사용
    • cat [파일명]
    • cat myfile.txt

Vim Command

  • normal mode

    • i: insert mode 로 진입
    • ESC: back to normal mode
  • insert mode

    • :q - quit
    • :q! - quit not write(save)
    • :w - write (save)
    • :wq - write and quit
    • :{num} - go to {num}th line

Markdown Quick Start

주석

<!-- 주석 -->

# heading text

h1 #
h2 ##
h3 ###
h4 ####
h5 #####
h6 ######

<p> 문단 </p>

안녕하세요
문장 끝에 스페이스 두번은 줄바꿈<br>

순서가 없는 아이템

  • item 1
  • item 2
    • item 2-1
    • item 2-2
      • item 2-2-1
    • item 2-3
  • item 3

순서가 있는 아이템

  1. order 1
  2. order 2
    1. order 2-1
    2. order 2-2
  3. order 3
    • item 3-1
    • item 3-2

하이퍼텍스트

[google](https://www.google.com/)

google

이미지

![alt text](img src)

강조표기

_italic_, **bold**, ~~취소선~~, `mono`

코드블록

```[python] code```

python

print('hello')

cpp

#include <iostream>

int main()
{
    std::cout << "Hello" << std::endl
    return 0;
}

설정

git config --global user.name "{username}"
git config --global user.email "{email}"
git config --global core.editor "vim"
git config --global core.pager "cat"

git config --list

수정이 필요할 경우, vim ~/.gitconfig 에서 값 수정

빠른시작

  1. git clone {username/repo-addr}
  2. cd {repo-addr}
    • 방금 복제한 저장소 디렉토리로 이동
    • cd TIL/
  3. vim README.md
    • vim 편집기로 README.md 파일 오픈
    • README.md 파일은 저장소에 대한 설명을 담고 있는 파일로, 일반적으로 저장소의 목적, 사용 방법 등을 작성한다
  4. git status
    • 현재 저장소의 상태 확인
    • 수정된 파일, 새로 추가된 파일, 삭제된 파일 등의 정보를 보여준다
    • README.md 파일을 수정했으면 git status 명령어 실행시 파일이 수정된 것으로 표시된다
  5. git add README.md
    • 스테이징 영역에 있는 변경 사항을 커밋
    • 스테이징 영역은 다음 커밋에 포함될 변경 사항을 준비하는 공간
  6. git commit
    • 스테이징 영역에 있는 변경 사항을 커밋
    • 커밋은 변경 사항을 저장소에 기록하는 작업이다
    • git commit 명령어 실행시 커밋 메시지를 입력하라는 창이 나온다. 변경 사항에 대한 설명을 작성한다
    • -m 옵션을 사용하여 커밋 메시지를 바로 입력할 수 있지만..
  7. git push origin main
    • 로컬 저장소의 변경 사항을 원격 저장소(origin)의 main 브랜치에 업로드
    • origin은 원격 저장소의 기본 이름이며, main은 기본 브랜치 이름 (경우에 따라 다를 수 있음)

Conventional Commits

https://www.conventionalcommits.org/ko/v1.0.0/

Conventional Commits는 커밋 메시지를 작성하기 위한 규칙입니다. 일관된 커밋 히스토리를 만들어 프로젝트 협업 및 관리를 용이하게 하는 것이 목표입니다.

주요 특징

  • 구조화된 메시지: 커밋 메시지는 유형, 범위, 제목, 본문, 꼬리말로 구성됩니다.
  • 명확한 유형: 변경 사항의 유형을 명확히 나타내는 키워드를 사용합니다 (예: feat, fix).
  • 간결한 제목: 커밋의 주요 내용을 50자 이내로 요약합니다.

구조

<type>(<scope>): <subject>

<body>

<footer>
  • type: 커밋 유형 (필수)
    • feat: 새로운 기능 추가
    • fix: 버그 수정
    • docs: 문서 수정
    • build: 빌드 작업 관련
    • ci: Continuous Integration 관련
    • style: 코드 스타일 수정 (코드 동작에 영향을 주지 않음)
    • refactor: 코드 리팩토링
    • test: 테스트 추가 또는 수정
    • chore: 빌드 작업, 패키지 매니저 설정 등 (코드 생산과 직접 관련 없음)
    • conf: 환경설정 관련
  • scope: 변경 사항이 적용되는 범위 (선택 사항)
  • subject: 커밋 제목 (필수) - 50자 이내, 명령형으로 작성
  • body: 커밋에 대한 자세한 설명 (선택 사항) - 72자마다 줄 바꿈
  • footer: 관련 이슈 번호, breaking change 등 추가 정보 (선택 사항)

장점

  • 가독성 향상: 일관된 형식으로 커밋 히스토리를 쉽게 파악할 수 있습니다.
  • 자동화: 커밋 메시지를 분석하여 자동으로 버전 번호를 생성하거나 릴리스 노트를 작성할 수 있습니다.
  • 협업 개선: 명확한 커밋 메시지는 팀원 간의 코드 이해도를 높여 협업을 원활하게 합니다.

git을 쓰면서 습관들이면 안되는 것들

  • $ git add . : 현재 디렉토리 하위의 모든 파일을 staging할 때 사용. but, 현재 commit단위에 들어가면 안되는 파일까지 휩쓸릴 수 있으므로 습관적으로 사용하면 안됩니다.
  • $ git commit -m "Message" : 쉘에서 바로 메시지를 쓰면서 커밋할 때 사용. but, revert commit, merge commit 등의 상황에서 메시지를 덮어쓸 우려가 있으므로 습관적으로 사용하면 안됩니다.
  • 저장소 안에 저장소 clone 하기 : 프로젝트 단위는 항상 독립적으로 존재해야 합니다. clone 전 항상 현재 작업위치가 dev 디렉토리인지 확인 후 사용!!
  • 의미없는 commit message 남기기(ex. a, 1, ..) : commit message는 제목만으로 해당 작업단위에 대한 설명이 가능해야 나중에 고생하지 않습니다. Conventional commit 잘 지키기!!

브랜치 확인

  • git branch
  • 현재 작업중인 브랜치 앞에 *표시되어 보인다
  • -a 옵션: 로컬 및 원격 브랜치 모두 확인 (git branch -a)
  • -r 옵션: 원격 브랜치만 확인

브랜치 생성

  • git branch <브랜치 이름>
  • ex) git branch origin/sample

브랜치 변경

  • git switch <브랜치 이름>

로컬 브랜치 삭제

  • git branch -d <브랜치 이름>: 병합된 브랜치 삭제

    • 해당 브랜치가 현재 브랜치에 병합된 경우에만 삭제된다
    • 병합되지 않은경우, 에러메시지와 함께 삭제가 거부된다
  • git branch -D <브랜치 이름>: 병합 여부와 관계없이 강제 삭제

    • 주의: 복구 불가능
반응형

'공부' 카테고리의 다른 글

딥러닝 Deep Learning  (0) 2025.02.11
버전관리 - Git, Github 이론  (0) 2024.12.12
복습 목차  (0) 2024.12.12
HTTP의 특성  (0) 2024.12.12
웹 서버와 웹 어플리케이션 서버  (0) 2024.12.12