#목차 1. 버전 관리 시스템(Version Control System)2. 버전 관리 시스템의 종류3. GIT을 쓰는 이유 Git이란? 버전 관리 시스템(Version Control System) 분류에 속하는 구체적인 프로그램중 하나입니다. 1. 버전 관리 시스템(Version Control System) Git을 알기 전에 먼저 버전 관리 시스...
이번에는 실습을 통한 Git의 간단한 명령어와 init을 알아보겠습니다. git init는 새로운 Git 저장소(repository)를 생성할 때 사용하는 Git 명령어 입니다. 프로젝트를 시작하고 소스 코드를 Git으로 관리하고자 한다면 먼저 git init으로 저장소를 초기화해야합니다. 기본적인 사용법은 간단합니다. 저장소로 사용하고자 하는 디렉터리...
이번에는 git을 통해 파일을 만들고 파일의 내용을 작성한뒤 , 버전 관리 가능한 파일을 만들어 보겠습니다. 저번에 만든 git 저장소 폴더로 이동한 후에 vim 명령어를 통해서 f1.txt 이라는 텍스트 파일을 만들어 보겠습니다. 하지만 이 상태에서는 바로 문서 작성이 불가능합니다. vim 명령어에는 문서를 작성하는 "입력모드" 와 문서를 저장하는...
이번에는 저번에 만든 텍스트 파일의 버전을 만들어 보겠습니다. 만들어 보기에 앞서 '버전'이라는 단어에 대해 자세히 알아보자면 버전은 의미있는 변화를 뜻합니다. 즉 모든 변화를 버전이라고 하지 않습니다. 만약 알고리즘 로직을 만들다 만 상태는 변화가 있을지라도 그것은 버전이라고 말 할 수 없습니다. 버전은 어떠한 작업이 있으면 그 작업이 완결된 상태...
저번에 만든 f2.txt파일을 cp(copy) 명령어를 통해 f1.txt파일을 새로 만들어 보겠습니다. 현재 f1.txt파일은 '버전관리되고있지않다' 라고 뜹니다. 새로만든 f1.txt 파일을 add 해주면 git 저장소에서 정상적으로 new file 이라고 인식을 합니다. ![](https://velog.velcdn.com/images/03083...
이번에는 log 와 diff 명령어에 대해 더 자세히 알아보겠습니다. 저번에 만든 버전의 기록을 표시하는 log 명령어에 -p 라는 옵션을 넣어보겠습니다. > -p 옵션은 버전의 변경사항에 어떤 차이가 있는지 나타냅니다. 화면의 초록색 글자 'f1.txt_change'는 버전의 변경사항을 나타내고 빨간색 글자 'souce : 3'은 이전 버전의 내용을...
이번에는 과거로 돌아가는 reset 명령에 대해 알아보겠습니다. > Reset 명령은 커밋을 취소하는 명령어 입니다. 만약 커밋 메세지가 2일때에서 0일때로 돌아갈려면 어떻게 해야할까요? 제일 간단한 방법은 reset 명령어를 사용하는 것입니다. reset 명령어 이후 0일때의 커밋 주소값을 입력해줍니다. 현재는 hard 옵션을 통해서 간단하게 삭제했...
여러분들이 만약 중국어를 처음 공부한다고 가정해봅시다. 어떤 방법으로 공부해야지 효과적일까요? 먼저 빈도수가 가장 높은 단어들을 찾아봅니다. 놀라운 사실은 중국어의 10만개 단어중 6글자의 단어가 사용률의 10%를 차지합니다. 하지만 이는 어떤 분야이든 비슷한 패턴으로 나타나는 현상입니다. ![](https://velog.velcdn.com/im...
이떄까지 `git`에서 자주 쓰이는 명령어 대해 알아보았습니다. 이제부터는 다른 명령어를 새롭게 배워보는게 아니라 `gistory 를 통해 Git` 이 어떻게 작동하는지 알아보겠습니다. 그러므로 `Git 을 분석하기 위해 필요한 gistory` 설치방법을 소개하겠습니다. > 📌 "Git 에서 내린 명령어들은 실제로 어떤 원리를 통해 동작하는 것일까?...
📌 Git 에서 add 명령어는 어떤 원리로 동작할까? 이번에는 `add` 명령어의 동작 원리에 대해 알아보겠습니다. `cd Documents 로 현재 위치를 옮겨준 뒤 mkdir git_2` 이라는 새로운 폴더를 만들어 줍니다. 이후 이 디렉토리를 git 저장소로 쓸것이기 때문에 `git init` 명령어를 사용해줍니다. ``cd .gi
이번시간에는 object 파일명에 대해 알아보겠습니다. http://www.sha1-online.com/ 먼저 위의 사이트로 들어가서 `hi` 라는 문구를 적어봅시다. 그럼 모든 사람에게 `c22b5f9178342609428d6f51b2c5af4c0bde6a42` 라는 내용이 뜹니다. 그 다음으로 `hello 라는 문장을 검색하면 aaf4c61ddcc5...
이번에는 `Commit` 의 원리에 대해 알아보겠습니다. `f4.txt 파일을 vim 명령을 통해 새로 만들고 내용을 f4` 로 한 뒤 `git add` 명령을 했습니다. 이후 커밋 메세지를 1 로 저장하겠습니다. 이후 `gistory 를 통해 파일을 확인하면 커밋메세지의 내용이 object` 파일안에 담겨져있습니다.
이번에는 `index 라는 파일이 무엇인지 status` 라는 명령이 어떻게 동작하는지 지레짐작해보겠습니다. > 📌 index파일과 status의 원리는 무엇인가? `git status 명령을 했을때 커밋할 파일이 없다는것을 git` 은 어떻게 알고있을까요? `gistory 의 index` 파일과 가장 최근에 생성된 ``obje
이번에는 '나뭇가지' , '분점' 를 의미하는 `branch` 의 느낌에 대해 알아보겠습니다. 예를들어 `report.xsl` 이라는 파일을 수정한다고 해봅시다. 이 파일을 버전관리한다는 것은 파일제목에 숫자를 붙이면서 ex) `report1.xsl , report2.xsl` 이렇게 순차적으로 숫자를 붙이는 식으로 저장합니다. 경우에 따라서 `re...
이번에는 직접 `branch` 를 만들어 보는 시간을 가져보도록 하겠습니다. 기존에 사용하던 `~/Documents/git_1` 경로로 이동해줍니다. 이후 `vim f5.txt` 를 통해 파일을 만들어 줍니다. `a` 라는 문구만 넣고 저장해줍시다. 늘 하던대로 `f5.txt 파일을 add` 해줍시다. ![](https://velog.ve
branch 를 만들면 편리성을 가질수있지만 또한 복잡성도 크게 생깁니다. 효율적으로 사용하기 위해 만든 여러가지 기능들은 복잡도를 초래할 수 있습니다. 이번 시간에는 branch 를 만들었을때 현재 어떤 상황인지를 판단할 수 있기 위한 확인 방법을 몇가지 알아보겠습니다. git log 를 그냥 사용하면 어떤것이 master 의 log 인지 , 어떤...
현재까지 작업을 분기해서 각자의 작업이 자신만의 히스토리를 만들어 나갔습니다. 하지만 이때 특정 작업들끼리 병합할 필요가 생길 수 있습니다. 이번 시간에는 병합 merge 를 하는 방법에 대해 알아보겠습니다. git log --branches --graph --decorate --oneline 으로 현재 상태를 먼저 보겠습니다. 대충 $2$ 에서부터 ...
이번 시간에는 branch 를 수련해보는 시간을 가져보도록 하겠습니다. Git - 이 링크를 통해 Git 사이트에 접속할 수 있습니다. 빨간색 글씨의 Documentation 에 들어가줍니다. 이후 좌측의 Book 을 클릭합니다. 친절하게도 번역이 다 되어있기 때문에 좌측에 자신의 언어에 맞는 걸 선택하면 됩니다.
이번 시간에는 이전에 배운 branch 와 merge 를 실습해보는 시간을 가져보도록 하겠습니다. 이전의 #18 Git - Branch 수련 이 글을 먼저 보고 오시는걸 추천합니다. 현재 branch 상황입니다. 메인으로는 master 를 쓸것이고 iss53 이라는 branch 를 새로 만들것입니다. 일단 f10.txt 파일을 만들어 주고 내용을 Hel...
이번 시간에는 stash 에 대해 알아보겠습니다. stash 는 감추다 , 숨겨두다 라는 뜻을 가지고 있습니다. 이는 branch 를 활발하게 작업하던 도중에 현재 branch 에서 작업을 마무리 하지 않았는데 , checkout 을 해서 다른일을 해야하는 경우가 있습니다. 이때 commit 을 하지않으면 checkout 을 할 수 없기 때문에 stas...
이번에는 Git 의 내부가 Branch 를 사용하는 과정에 어떤 변화를 갖게되는지 알아보겠습니다. 먼저 gistory .git 을 실행해줍니다. gistory 가 처음이라면 gistory 글 을 먼저 보고 와주세요. git init 을 해서 새로운 저장소를 만들때 HEAD 라는 파일이 생성됩니다. git 에서 commit 을 하면서 HEAD 라는 파일에...
이번 시간에는 merge 를 하는 과정에서 파일의 내용이 서로 다를 경우 충돌이 발생할 수 있습니다. 이를 해결하는 방법과 그 과정에서 git 이 얼마나 많은 부분을 자동적으로 처리해주는지 알아보겠습니다. 또한 branch 충돌이 나는 상황에서 당황하지 말고 문제를 해결하는 것이 목표입니다. 일단 branch 로 exp 를 만들어 줍니다. 이때 이전에 ...
파일을 관리하다보면 과거로 이동해야할때가 종종 필요합니다. 이번시간에는 Git 에서 중요한 reset , checkout 기능을 알아보겠습니다. 두 명령을 실행했을때 git 의 내부에서 어떻게 변화되는지 알아보고 두 명령의 차이점 또한 알아보는 시간을 가져보도록 하겠습니다. 먼저 f2.txt 파일을 만든 후에 add 와 commit 를 해줍시다. com...
이번시간에는 Working copy , index , repository 에 대해 알아보도록 하겠습니다. 일단 git 에서 저장소를 크게 분류하면 Working copy , Index , Repository 로 나눌 수 있습니다. 이때 reset 의 옵션에 따라서 삭제되는 파일의 범위가 달라집니다. Git reset --soft 시 Repository...
이번시간에는 '충돌하다' 라는 의미를 가진 conflict 에 대해 알아보겠습니다. git 을 사용하다 보면은 branch 를 굉장히 효율적으로 사용할 수 있기 때문에 많은 개발자들이 branch 를 끊임없이 사용하고 병합하고 , 원격저장소를 사용해서 다른사람의 작업을 합치는 경우도 생깁니다. 이러면 엄청 많은 충돌이 발생할 수 있습니다. 이번 시간에...
git 에서 merge 를 할때 사용하는 Three way merge 기법을 씁니다. 즉 자동으로 파일을 병합해줍니다. 또한 Two way merge 도 알아보면서 어떤 차이가 있는지도 알아보겠습니다. Base 에 $A$ , $B$ , $C$ , $D$ 라는 내용이 있다고 가정해봅시다. 먼저 Me 에서 는 $A$ , $B$ 는 그대로 두고 $C$ 는 ...
이제부터 원격 저장소 - Remote repository 에 대해 알아보겠습니다. 원격 저장소는 local repository 와 대비되는 개념입니다. 저희가 지금까지 했던 작업을 생각해봅시다. 자신의 컴퓨터 에서 작업을 하고 그것을 commit 을 하면 저장되는 그곳이 그저 저장소라고 불렸는데 , 자신이 작업한 내용을 인터넷의 어딘가에 올려서 백...
이번시간에는 백업&협업을 위한 원격 저장소를 만들어 보겠습니다. 일단 새로운 저장소를 하나 만들어 줍시다. 그곳으로 이동해줍니다. f1.txt 파일을 만들고 add 와 commit 를 해줍니다. ![](https://velog.velcdn.com/images/030831/post/b12d43de-3c19-41dc-bf64-185354d179e7/im...
지금부터 github 에 대해 알아보겠습니다. 물론 원격 저장소를 스스로 서버를 구축하여 사용할 수 있지만 매우 어렵기 때문에 편리한 기능을 제공을 해주는 github 를 사용하겠습니다. 이는 원격 저장소를 제공할 뿐만 아니라 무료로 사용가능하고 다른사람의 오픈소스들 , 코드들을 자유롭게 사용할 수 있습니다. 일단 처음에는 github 에 자신의 파일을 ...
이번시간에는 원격 저장소를 만드는 방법과 동기화 시키는 방법을 알아보겠습니다. 일단 github 를 사용하기 위해서 회원가입을 해줍니다. 그리고 repository 에 들어가서 우측상단의 New 를 클릭해줍니다. 먼저 디렉토리 이름은 gitfth 로 하겠습니다. 그리고 public 으로 해줍니다. Private 를 사용하긴 위해선 결제를 따로 하셔야합니...
이번시간에는 Secure Shell , 줄여서 ssh 를 통해 원격저장소를 사용하는 방법에 대해 알아보겠습니다. 저번시간에는 https 링크를 통해 clone 을 사용했습니다. 하지만 단점은 원격저장소에 접근할때 로그인을 해야한다는 단점이 있었습니다. ssh 의 가장 강력한 장점은 원격 저장소를 이용할때마다 로그인을 하지 않아도 된다는 점입니다. 자동...
이번 시간에는 지역저장소와 원격저장소가 상호작용을 할때 git 의 내부는 어떤 변화가 있는지 , 어떤 원리로 작동하는지 알아보겠습니다. 새로운 저장소 repo 를 만들고 이동한다음에 f1.txt 를 만들고 add 와 commit 을 해줍니다. github 로 이동해서 여기서도 저장소를 만들어 줍니다. 그리고 repo 를 만들면서 생성된 `s
이번시간에는 git 에서 원격저장소에있는 내용을 지역저장소로 옮길때 2가지 방식이 있는데 pull 과 fetch 를 알아보고 그 차이를 알아보겠습니다. home 과 office 디렉토리를 저장소로 만들어 주었고 github 와 연결한 상태입니다. office 에서 f1.txt 를 만들어 줍니다. 이후 commit 을 해주고 `pus
이번시간에는 tag 에 대해 알아보겠습니다. 이는 branch 와 조금 비슷하지만 살짝 다릅니다. git/git 저기 들어가보면 Release 라는 문구가 있습니다. 이는 git 이 만들고 있는 소스코드에서 사용자들에게 제공할 수 있는 각각의 의미있는 버전들을 모아놓은 곳입니다. 즉 정식으로 오픈된 버전을 다운로드하는 기능입니다. 875 tags 라는...
이번 시간에는 tag 의 원리에 대해 알아보겠습니다. 저번 시간에 사용하였던 tag 디렉토리의 f1.txt 를 한번 더 사용하겠습니다. 파일의 내용에 e 를 추가 해주고 commit 을 해줍니다. 이 상태에서 태그를 만들면 gistory 에 어떤변화가 있을까요? git tag 1.1.2 로 새로운 태그를 만들어줍시다. ![](https:
이번시간에는 rebase 에 대해 알아보겠습니다. 이와 대조되는 기능은 merge 입니다. rebase 도 병합을 하는 방법이지만 merge 와는 결과가 좀 다릅니다. 일단 merge 부터 알아봅시다. 일단 처음에 Master 이라는 branch 가 있다고 가정해봅시다. Master 에서 commit 을 한번 한 후에 `featur
이번에는 rebase 실습을 해보겠습니다. 일단 git 을 3개 쓰겠습니다. 그리고 rebase 라는 저장소를 만들어 주고 이동해줍니다. f1.txt 파일을 만들고 add 와 commit 을 해줍니다. rb 라는 branch 를 만들어 줍니다. -b 를 쓰면 바로 이동할 수 있습니다. 그리고 `git log --decorate --a
이번시간에서 rebase 를 일부로 충돌을 내고 그 과정에서 어떻게 rebase 가 동작하는지 알아보고 그것을 해결하는 방법에 대해 알아보겠습니다. 그리고 rebase 를 사용할때는 다른사람과 공유하지않은 commit 들에 대해서만 사용해야합니다. 즉 git pull 을 통해 파일을 다운 한 다음에 rebase 를 적절하 시용하고 마지막에 git pus...
이번시간에는 git 을 사용하는 방법이 아니라 git 을 잘 사용하는 방법 , 즉 어떻게 사용해야하는지에 대해서 알아보겠습니다. 주관적인 내용이기 때문에 git 을 사용하는 방법에 대해서 정확한 정답은 없지만 많이들 채택하고있는 git flow 모델에 대해 알아보겠습니다. 여기서 가장 중요한 branch 는 master 와 develop 입니다. 첫번...
이번시간에는 git flow 를 실습해보겠습니다. 먼저 github 에서 gitflow 라는 새로운 repository 를 만들어줍니다. 그리고 https 주소를 복사해줍니다. 이후 git 에서도 gitflow 라는 디렉토리를 만들고 저장소로 만들어 줍시다. 그리고 git remote add origin https주소 를 통해서 로컬 저장소와 원격 저장...
지옥에서 온 Git 이라는 강의 영상을 통해 혼자서 git 을 독학했습니다. 지금까지 총 40개의 글을 작성하며 git 에 대해 공부했습니다. 2022-9-23 일 부터 시작했지만 학교를 다니면서 수업을 듣고 시험을 대비하느라 여름방학때 잠깐 한 부분을 종강을 하고 겨울방학때 드디어 끝냈습니다. 이떄까지 한 내용은 git 에서 기본적으로 알아야한 내...