Section 1 - 9일차

노태경·2021년 4월 15일
0

SEB-Section 1

목록 보기
10/30

1. CLI 명령어

  • drwxr-xr-x
    d는 디렉토리 폴더 의미
    rwxr-xr-x
    r은 read로 읽기 권한
    w는 write로 쓰기 권한
    x는 execute로 실행권한
    -는 권한 없음
    rwx r-x r-x로 나눌 수 있음
    [파일 및 폴더를 소유하고 있는 유저가 가지는 접근 권한][그룹][다른 유저]
    소유하고 있는 유저 - rwx - 읽고 쓰고 실행의 권한을 가짐
    r-x - 읽고, 실행하는 권한만 가지며 쓰기의 권한은 없음

  • -r, -f 명령어 옵션
    -r은 recursive로 특정 행동을 순환적으로 반복, 폴더 삭제나 복사 등에 사용
    -f는 force로 어떤 행위를 강제, 보호되거나 존재하지 않는 파일도 강제로 삭제하므로 주의
    -rf와 같이 합친 형태로 사용할 수 있음

  • cat 대신 사용할 수 있는 명령어
    cat은 파일의 전체를 읽어오기 때문에 비효율적, 내용이 짤린다
    파일 내용의 일부만 열람할 수 있는 명령어 head, tail, more, less

    • head :
      head[ -n lines | -c bytes][file ...]
      head 파일명 : 아무 옵션없이 사용하면 앞에서부터 10행까지만의 내용을 보여준다
      head -n 100 : 앞에서부터 100행까지의 내용을 보여준다, -n은 생략가능하며 head -100과 같이 사용해도 된다.
      head -c 100 : 100byte만큼의 내용을 보여준다
      출력되는 파일의 내용을 파일로 출력하려면
      head -100 파일명 > 저장 파일명 으로 사용하면 파일 입출력이 가능하다
      head 명령어는 위에서 부터 읽어오기 때문에 파일의 앞부분, 윗부분을 활용할 때 사용하면 좋을 듯하다.

    • tail: head와 같이 -c -n 옵션은 동일, 해당 행부터 마지막 행까지 내용 출력
      tail 파일명 옵션없이 사용할 경우, 디폴트값인 마지막 10개 행을 출력
      tail -n 20 파일명 뒤에서 20번쨰 행부터 마지막 행까지 출력
      tail +20 파일명 20행부터 마지막 행까지 출력
      tail -c 200 파일명 byte기준
      tail -f 파일명 오류나 파일 로그를 실시간으로 모니터링 할 경우에 -f 옵션을 사용한다. 마지막 행으로부터 10줄을 출력하며, 종료되지 않은채 표준입력을 읽어들여 출력한다

    • more : 파일을 위에서부터 읽어내려와, 화면 단위로 끊어서 출력한다. 지나간 내용은 볼 수 없다.
      more 파일명 왼쪽 하단에 출력된 내용이 전체의 몇 %인지 표시하며, Enter키는 한줄씩, Space bar는 한 화면씩 출력된다.
      more -n 파일명 입력한 값만큼 끊어서 화면에 출력한다
      more +n 파일명 n에 입력한 행부터 화면에 출력

    • less : more와 비슷하게 동작하지만, less는 한 번에 보여지는 만큼만 읽어서 출력, Enter키는 한줄씩 출력, Space bar는 한 화면씩 출력하며, 방향키로 페이지 이동이 가능하다.

    • cat sample.txt | less 와 같이 파이프(|)를 사용하여 사용하기도 함

  • -h -help 도움말

2. Git

  • 버전 관리 시스템의 필요성

    • 여러 사람이 같은 파일로 동시에 작업하거나, 이전 상태로 다시 되돌려야 할 경우
  • 버전 관리를 사용하는 이유

    • 파일이 변경되면 변경 이력을 저장할 수 있다.
    • 이전 버전으로 돌아갈 수 있다.
    • 어떤 변경 사항이 발생했는지 알아보기 쉽다.
    • 협업하기에 좋다.
    • 백업용
  • Git은 개발자의 코드를 효율적으로 관리하기 위해서 개발된 '분산형 버전 관리 시스템'

  • 특정 시점에 생성된 백업 복사본을 스냅샷이라고 하며, 스냅샷을 만들어 주는 작업을 commit이라고 한다.

  • 소스 코드가 변경된 이력을 쉽게 확인할 수 있고, 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 되돌아갈 수도 있다.

  • Git vs Github

    • Git은 소스 코드 기록을 관리하고 추적할 수 있는 버전 관리 시스템
    • Github은 Git Repository를 관리할 수 있는 클라우드 기반 서비스
    • Git으로 버전을 관리하는 폴더에 대해서 Github을 통해 여러 사람들이 공유하고 접근할 수 있는 것
  • Github에서 Code Review 등을 통해 협업이 가능하고, 수많은 오픈 소스 프로젝트들이 Github로 부터 호스팅되고 있어, 누구든 자유롭게 기여할 수 있다.

  • Git repository

    • Remote Repository : 원격 온라인 서버 상의 저장소, 여러 사람이 함께 공유 가능
    • Local Repository : 내 컴퓨터의 저장소, 내 개인 전용 저장소
  • 타 원격 저장소에서 내 원격 저장소로 가지고 오는 작업을 Fork라고 한다

  • Remote repository에서 내 컴퓨터로 가져오는 과정을 Clone 이라고 한다

  • 소스코드 변경 작업이 완료하면 변경된 내용을 commit을 통해 저장

  • 저장한 것을 다시 Remote repository에 올려주는 작업을 Push라고 한다

  • Push를 완료하면 Pull request라는 기능을 통해, 내가 제안한 코드 변경 사항에 대한 반영 여부를 요청할 수 있다

  • 반대로 Remote repository에 변경 사항을 Local repository로 가져오는 Pull 작업

  • 작업한 파일을 git 관리 하에 있는 상태로 올려줄 수있고, 이 영역을 staging area라고 한다

  • staging area에 있는 파일을 staged된 파일, 들어오지 않은 파일은 unstaged file이라고 한다

  • staging area에 들어온 파일은 commit이 가능하다

  • git add 명령어를 통해 untracked files(unstaged)을 commit 할 수 있는 상태로 만든다

  • restore 변경사항을 폐기

  • Tracked area

    • Unmodified : 기존 commit을 수정하지 않은 상태
    • Modified : 기존에 commit했던 파일을 수정한 상태
    • Staged : commit 가능한 상태, commit을 위해서는 add 해야한다.
  • Local repository에 commit한 것을 취소 reset

  • Local repository에 commit 된것을 push 하기위해
    git push origin branch, git push origin main, git push pair dev 등 상황에 따라 사용가능

  • git push origin branch : remote에 orgin의 master 브랜치에 push

  • git log : commit된 내용 확인

  • Pull Request : Remote Repository에 push해 놓은 내용을 다른 사람들에게 알리는 것, PR이라고 부름

  • git init : 디렉토리를 Git Repository로 변환하거나 새로운 Repository를 초기화하는데 사용

  • git remote add orgitn <Repository 주소>

정리

  • contribute하고싶은 Remote Repository를 Fork해서 나의 Remote Repository에 복사해온다.
  • 나의 Remote Repository에서 Clone하여 Local Repository로 가져온다.
  • 작업 후 add하여 Stating 상태를 만든 후, commit을 하고, 나의 Remote Repository에 push한다.
  • (협업) 협업(페어)하는 Repositroy에서 pull을 통해 나의 Local Repository에 가져와서 작업을 하고 push로 나의 Remote Repository에 commit한다.
  • 처음 접해보는 용어들이 많고 아직 직접해보지 않아 헷갈리지만 전체적인 흐름은 이러한 것 같다.
profile
개발자 공부 일기😉

0개의 댓글