05의 개발 계발

[TIL] 230313 Git & Git hub 기초 본문

TIL

[TIL] 230313 Git & Git hub 기초

생각하는 코댕이 2023. 3. 14. 02:30
728x90

자, 남들은 모르겠고 내가 알아보게 써보자..!

 

오늘은 git hub 를 사용한 팀프로젝트 전, 특강을 통해 git의 개념과 정의, 사용법을 배웠다.

앞으로 TIL 학습목표를 통해 읽을 내용인지 아닌지를 구분토록하자!

 


TIL 학습목표

  • git 과 git hub 를 정의할 수 있다.
  • git 의 기본명령을 이해하고 목적에 맞게 사용할 수 있다.
  • git hub에 파일을 업로드(push) 할 수 있다.

<git이 없다면?!>

변경 내역 확인이 어렵다.  ↔ git은  히스토리 기록 기능이 있다.
작업을 되돌리기 어렵다.   ↔ git은  작업을 되돌리기 쉽다.
      협력하기 어렵다.         ↔ git은  협업이 가능하다.


<git의 탄생배경>
창시자 : Linus Torvalds → 수많은 코드들, 수많은 업데이트. 으아아! 변경내역 편하게 보자! → git 탄생

+α ☞  Linus Torvalds는 Linux를 개발한 프로그래머이다. 그래서 git 명령어 또한 Linux명령어가 기반이다.

 

<git의 정의>

git == version을 관리하는 Tool

여기서 version은 유의미한 변화[Create Update Delete]가 결과물로 나온 것을 의미

 

결국, 프로그램 개발 == 유의미한 변화(ver.)를 쌓아 프로그램을 만들어가는 것

<git의 특징>
Linux 명령어 기반의 깃 명령어 사용.
Linux 환경을 windows환경으로 바꿔 도와주는 Tool로는 소스트리가 있다.

하지만! 모든 Tool이 세세한 접근은 한계가 있듯, 소스트리도 접근의 한계와 사용 불가한 환경이 있다.
고로, 의존성을 줄이고 명령어를 익히는게 좋다!


<github의 정의>
github == 원격 저장소 호스팅 서비스

 

git은 "local(개인) 환경"에서 versions을 관리해준다면, github는 "web(공유) 환경"에서 versions을 관리해준다!

commits == versions(유의미한 변화)

"개발자들의 SNS"  / "퍼가요~" / "팔로우할게요~"

"잔디(commit) 심으러 가자..!!"


<Git이 관리하는 세 개의 공간>
작업 디렉터리 / 스테이지 / 저장소

  • 작업 디렉터리(.git이 들어있는 폴더)(로컬)
    : 버전 관리의 대상이 위치하는 공간
  • 스테이지(임시공간, 1회용)
    : 다음 버전이 될 후보가 올라가는 공간
  • 저장소(레파지토리)(로컬)
    : 버전이 만들어지고 관리되는 공간

(로컬 환경에서 이루어지는 과정)

작업 디렉터리   ▶    스테이지    ▶   저장소
                        add                 commit

<Git Bash>
(windows) 파일 우클릭 , Git Bash Here
해당 폴더경로로 들어가짐
(Linux) cd 폴더명
해당 폴더로 들어가짐

 

<Git 명령어> 유의사항 " " 띄어쓰기 주의!
git  깃 명령어 목록 보여줌
git config --global user.email "1234@email.com" : 이 사용자와 작업할꺼다

~ : 홈 디렉터리 (기본 명령어 경로를 의미)

 

pwd (print working directory) : 현재경로출력
ls (list)  : 현재 디렉터리(폴더)에 존재하는 파일 및 디렉터리(폴더)를 보여라
ls -al (list all) : 현재 디렉터리(폴더)에 존재하는, 숨김 파일 및 디렉터리(폴더)까지도 모두 리스트 형태로 보여라
cd <디렉터리(폴더) 이름> (chage directory) : 디렉터리로 이동  
cd .. : 상위 디렉터리로 이동
clear : 명령어 창을 깨끗하게 비워라
mkdir <디렉터리 이름> (make directory) :  <디렉터리 이름>의 비어있는 디렉터리(폴더)를 만들어라

*폴더명 띄어쓰기 자제! 띄어쓰기 인식은 \

ex) "폴더 명" == "폴더\명"

touch a.txt : 비어있는 a.txt를 만들어라
rm <파일명> (remove) : <파일명>을 가진  (폴더가 아닌) 파일을 지워라
vi <파일명> : <파일명>을 vi 편집기로 편집하겠다
┌“입력모드”로 전환해야 어떤 내용을 입력할 수 있습니다
│입력 모드로 전환하는 방법 : a 혹은 i를 입력
│입력한 내용을 저장하는 방법 : (입력 모드에서 빠져나온esc 뒤) == :w
│vi 편집기 닫기 == :q
│입력한 내용을 저장하고 (w), vi 편집기를 닫아라 (q) == :wq
└ 넘버인덱스 == :set nu (set number) ↔ :set nonu (set no number) 
*파일 저장할 때 “비어있는 한칸 띄고" 저장해주세요. 특히 윈도우! 
안 그러면 [↓ 아래의 에러가 발생할 수 있다 ↓]

warning: in the working copy of 'd.txt', LF will be replaced by CRLF the next time Git touches it




cat <파일명or파일경로> : <파일명>에 적힌 내용을 보여줘라

git init 로컬 저장소 만들기
git status 작업 디렉터리 상태 확인하기
git add a.txt == a.txt를 스테이지에 추가
git add . == 현재 경로에 있는 모든 파일을 스테이지에 추가
git commit == 첫줄 (제목) 띄우고 셋째줄부터 (내용)
esc 후 :wq == 저장하고 나와라
git commit -m "커밋내용" == 편집기 출입없이 내용만 커밋 
git commit -m "create e.txt" == 편집기 출입없이 제목만으로 커밋
git log == 지금까지 커밋한 기록을 보여줘라(최신순 내림차 배열)

▲=====push 전까지의 과정!======▲
로컬환경에서의 작업 끝 [작업디렉터리→스테이지→저장소]

(+) ctrl + c 로 강제종료

*실수로 y와 같은 무의미한 입력을 할 경우 아래와 같이 무한루프에 빠지게 된다면 강제종료를 하자.

y
y
y
y
y
y
y
y
...



깃 허브에서의 작업
▼=====push 부터의 과정!======▼
git push
git push -u origin main

git add . 전부 보내라
git add a.txt 얘만 보내라

1. 코드 상에서 유의미한 변화를 만들어냈으면 그때그때 commit (로컬 저장소)
2. 적당히 commit이 쌓였다면 깃허브에 push (웹 저장소)

레파지토리에 팀원들 추가 == 레파지토리에 push할 권한 부여

             settings → collaborators → add → people
*권장하는 방법은 아님!! why?!

*Pull requests + branch 를 활용하는 것이 정석.

git clone <원격저장소 url> : 원격 저장소를 내 컴퓨터로 복제해서 가지고 오기 → 명령을 입력한 경로에 저장

 

[ 내가 이해한 도식도 ]

                                      

작업 디렉터리(내 폴더)   ▶    스테이지(가상공간)    ▶   저장소(로컬)    ▶   원격저장소(web, github) 
                                      add                                  commit                      push

                          기록할것을 솎아내고         메모지에 써놨다가      본문에 옮겨적기!

 

git 명령어 사용 순서 참고 블로그 https://guco.tistory.com/11

 

728x90