[Management] Git/GitHub

heexohee ·2023년 5월 31일
0

Management

목록 보기
1/4

깃 정리 노션 페이지 링크1 - 유데미 강의 정리 및 실제 활용/작동 방식 위주
깃 정리 노션 페이지 링크2 - 개념 및 커맨드, 터미널 명령어, 참고자료 등

자주 쓰는 필수 커맨드

  1. git pull origin main 레포에 저장한거 내 로컬저장소로 가져오는 명령어
  2. git status 현재 상태 확인
  3. git add . (.앞에 띄어쓰기 해야함)
  4. git commit -m "커밋 할 멘트 추가"
  5. git push
  6. git stash
  7. git stash pop
  8. git remote -v
  9. git remote remove origin
  10. git branch

커맨드 모음 - (참고: git help tutorial)

  • clone     저장소를 복제해 새 디렉터리로 가져옵니다
  • init      빈 깃 저장소를 만들거나 기존 저장소를 다시 초기화합니다
    변경 사항에 대한 작업 (참고: git help everyday)
  • add       파일 내용을 인덱스에 추가합니다
  • mv        파일, 디렉터리, 심볼릭 링크를 옮기거나 이름을 바꿉니다
  • restore   Restore working tree files
  • rm        파일을 작업 폴더에서 제거하고 인덱스에서도 제거합니다
    커밋 내역과 상태 보기 (참고: git help revisions)
  • bisect    이진 탐색으로 버그를 만들어낸 커밋을 찾습니다
  • diff      커밋과 커밋 사이, 커밋과 작업 내용 사이 등의 바뀐 점을 봅니다
  • grep      패턴과 일치하는 줄을 표시합니다
  • log       커밋 기록을 표시합니다
  • show      여러가지 종류의 오브젝트를 표시합니다
  • status    작업 폴더 상태를 표시합니다

Git ?

  • 버전 관리 시스템, VCS → Version Control
  • Version control is software that tracks and manages changes to files over time.
  • 이전 버전의 파일을 다시 볼 수 있게 해주고 버전들 간의, 파일들 간의 변화를 비교하거나, 변화를 되돌리고, 다른 작업자와 그 변화를 공유하는 데 도움.

Git 시각화

  • Track changes across multiple files
  • Compare versions of a project
  • "Time travel" back to old versions
  • Revert to a previous version
  • Collaborate and share changes
  • Combine changes

GIT vs GITHUB

  • Git - 버전 관리 소프트웨어, 사람들의 컴에서 실행. 인터넷 없이도 실행되는 소프트웨어.

  • GitHub - 웹서비스 깃 저장소. 클라우드에 저장해서 사람들과 공동으로 작업할 수 있게 해줌. 인터넷도 필요.

  • git config --global user.name "heexohee” → 사용자 이름 설정

  • global 옵션을 사용하면 깃은 username또는 user.name을 인스턴스를 가져올 때마다 같은 이름으로 인식함.

  • git config --global user.email rsoy2918@naver.com → 사용자 이메일 설정(github이랑 같게)

17: 깃 크라켄 설치함(GUI)
18: 터미널? CUI ↔ GUI(그래픽 유저 인터페이스)

  • 터미널로 깃과 상호작용

터미널 명령어

  • open . finder열기

  • ls 다른 폴더 안 엿보기(리스트로)

  • pwd 경로 보기(내가 있는 위치를 정확하게)

  • cd 디렉토리를 이동하는 커맨드

  • cd .. 디렉토리 경로 뒤로 후진

  • touch 파일명.확장자 → 파일 생성 (띄어 쓰기 구분으로 여러개 동시에 생성도 가능)

  • touch 폴더명/폴더명/파일명. 확장자 → 다른 경로에 새 파일 생성도 가능.

  • mkdir → 디렉토리 만들기

Git repo?

  • 깃이 있다는 것은 활성화하거나 사용하고 있다는 뜻은 아니고 단지 컴퓨터에 깃이 설치되어 있다는 것
  • 깃에게 새로운 저장소를 생성하라고 지시해야함. 저장소는 그 프로젝트의 이력을 갖고 있는 깃 작업 공간.
  • 모든 저장소는 고유 이력을 갖고 있다.
  • 저장소는 서로 관련도 없고 연결되어 있지도 않다. 캡슐화된 거품?
  • 만약 깃을 사용하고 싶다면 각각의 프로젝트의 폴더에 가서 깃 저장소를 생성해야하고 깃에게 이것을 지시해야함.
  • 각 폴더에 무슨일이 생겼든, 어떤 깃 명령어를 실행하든, 깃으로 어떤 이력을 작성하든 완전히 별개의 것이고 각 폴더의 깃은 연결되지 않음.

깃 저장소를 생성하고 초기화 하는 방법?

  • git status → gives information on the current status of a git repository and its contents.

  • It's very useful, but at the moment we don't actually have any repos to check the status of!

  • 깃 사용 중이라면 명령을 실행했을 때 보게 되는 것은 변경사항.

  • fatal: (현재 폴더 또는 상위 폴더 중 일부가) 깃 저장소가 아닙니다: .git → 깃 저장소 정보가 없다는 뜻.

  • git init → 터미널에서 어느 디렉토리에 있든 새 저장소를 초기화 하고 생성함.

  • Use git init to create a new git repository.
    Before we can do anything git-related, we must initialize a repo first!
    This is something you do once per project.
    Initialize the repo in the top-level folder containing your project

Git 폴더

  • ls -a → 쓰면 숨겨진 파일(.git) 도 볼 수있다.
  • rm -rf .git → 프로젝트에 대한 모든 이력을 삭제함.
  • 만약 이력이 있는데 디렉토리를 삭제한다면 모든 자료를 잃어버림. 그래서 .git을 숨겨둠.

Git 실수!

  • 깃 저장소가 있을 때 한 디렉토리 안에서 초기화해야 함. 깃은 이 렉토리 안에 벌어지는 모든 것을 주시, 안에 있는 하위 디렉토리 까지 모두 지켜봄.
  • 그 폴더 안에 포함된 모든 것, 상위 레벨에서 제어하는 하향식(TOP-DOWN 방식)
  1. 어떤 프로젝트를 위해 이 디렉토리 안에서 변경하는 파일이나 폴더는 깃에 의해 추적됨.
  2. 현재 존재하고 있는 저장소 안에 다른 저장소를 초기화하고 싶지 않다는 것을 이해하는 것은 매우 중요→ DON’T INIT A REPO INSIDE OF A REPO! (Before running git init, use git status to verify that you are not currently inside of a repo.)
  3. 깃은 폴더 안에 벌어지는 모든 것을 추적하기 때문에 혼란스러울 것. (깃이 깃이 추적하는 형태가 되면 혼란스럽게 됨.)
  4. git init 명령어 실행할 때, 그 저장소 안에 있지 않도록 해야함! git status로 확인해줘라!
  5. 보통 어떤 프로젝트를 위해 폴더를 만들면, 그 폴더 안에서 깃을 초기화 하는 것이 원칙(권장)→ 대부분은 사람들은 한 프로젝트 당 한개의 저장소를 원하고 항상 git status를 실행함.
  6. 초기화하기전에 git status로 확인하기! (.git 제거해서 정리 가능)

커밋 워크 플로우 개요

  • 보통 하나의 깃 저장소에는 엄청나게 많은 커밋들이 있다.
  • 궁극적으로 이전 명령으로 돌아갈 수 있는 방법과 커밋을 되돌리는 방법, 이전 커밋에서 엿보는 방법 등.
  • 커밋하는 것이 파일을 저장하는 것과 같은 것이 아니다. 파일을 저장하는 것 이상으로 어떤 것을 구축한다는 생각.
  • 커밋하기 전에 먼저 수정해서 파일을 저장해야 함.
  • 변경사항을 만들면, 그것들을 묶어서 커밋할 수 있다.
  • 우리가 커밋에 포함시키고 싶은 특정 변경 사항을 호출하는 중간 단계가 있다. 선택적으로 커밋을 할 수 있게 해줌.
  • 예) 7개 파일을 변경했을 때, 변경사항을 그룹화하여 커밋할 수 있다.(이것이 중간 단계 커밋) 반복적으로 커밋하지 않고 대신 핀셋으로 뽑듯 몇가지를 선택해서 그 변경사항만을 커밋할 수 있다.
profile
미대출신 기획자입니다. 사용자가 진짜 필요한 솔루션을 찾아내겠습니다.

0개의 댓글