Git (1) Git for windows 설치, Kernel, Shell 개념

K Choi·2022년 7월 11일

Github

목록 보기
1/3
post-thumbnail

이번에 첫 해커톤을 나갔는데

개인 프로젝트를 진행해본 게 전부라
깃에 대한 이해가 매우 부족한 상태라는 걸 뼈저리게 느꼈다ㅠㅠ
2박 3일 간의 해커톤 기간 동안 밤새가며
깃헙을 활용한 협업에 필요한 것들을 구글링해가면서 꾸역꾸역
해나갔지만 정말 벅찬 과정이었다ㅜㅜㅜㅜ
암튼 그래서 Git 강의 찾아 듣는 중..!

강의 전 QnA

  1. 뭔가가 될 때 '이게 왜 되지?', 안 될 땐 '이게 왜 안 되지?' 하는 느낌
    -> 이런 걸 해소하려면 많은 사람들의 코드 보면서, 컴파일러가 어떻게 동작하는지 보며 해소, 기본에 충실하기

  2. 프론트엔드 개발자: html/css/js,ts

  3. 개발자의 기본 능력: computational thinking(컴퓨팅적 사고능력)
    변수, 확률에 기반한 사고 연습(?)

  • 프엔 쪽 기술 계속해서 나오고 있음 cf. 구글 io
  • 기본기(html/css/js) 다져놓고 새로 나오는 것들 빠르게 흡수해야! 평생 공부
  1. 신입 뽑을 때 가장 중요하게 생각하는 부분? 원하는 신입개발자의 상?
    computational thinking(컴퓨팅적 사고능력), 논리적으로 사고할 수 있는 사람
    화이트보드 코테: 화이트보드에 간단한 알고리즘 작성하게 한 후 이를 심화하는 방식으로 코드인터뷰

  2. 피해야 할 회사?

  • 모든 걸 만족시키는 이상적 회사는 존재하지X, 인내할 수 수준이면 바로 취업해 경력 쌓고 이직하는 거 추천
  • 하지만 회사에 배울 사람이 없다는 건 좋지X, 인터뷰 때 뭔가 허술하다 느껴진다면 피하기
    보통 실무인터뷰는 실무자보단 중간관리자/CTO가 진행: 질문내용, 역질문했을 때 단서 얻을 수ㅇ

학습목표

  • git 사용 위해 CLI Shell command와 Vim editor 다루기
  • 코드 관리를 위한 git의 정확한 사용법 이해
  • git 저장소 개념 이해, 원격 vs 로컬 저장소 서비스의 차이 인식
  • git 사용하면서 발생하는 다양한 상황에 대한 해결 능력 키우기
  • (conventional한, 보편적) commit의 작성법 이해, 이를 활용해 commit 작성
  • hexo 활용해 github pages에 blog 생성하고 포스트 작성, deploy(배포)
  • git의 branch model 활용해 소스코드 독립적 관리, branch를 실무에서 어떻게 잘 사용할 수 있을까?
  • git의 다양한 branch 전략 이해, 널리 사용되는 git flow(어플리케이션 개발 프로젝트에서 많이 사용) 전략을 활용해 프로젝트 수행(개인 플젝, 팀 플젝)
  • github projects와 issue로 프로젝트 이슈 관리
  • git으로 타인과 협업하며 다른 프로젝트에 기여

1. 개발 도구 설치

  1. git for windows
    -> git 공식페이지에서 설치할 수도 있는데 설치 과정 까다로움
    git for windows에서 설치하면 나중에 쓰게 될 몇몇 도구들(ex. git flow) 미리 설치됨

      - 설치 진행시 그냥 계속 Next 눌러주면 됨
  2. Git Bash 열기

      - 마우스 우클릭 -> '관리자 권한으로 실행': 좀더 자유롭게 Git Bash 사용 가능

'Programming의 절반은 Hello World': 'Hello World'라는 string 출력하기 위해 하는 환경설정 매우 중요, 환경 설정 제대로 하지 않고 대충 하면 나중에 문제 생길 수 ㅇ

Git Bash

  • 정품, Git for Windows 모두 embedded shell이라 불림

Embedded Shell

Windows의 Powershell, Windows Prompt, MacOS의 terminal과 달리 특정 용도를 갖고 있음(제한적 용도 가짐)

2. UNIX 역사

  • 1965년 AT&T(미국 통신 회사) Bell 연구소에서 PDP-7라는 컴퓨터를 바탕으로 UNIX라는 OS 개발
  • 1973년 C 개발 by Dennis Ritchie & Ken Thompson, C언어 기반으로 UNIX 재작성
  • AT&T(사기업)의 제품 => 저작권 문제 등 불거짐 -> GNU 프로젝트(리차드 스톨먼)
    GNU: GNU is Not Unix

  • 많은 솦웨들이 GNU 프로젝트에 동참 -> 자유 솦웨 운동 결과: 리브레 오피스, vim 등 but 문제: GNU 프로젝트에는 커널이 없음
    Kernel: 하드웨어와 응용프로그램을 이어주는 운영체제의 핵심 시스템소프트웨어

LINUX

  • Linus Torvalds가 kernel 만듦: Linux (OS kernel의 이름) 발표
    cf. 0.1 version 배포 당시: bash(GNU Bourne Again SHell), gcc(UNIX 기반 C 컴파일러) 두 어플리케이션 들어 있었음
  • Linus Torvalds가 작성한 kernel 혹은 GNU 프로젝트의 라이브러리와 도구가 포함된 운영 체제
  • 여러 배포판 존재해 여러 하드웨어 기반으로 동작 cf. Android, Ubuntu, Redhat, Debian 등

3. Shell

  • kernel에 사용자의 명령을 전달, 즉 운영체제의 kernel과 사용자를 이어주는 SW
    cf. kernel: 하드웨어와 어플리케이션의 중간다리 역할
  • 파일 설치, 복사, 위치 이동, 삭제

  • sh(Bourne Shell): AT&T Bell 연구소의 Steve Bourne이 작성한 유닉스 쉘
  • bash(Bourne Again Shell): Brian Fox가 작성한 유닉스 쉘
    • 다양한 운영체제에서 기본 쉘로 채택
  • zsh: Paul Falstad가 작성한 유닉스 쉘
    • sh 확장형 쉘
    • 현재까지 가장 완벽한 쉘(테마 지정, 컬러 표현 보다 쉽게 지원)
      cf. 현재 macOS는 zsh 사용

  • CLI(Command Line Interface) 기반의 Shell
  • GUI 기반 Shell(macOS: Finder, windows: windows 탐색기)
    -> 이걸 CLI 기반 Shell과 mapping(차이점&공통점)하며 생각해보기(프로그래밍 언어 공부할 때도 마찬가지)

QnA

  1. 사용하던 Git 삭제하고 다시 설치해도 문제 X

기타

  • 마이크로소프트도 앞으론 Typescript 사용하게 될 것 같다.

다음 포스트에 bash에 대해 더 자세히
profile
mbeCoder

0개의 댓글