본문 바로가기
git

2020.08.29_git 레포지토리 생성 및_ 기초

by 해맑은 코린이 2020. 8. 30.

2020.08.29_git 레포지토리 및 기초_ 정리노트

 

오늘은 우리가 사람들이 개발을 할 때 협업 도구로 사용하는 에 대해서 알아보고, 레포지토리라는 것을 생성해보고 어떻게 코드를 올리는 지 정리하는 노트!

 

 

 

git

이란 컴퓨터 파일의 변경사항을 추적하고, 여러 명의 사람들과의 작업을 할 때 각각의 코드를 조율하기 위해 만든 소프트웨어! 

우리는 깃을 통해 코드를 전으로 되돌릴 수도 있고, 다른 사람의 코드를 비교해볼 수 있다.

 

오늘은 내가 지금까지 적었던 , 알고리즘의 코드들을 새로운 레포지토리를 생성해 올려보면서 여러 가지의 깃 기초 개념을 정리해보자!!

 

 

 

레포지토리 ( Repository ) 란 저장소를 뜻하는데 깃에서는 두 종류의 저장소를 제공한다.

 

원격 저장소 ( Remote Repository ) - 원격 저장소용 서버에 저장 되며 다른 사람과 공유할 수 있는 저장소

 

로컬 저장소 ( Local Repository ) - 나의 로컬 PC 에 저장되는 개인 저장소

 

 

오늘은 원격저장소에다가 파일을 올려보자! 깃허브로 접속해서 회원가입 / 로그인을 해주고,

 

이제 나오는 것들 대부분 출처 - 깃허브

 

 

 

로그인을 하게 되면, 왼쪽에 내가 참여하거나, 내가 만든 레포지토리들이 뜨게 된다. 거기서 new를 눌러 추가해줘도 되고, 

 

 

오른쪽 내프로필 옆 + 버튼을 눌러 생성해줘도 된다.

 

 

 

 

먼저 레포지토리 이름을 정해주고,

밑에 설명을 적어주는 칸이다. 안적어줘도 되기때문에 필수는 아니다.

밑의 Public은 공개, Private 는 비공개. 나는 공개로 설정했다. 그러면 내 코드가 모두에게 공유가 가능해진다.

 

 

밑의 3개 옵션은 새로운 저장소를 만들때 3가지 옵션 중 하나를 사용해서 저장소를 초기화시킨다! 기존 저장소를 가져올때는 이 옵션을 건너뛴다.

 

간단히 3개의 옵션 설명

 

README 파일은 맨 처음 공유 레포지토리에 들어왔을 때 가장 먼저 보는 파일로,

 

  • 프로젝트가하는 일
  • 프로젝트가 유용한 이유
  • 사용자가 프로젝트를 시작하는 방법
  • 사용자가 프로젝트에 대한 도움을받을 수있는 곳
  • 프로젝트를 유지하고 기여하는 사람

등등의 정보를 입력하면 된다. 그냥 머 프로젝트에 대해서 알리고 공지같은 거라고 생각하면 된다.

 

 

.gitignore 옵션은 말그대로 파일을 무시할 수 있도록 설정하는 옵션. 내 로컬 저장소에는 있지만, 공유 레포지토리에 표시하고 싶지 않을 때 이 설정을 사용한다.

 

 

license는 내가 프로젝트를 만들고 공개 저장소를 만들었을 때 다른 사람에게 내 소스코드를 얼마나 공유할건지 정하는 설정이다. 선택하지 않는다면 기본 저작권법이 적용되고, 의무적으로 선택해야하는 것은 아니다.

 

 

 

훠.. 각각 옵션마다 쓰는 방법이 다 다르고 어렵지만 오늘은 나는 README 만 만들어서 한번 써봐야겠다.

 

 

체크하게 되면, branch 라는 개념이 나오면서, 기본 브랜치가 master 로 설정될 것이다. 만약 기본 이름을 바꿀거면, 세팅으로 가라라고 하는데, 나는 일단 기본 세팅을 유지한 채, 만들어 보겠다. 

 

 

 

휴.. 아직 이름은 먼가 부끄러워서 ^^.. 가렸다 그냥 계정이름이고, 이렇게 내 알고리즘 레포지토리가 만들어졌다! 간단하게 파일을 이제 올려보즈아아아

 

 

 

 

내가 올려준 코드파일이 있는 폴더로 들어가서  마우스 오른쪽 우클릭을 통해 git bash 를 실행시키고,

 

저게뭐람

 

git bash 는 간단히 깃을 이용하기 위한 프로그램이다 !  https://git-scm.com/ 요기로 들어가서 깔면 되는데.. 옵션 이것저것 구글링 추천...ㅎㅁㅎ.. 그냥 깔기보단 잘 읽어보고 깔기 추천... 죄송함미다.. 아직 그까지는 멍청해서.. 저도 구글과 주변분들이 깔라는데로 깔았움.. 

 

 

++ 찾아보니 따로 설치가 필요 없는 윈도우 내에 명령 프롬프트(cmd) 를 사용하거나, 통합 개발 환경 (IDE) 에 내장되어 있는 터미널을 사용해도 명령어가 같아서 상관없다구 한다! 편히 따라하면 될 듯!

 

 

 

쨋든 bash는 하나의 터미널 이다. 쨋든 성공적으로 설치를 했다면 내가 올려줄 소스 코드 파일로 들어가서

 

 

 

요기 오른쪽으로 클릭하면 git bash 가 뜬다. 요고를 클릭해주면, 

 

이렇게 현재 폴더의 경로와 함께 bash 창이 뜨게 된다. 마찬가지로 가린건 그냥 내이름..^^

 

 

 

여기서 

 

code . 을 치게 되면 코드를 보여줄건데, .은 현재 이 창이 있는 경로를 뜻한다. 현재 경로의 코드를 띄워줘라는 말씀 !

 

code 뒤에 한번 띄워주어야한다.

 

 

 

엔터치면 자동으로 vs 코드로 이동한다.

 

 

 

 

 

 

짠 그러면 지금 경로에 있는 파일들을 자동으로 불러와준다. 이제 이 코드들을 깃과 연결해서 내가 생성한 레포지토리에 올려봅씨다! 

 

vs코드에서 터미널 창을 켜고 본격적으로 올려봅씨다!!!

 

 

 

 

 

git init - 깃을 시작하기.

 

 

저렇게 실행하게 되면, 터미널에서 이렇게 파란색으로 ( master ) 가 뜨고 파일들이 초록색으로 바뀐다!

 

 

이 명령어는 시작하자마자 깃이 이 모든 파일들을 관리해주진 않지만,  .git 이라는 하위 디렉토리를 만들고 그 디렉토리에는 저장소에 필요한 것들이 들어있다. 디렉토리를 생성해주었다면 이제 깃에서 내 프로젝트 파일들을 추가하고 커밋을 해주면 된다. 

 

그전에 깃의 상태를 한번 알아볼까?

 

 

git status - 깃의 현재 상태를 알려주는 것, 순서대로 해석하면, 커밋을 해주고 싶으면 git add를 해주고,

추적되지 않은 파일. 즉 올려주지 않은 파일들을 나열한다. 마지막으로 커밋에 추가 된 것이 없지만 추적되지 않은 파일이 있다. 추적하려면 git add를 사용해주세요가 되겠다! 

 

 

 

git add - 로컬 저장소에 내 파일들을 올려주기. 커밋을 해주기 위한 전 단계. 나는 모두 올릴거라서 . 을 써줬고 ( 띄워쓰기 필수 ) 만약 특정 파일만 올릴거라면 파일명 or 폴더명을 써준다! 

 

이까지를 스테이징이라고 하는데,  스테이징은 변경사항 중에서 저장하고 싶은 부분만 선택해 임시저장하는 개념이다. 이제 커밋을 해주러 갑씨다.

 

 

git commit - 커밋은 깃이 폴더의 변경 내용을 저장하는 기능이다. 스테이지 상태로 만들어놓고 실행이 가능하고, 

git commit -m "변경 이유 메세지" 순서로 띄워쓰기 주의! 협업을 할때는 이 메세지 부분을 통일 시키는 것도 효율을 높이는 방법이다.

 

 

흠 근데 혹시 커밋을 하고 상태를 보고 싶어서 git status를 하게 되면 

 

nothing to commit, working tree clean - 이런 메세지로 이미 커밋을 했다고 뜬다. 커밋을 했을 때의 상태를 볼순 없을까..? 그때 써주는 명렁어는 또 따로 있지.

 

 

Author : 깃허브 이메일과 계정이름 ( 이정도면 가리는거 컨셉충같아...가리지말걸..이미 컨셉에 지배됨 )

 

Date : 커밋한 날짜

 

이렇게 git log를 써주게 되면, 커밋한 결과들을 볼 수가 있다!

 


 

자 여기까지 로컬저장소에다가 넣어주는 과정 끝! 이제 내 원격저장소에 넣는 방법으로 ㄱㄱ

 

 

 

 

그래서 저기서 초록색 code 버튼을 누르게 되면, 위에 이 레포지토리의 주소가 나오게 된다.  이걸 옆에 아이콘을 누르면 복사가 된다. 복사를 해주고,

 

 

 

git remote add origin 레포지토리 주소  - 로컬저장소에 있는 것을 원격 저장소로 연결을 시켜주는 문장.

 

 Ctrl+V 가 안먹힌다면 마우스 오른쪽 클릭 - paste 를 통해 복사해 온 url 주소를 붙여준다.

 

 

git remote -v - remote로 연결되어 있는 저장소목록을 보여주고 요 두개 해주면 연결 성공! ( 항상 띄워쓰기 조심 )

 

 

이제 git push를 통해 원격 저장소에 올려주면 되는데, 

 

 

 

 

에... 망했다 거부당했다.. 내 push... ㅠㅠ 찾아보니, 이미 저장된 프로젝트가 있는 경우 충돌을 한다고 한다..  git pull 로 프로젝트를 병합해보고 그래도 안된다면, git pull origin 브런치명 ( 여기서는 master ) --allow-unrelated-histories 로 강제로 병합(merge) 시켜준다. 처음에 깃과 충돌이 아니면 안쓰는 게 좋다하니 참고참고.

이 명령 옵션은 이미 존재하는 두 프로젝트의 기록을 저장하는 기능인데, 깃에서 서로 관련 기록이 없는 이질적인 두 프로젝트를 병합할 때 기본적으로 거부하기 때문에 이를 저 명령어를 통해 허용해준다!  흔하지는 않은 상황이라고 한다. 

이렇게 또 좋은 것들을 알아간다..^^

 

 

 

자 이제 쨋든 push로 다시 돌아가서 어떻게 해주냐면,

 

 

 

git push origin master - 이 옵션은 원격 저장소에 master branch 의 커밋 상황을 올려주는 기능이다.  후.. 이거까지하게 되면!!!!

 

 

 

...폴더를 써줄 걸 그랫나 ㅎ 뭐 쨋든 깃에 잘 올라간다! 짝ㅉ가짜가짝


 

 

이제 깃에 잘올라갔으니 추가적으로 README 작성을 간단히 배워보자!

 

우리는 리드미를 작성할 때, 마크 다운 문법을 사용하는 것이 추후 다른 형태로 변환하기 편하기 때문에, 한번 마크다운 문법으로 리드미를 작성해보자!

 

 

 

코드로 대충 적어봤다! 여기서 자기가 원하는 만큼만 써주면 될 듯 하다 ㅎㅎ

 

 

 

자 README를 수정했으면 저장하면 수정된 내용 파일이 노란색으로 뜬다! ( 캡쳐 깜빡하고 못했다ㅠㅠㅠ )

 

 

이번에는 .말고 올리고 싶은 파일명을 써서 올려주었따.

 

 

 

자자 그뒤로 커밋과 푸쉬해주면 드디어 끝!!!  마지막으로 브랜치에 대해 설명.. 후 

 

branch

란 깃의 중요한 개념이다 변경 이력들은 나무 같은 모양들로 자라나게 되는데, 그래서 깃 트리라고 하기도 한다.

브랜치를 만드는 이유는 지금 하고 있던 작업을 하다 다른 작업을 할 때 쓰거나 협업 시 사람들 마다 각자의 브랜치를 활용해 올릴 수도 있다. 또한 기본적으로 제공되는 master 라는 브랜치로 각자의 브랜치에서 merge ( 병합 ) 를 통해 합칠 수도 있다. 

 

오늘은 깃 브랜치를 하나 만들어 보고 어떻게 쓰는 지만 알아보자!

 

 

git branch - 브랜치의 목록을 확인하고 현재 내가 있는 브랜치에는 앞에 * 를 통해 나타낸다!

 

 

git branch 새로 만들 브랜치 이름 기존 브랜치 이름 - 이렇게 하면 practice라는 브랜치가 만들어진다.

 

 

다시 git branch 를 통해 확인해보면 practice 가 만들어 진 것을 볼 수 있고, 현재 있는 브랜치는 *를 통해 master 라는 것을 알 수 있다.

 

 

 

git checkout 바꿀 브랜치이름 -  브랜치를 바꿀 때 쓰는 명령어로 이렇게 쓰게 되면 해당 브랜치로 옮겨지고,

 

 

 

 

이렇게 브랜치가 바뀐 모습을 볼 수가 있다. 

 

마지막으로 자주 쓰이는 git clone만.. 이것만 적고 마무리

 

git clone 원격 저장소 주소 - 원격 저장소 전체를 로컬 저장소로 복제하는 기능. commit 사항까지 복제가 가능하고 클론을 해오게 되면 자동으로 복사한 원격 저장소와 remote로 연결이 가능하다!

 

아마 깃에서 난리가 난다면..^^ 나는 조용히 클론을 통해.. 다시 폴더 만들고 통째로 불러와서 다시 해주는 게 ..ㅎ마음이 편하더라...ㅎ 문제는 해결해야지 이런 방법은 매우 안조씀미다 허허

 

일단 기본적인 기능들은 오늘 여기서 정리!! 짝짝 끝끝

 

'git' 카테고리의 다른 글

2021.01.21 git fork vs clone  (0) 2021.01.21
2020.10.14_Django Secret Key  (0) 2020.10.14
2020.10.11_git ignore 생성  (0) 2020.10.12
2020.09.26_git pull request  (0) 2020.09.26
2020.09.13_git_merge  (0) 2020.09.14

댓글