공부/전자컴퓨터공학

Git & GitHub 란? Git 설치 및 기초 습득하기

AhJustC 2024. 5. 3. 14:27
반응형
Git이란?

Git은 Linux OS를 만든 리누스 토르발즈가 만든 일종의 프로그램이다. 리누스 토르발즈는 약 26년 동안 2천만 줄이 넘는 소스 코드를 1만명이 넘는 소프트웨어 엔지니어들과 함께 오픈 소스 방식으로 작성하며 Linux OS를 만들고 관리했다고 한다. 1만명이 소스 코드를 공유하며 많은 불편함을 겪었고 이러한 비효율적인 작업 환경을 해결하고자 Git을 만들었다. 2005년에 Git을 출시하며 "지옥에서 온 문서관리자"라고 소개했다는데 본인이 관리하며 경험했던 지옥을 해결하기 위해 버전관리, 백업, 그리고 협업과 관련된 기능등을 담았다고 핬다.

쉽게 말해 파일을 관리해주는 프로그램이며 관리는 다음을 의미한다.

  • 파일의 변경사항을 추적하며, 사용자가 각 파일의 버전을 관리할 수 있게 도와준다.
  • 파일을 백업할 수 있게 해준다.
  • 협업자들과 함께 파일을 공유하고, 각자의 작업물을 취합할 수 있게 해준다.
Git 과 GitHub

Git 자체는 로컬에서 버전을 관리해주는 프로그램을 의미한다. 다만 백업 기능 또는 협업을 위한 기능을 활용하려면 온라인 원격 저장소가 필요하며, 이러한 원격 저장소 기능을 제공해주는 서비스 중 하나가 Github 이다. 즉 Git이 설치되어있는 클라우드 저장소 라고 봐도 될 것 같다.

 

  • add, commit, push 는 온라인 원격 저장소에 업로드하는 과장
  • fork, clone은 협업자의 작업물을 내 로컬에 다운로드 하는 과정
  • pull request 상대 협업자에게 나의 작업 완성물을 취합해 달라고 요청하는 과정
  • merge 상대방의 작업물과 나의 작업물을 취합하는 과정
Git 설치하기

아래 링크에서 Git을 설치한다. 설치과정은 따로 올리지 않겠다. 선택 옵션이 많은데 뭐가 뭔지 모르겠어서 그냥 강의 따라 다운 받았다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 

반응형
 

Git for Windows

Git for Windows focuses on offering a lightweight, native set of tools that bring the full feature set of the Git SCM to Windows while providing appropriate user interfaces for experienced Git users and novices alike. Git BASH Git for Windows provides a BA

gitforwindows.org

설치가 완료되면 다음과 같은 파일이 생성되고 실행시킨 후 git 명령을 내려보자.

뭔지는 모르겠지만 일단 설치는 잘된 것 같다.

 

Git 사용자정보 입력

Git을 설치 후 사용자 이름과 이메일 주소를 설정한다. 가입을 위해 Github에 먼저 가입했다.

에디터 변경

git 커밋 메세지를 기록할 때 텍스트 에디터가 열리는데 기본값으로 vi가 열린다고 한다. vi에 익숙하지 않다면 nano로 변경하는 편이 좋다고 한다.

 

입력이 잘 되었는지 확인하려면 cat 명령어를 사용하여 확인해보자.

 

 

Git의 영역과 기본 명령어 실습

Git의 주요 기능은 버전관리, 백업, 협업이다. 즉 Git을 통해 로컬에서 파일의 버전을 관리할 수 있으며, 파일을 온라인으로 업로드 하면 협업 및 백업 기능을 활용할 수 있다. Git의 각 영역은 크게 온라인과 로컬로 나뉜다.

  • 온라인: Remote repository(원격 저장소)
  • 로컬: Work space(작업 공간), Staging area(스테이징 영역), Local repository(지역 저장소)
1. 실습 디렉토리 및 파일 생성

git_practice 라는 이름의 디렉토리를 만들고 해당 디렉토리에 hello_git 이라는 이름의 텍스트 파일을 생성해보자.

확실히 눈으로 보는것과 손으로 써보는건 큰 차이가 있는 것 같다.

리스트를 뽑아보니 git_practice 폴더 안에 hello_git.txt가 있고, txt 내용은 hello world! 가 적혀있다.

2. Git 으로 파일 관리 시작. git init 명령어로 초기화

git init 명령을 통해 초기화 후 ls -al 명령어를 입력하였다.

ls -al 명령어를 통해 .git 디렉토리가 생성됨을 확인하였다.

3. 파일 상태 확인하기

Git으로 관리되고 있는 파일들의 상태는 git status 명령어로 확인할 수 있다.

 

요즘은 master 라는 단어가 인종차별적 단어라고 main으로 쓰는 추세라고 하여 바꿨다.

에러가 계속 나서 Chat GPT에 물어보면서 했는데 해결이 되었다...! GPT 대단쓰

git status 명령어로 확인한 정보를 정리하자면 아래와 같다.

  • One branch main
    현재 브랜치는 main 브랜치이다.
  • No commits yet
    아직 커밋을 하지 않았다.
  • Untracked files:~
    Untracked files 는 Git 관리하에 있는 파일이 가질 수 있는 상태중 하나이다.
  • (use " git add <file>..." to include in whaat will be committed)
    git add 파일이름 을 입력하면 커밋될 것들에 해당 파일을 포함시킬 수 있다.
  • nothing add to commit vut untracked files present (use "git add" to track)
    아직 add된 파일들이 없으며 untracked 상태의 파일이 존재하니 git add 명령어를 사용해라

해당 내용에 대하여 상세히 알아보도록 하자.

파일의 상태

Git 관리하에 있는 파일들의 상태는 크게 Tracked와 Untracked로 나뉘며 Tracked는 다시 Unmodified, Modified, Staged로 나뉜다.

Untracked는 Git에 의해 파일의 상태가 추적되고 있지 않은 상태를 의미하며, Tracked는 파일의 상태가 추적되고 있음을 의미한다. Untracked 상태의 파일은 Commit 과정을 거치면 Tracked 상태로 바뀐다.

Tracked 의 세부 상태에는 파일의 수정이 Git에 의해 감지되지 않은 상태인 Unmodified, 파일의 수정이 Git에 의해 감지된 상태인 Modified, 파일이 Staging area에 존재하는 Staged 상태가 있다.

 

Staging area

Staging area란 Local repository에 저장할 파일들이 임시로 대기하는 영역이다. 일반적으로 Git을 활용하여 작업할 때에는 Work space에서 작읍을 마친 파일을 Staging area로 옮겨서 모아두고, 추후 어느 정도의 단위작업이 끝나면 Staging area에 모인 파일들을 한번에 Local repository에 저장한다.

git add 명령어를 사용하면 Staging area로 파일을 이동시킬 수 있다.

 

4. Staging area로 파일을 이동시키기

git add 파일이름 명령어를 사용하면 파일이 Staging area로 이동한다. 파일을 스테이징한다 라고 표현하기도 한다.

디렉토리의 모든 파일을 스테이징할 때에는 git add. 을 입력하면 된다고 한다 다만 실수로 민감한 자료까지 노출될 가능성이 있어 가능하면 쓰지말라고 한다.

텍스트 파일을 스테이징 해보고 상태를 봐보자.

변경된 내용만 확인해보자면 다음과 같다.

  • Change to be committed: ~
    변화가 감지 되었으며 파일들을 commit 할 수 있음을 의미한다.
  • (use :git rm --cached <file>..." to unstage)
    git rm --cached 파일이름 명령어를 사용하면 생성한 스테이징 파일을 다시 Work space로 되돌릴 수 있다.
  • new file: hello_git.txt
    git이 hello_git.txt 라는 새로운 파일을 감지하였다. 물론 commit을 하지 않았으니 아직 untracked 상태이다.
5. Local repository에 commit하기

Commit이란 Local repository에 파일을 저장하는 행위를 가리키며 저장과 동시에 파일의 버전을 기록한다.

git commit -m "First commit" 명령어를 작성해보자.

로그인 정보가 없어 에러가 떴는데 메일과 닉네임을 적고 다시 commit하니 정상적으로 된 듯 하다. 챗 GPT 최고..!

위의 내용을 정리하자면.

  • [main (root-commit) 7488a4a] first commit
    커밋을 실시한 브랜치(main)와 커밋 해시의 앞부분 (7488a4a), 그리고 커밋 메시지가 보인다.
    커밋 해시는 각 버전에 부여되는 고유 번호와도 같다.
  • 1 file changed, 1 insertion(+)
    변경된 내용을 보여준다.
Commit 내역 확인하기

git log를 입력해보자.

  • commit 7488~~
    커밋 해시를 나타낸다
  • Head -> main
    (main) 은 해당 commit 내역이 main 브랜치 내에서 최신 commit 임을 나타낸다.
    Head는 여러 브랜치들 중에서 현재 작업중인 브랜치를 가리킨다. 
  • First commit
    커밋 시 입력한 커밋 메시지이다.
6. 작업물을 Remote repository로 업로드하기: git push

작업물을 업로드 하려면 아래의 과정을 밟아야 한다.

 

1. Remote repository 만들기

온라인에 Remote repository를 만들어야한다. 깃허브 로그인 후 우측 프로필을 클릭하여 Your repositories를 클릭한다.

New를 클릭하여 원격 저장소를 생성한다.

생성 완료가 되면 위와 같은 화면이 나온다.

 

2. Remote repository 와 Local repository 연결하기

Git remote 명령어를 이용하여 Remote repository와 Local repository를 연결해준다.

git remote --v 명령어를 입력하면 연결된 repository가 있는지 확인하는 명령인데 아직 연결이 되지않아 아무것도 뜨지 않는다.

 

이후 아까 만들었던 Remote repository의 Url을 복사한다.

 

이후 터미널에 git remote add 원격저장소별칭 원격저장소url을 명령한다. 원격저장소 별칭은 관례적으로 origin 이라는 단어를 쓴다고 한다. 연결 후 결과를 확인해보자.

3. 작업물 업로드 하기: git push

작업물 업로드 할 때에는 git push 원격저장소별칭 브랜치이름 을 입력하면 된다.

띠용... 에러가 떴다. 링크를 통해 들어가 읽어보니 ssh (Secure SHell) 공개키를 등록해야 하는 것 같다.

 

SSH키 생성

ssh-keygen 명령어를 입력 후 엔터를 3회 치면 아래와 같은 화면이 나온다.

ssh-keygen 명령어는 ~/ .ssh./ 경로에 id_rsa와 id_rsa.pub 을 생성한다. 이 두 파일을 ssh 키 페어라고 하며 id_rsa.pub은 공개키이다. id_rsa는 공개되면 안되는 개인키, 비밀키 라고도 한다.

공개키를 깃허브에 등록한다.

 

공개키(public Key)복사.

cat ~/.ssh/id_rsa.pub 명령어를 입력하여 공개키를 복사한다.

 

Github 프로필이미지-Setting-좌측 내비게이션의 SSH and GPG keys 를 선택한다.

좌측의 SSH and GPG keys 를 클릭 후 가장위의 New SSH key를 클릭한다.

 

타이틀은 임의로 작성하고 key에 복사해둔 공개키를 입력한다.

이후에도 계속 안되어 코치님께 문의해보니 토큰 생성하는 방법에 대한 정보가 있는 블로그 주소를 알려주셨다.

아래의 블로그 대로 토큰을 생성해서 다시 git pull 명령어를 치니 정상적으로 작동한다!

 

 

Github 에러 해결법: Authentication failed for ~ use a personal access token instead

Github 을 사용하다 보면 2021년 8월 이후로 git pull 을 하려 할때에 아래와 같운 에러가 발생할 때가 있다. remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.

wotres.tistory.com

깃허브 브라우저에 들어가 확인해보니 새벽에 커밋해놓은 자료가 업로드 되었다!

뿌듯하군!

Remote Repository의 코드를 로컬로 복사해오기 :git clone

git_clone 이라는 새로운 디렉토리를 만들고 이동해보자.

 

github에 접속해서 remote repository url을 복사한다.

 

 

git clone 복사한주소 명령을 입력한다.

전에 올렸던 git_practice 폴더 째로 내려받아졌다.

 

 

아직까지는 git 을 통한 파일 관리가 어느 면에서 유용한지, CLI 작업 환경이 왜 유용한지는 와닿지는 않지만 그래도 한걸음 더 나아간 것 같다!

반응형