ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Git1
    생활코딩 Git 2021. 10. 5. 22:21

    https://opentutorials.org/course/3837

     

    GIT1 - 생활코딩

    수업소개 이 수업은 버전관리 시스템 git을 소개하는 수업입니다.  수업대상 이 수업은 아래와 같은 상황에 있는 분들을 위한 수업입니다. 아래에서 문서란 일반적인 텍스트 문서에서부터 이미

    opentutorials.org

    https://youtube.com/playlist?list=PLuHgQVnccGMCNJESahrVV-uYGMNYK_vMf 

     

    Git1

    https://opentutorials.org/module/3733

    www.youtube.com

     

    ----------------------------------------------------------------------------------------------------------------

    수업소개

    이 수업은 버전관리 시스템 git을 소개하는 수업입니다.

    수업대상

    이 수업은 아래와 같은 상황에 있는 분들을 위한 수업입니다. 아래에서 문서란 일반적인 텍스트 문서에서부터 이미지, 소스코드를 망라한 모든 파일이라고 생각하시면 됩니다.

    o  수 많은 문서를 관리해야 하는 분

    o  이 문서들이 자주 변경되는 분

    o  문서의 변경 이력을 체계적으로 관리해야 하는 분

    o  문서의 조작을 막아야 하는 분

    o  문서를 안전하게 백업해야 하는 분

    o  문서를 다른 사람과 공유해서 공동으로 작업하는 분

    --------------------------------------------------------------------------------------------------------------------

    @GIT1 - 1.수업소개

    THE INFORMATION MANAGER FROM HELL

    지옥에서 온 정보 관리자

     

    2005리눅스 운영체제 개발자인 리눅스토르발츠는 Git을 세상에 처음 소개하면서 한말

    그가 말한 지옥은 무엇이었을까요?

     

    26년동안 만명이 넘는 SW엔지니어들이 오픈소스방식으로 2천만줄이 넘는 컴퓨터 소스코드를 작성했다면 바로 그곳이 지옥이 아니었을까 이러한 지옥에서 태어난 소프트웨어가 리눅스 운영체제.

    토르발츠는 리눅스의 소스코드를 잘 관리하기 위해 GIT을 만들기 시작.

     

    오늘날은 리눅스 뿐만 아니라 수많은 소프트웨어의 소스코드가 GIT을 통해서 관리되고 있습니다. GIT은 이제 다채로운 지옥과 함께하고있음.

     

    우리는 대표적인 버전관리 시스템인 GIT의 사용법을 함께 살펴볼 것입니다.

     

    이수업은 SW엔지니어만을 위한 수업은 아니다. 물론 GIT은 소스코드 지옥에서 왔지만 소스코드도 결국 문서다. 문서지옥에 고통받고있는 자라면, 누구나 같은 지옥의 소속이라고 생각해요.

     

    이수업은 코드 대신 이미지 파일과 같은것들을 이용해 수업을 진행합니다.

     

    여러분이 수십년동안 수만명이 넘는 사람들에 의해서 만들어진 수만개의 파일이 끊임없이 변화되고 변조되고 복제되고 있는곳에 있다면 그곳이 바로 지옥입니다.

    GIT의 복잡성은 이런 지옥에 비하면 아무것도 아닙니다.

     

    이런 지옥에 있는 사람한테 GIT을 알려주면 그가 속한 프로젝트의 복잡성을 획기적으로 낮출 수 있습니다

     

    깃을 공부해보세요 왜 이제시작했을까 하는 기분좋은 후회를 하게될것입니다.

     

    반대로 여러분이 혼자서 한두개의 문서를 한번에 작성해서, 자기 혼자 보기 위해서 보관하고 있다면 여러분은 천국에 있는 것입니다. 깃은 복잡합니다. 천국에 있는 자에게 깃같은걸 알려주면 그곳이 바로 지옥, 깃은 이런 천국보단 훨씬 복잡.

     

    지옥에 대면했을 때 무엇을 통해 이 지옥을 빠져나갈 수 있는지 아는것까지가 지옥에있지 않은 분들의 목표가 돼야 합니다.

     

    이 목표를 달성하기 위해서, 우리에게 필요한 것은 적당함입니다. GIT이 무엇인지를 천천히, 적당히 파악해 두었다가, 미래에 GIT을 사용하지 않는 것이, GIT을 사용하는 것보다 훨씬 어려워졌을 때, GIT을 배워서 사용하면 됩니다. 처음부터 모든 수업을 다 들으려 하지 않으시길 권고드려요.

    우리가 공부를 하는데 있어서 또하나의 환상적인 도구가 바로 상상력. 우리가 지옥에 있다 치면 된다. 그 지옥을 과장할수록, GIT의 여러 개념들이 필요한 이유가 분명하게 공감될것

     

    공감이 된다면 이해는 따놓은당상. 공감이 배제된 이해는 모래위의 성이다.

    천국은 천국에 있는게 아니고, 지옥에서만 보이는 신기루다.

    지옥에 이미 있거나, 지옥에 있다치면 천국을 만날 만반의 준비가 된 것.

    --------------------------------------------------------------------------------------------------------------------

    @2.git을 구경합시다!

    GIT3대 목적을 전 이렇게 봐요

    1.버전관리

    2.백업

    3.협업

    (강의목록은 백업 앞에 branch & conflict가 있다)

     

    그리고 이 세가지의 목적은 순서가 있다.

    앞의것을 이해하지 못한다면, 뒤에것을 이해하는 것이 불가능하다.

    앞에것은 그것만으로도 할 수 있는 일이 많지만, 뒤에것은 앞에것에 의존하고 있는 기능

    뒤로갈수록 기하급수적으로 어려워짐.

    앞에서 오래머물수록 좋아. 적당히 천천히 즐겁게 공부할수 있도록 자기자신을 잘 다스려주세요

     

    git1에선 깃사용법x 아이래서깃을사용하는구나 알기o

     

    --------------------------------------------------------------------------------------------------------------------

    @1.git의 목적 1 - 버전관리 1, 버전관리가 없을때는 어떤 지옥이 있을까

    Hello.txt 만들고 뭘 쓰면서 작업을 한 뒤

     

    다음날 작업을 하려는데, 왠지 이번 작업은 버려져야 할 수도 있을 것 같아. 어제 우리가 했던걸로 다시 되돌아갈 수도 있을 것 같다는 생각이 들면

    -> 이땐 많은 분들이 다른이름으로 저장해서 제목에 Hello2.txt라고 붙이고 거기다 작업하고 저장한다.

     

    그다음날 또 작업을 하니까 또 옛날로 돌아가야할 수도 있을 것 같아.

    그럼이제 또 다른이름저장해서 Hello3.txt라고 붙이고 작업하다가

    어제한게 필요없어졌다 하면 Hello3.txt를 지우면 어제의 상태가 되는 것.

     

    만약 작업이 굉장히 복잡하고 파일도 엄청나게 많다??

    ->이때 우리는 무엇을 꿈꾸게 될까?

     

    1.이름같고 숫자만 다른 파일이 천개가 넘으면?

    2.숫자의 바뀜만으로는 내가 뭘 작업했는지 알 수가 없는데? -> 각각의 변화마다 정확한 설명을 적고 싶어

    3.언제 수정했는지도 기록하고싶고

     

    --------------------------------------------------------------------------------------------------------------------

    @2.git의 목적 1 - 버전관리 2

     

    깃을깔면

     

    1.

    깃아, 난 이 디렉토리(폴더)에 있는 파일들을 버전관리를 하고 싶어라고 얘기를 해줘야함.

    ->그럼 거기에 .git이라는 디렉토리가 생긴다. 우리가 버전을 만들면 우리 몰래 버전들이 여기안에 저장이된다.

     

    2.

    파일을 만들면 git이 그 파일이 추가됐다는 사실을 알고 있다.

    일해야되니 파일에 뭘 써넣겠지 수정하거나 그럼 나는 퇴근할 때 깃한테 나 작업끝났으니까 버전하나 만들어줘 라고 얘기하고 퇴근. = 했던 작업의 이름을 쓰고 commit --메시지를 쓰고 커밋을 하는게 버전의 이름버전저장

    *commit : 버전을 생성한다는 뜻이라고 생각하면됨,

    *master : 이건 일단 무시

     

    3.

    다음날!!!

    그 파일을 수정을 하고 저장을 하면 changes에 뭔가 뜬다! 그걸 보면 어제 저장했던 내용과 오늘 저장했던 내용이 손쉽게 구분되게 볼 수 있다.

    여기서 commit하면 싹 사라지고 퇴근

     

    4.

    반복

     

    5.

    이전엔 파일의 이름을 내가 손수 쓰고 다른이름으로 저장해서 버전을 확인할 수 있었는데 git?

    history탭을 누르면 메시지와 함께 버전에 대한 설명들이 들어가있다.

     

    6.

    작업을 할 때는 파일을 수십개씩 처리함.

    버전하나에 파일 하나만 있으면 그건 천국이야

    내가 설정해놓은 폴더에 이미지 파일을 넣어보면 이제 Changes에 파일두개가 보인다.

    여기에 Message4라고 쓰고 commit, 버전을 생성하게되면

    이 두 개의 파일이 하나의 버전으로 그루핑 돼 있다.

     

    7.

    여기서 이 두 개의 파일들이 수정되면 Git이 또 알아챔

    1

    2

    3

    에서

    4를 추가하면 뜨는건 +3, +4가 됐다고 뜨는데 +4만 추가가된거에요~라고 말함

     

    이미지도 이전과 후 그림을 다 보여줌.

     

    이렇게 문서들의 변경사항을 추적해나갈 수가 있다는 겁니다.

    그리고 아주 간단하게 클릭 한두번으로 우리의 프로젝트를 과거의 상태로 확 돌려버릴 수 있다.(옛날에는 파일을 찾고 막 복잡했는데)

    버전관리를 이용하면 아주아주 세련되게 작업을 처리할 수 있다.

     

    실습x 이해x 체험o -> 아 나도 언젠가는 저런게 필요할 수도 있겠네

    --------------------------------------------------------------------------------------------------------------------

    @4.git의 목적 2 - 백업

    여러분의 컴퓨터는 확실한것과 불확실한 것이 있다.

    1.언제고장날지 알수 없음 : 불확실

    2.언젠가 고장남 : 확실

    ->자신의 컴퓨터에만 파일을 보관하면 언젠가는 그 파일은 유실될 것을 확신할 수 있다. 다만 그게 오늘이 아니길 기도

    ->귀중한 정보라면 백업(다른컴퓨터에 복제)을 해야함.

     

    옆에있는 컴퓨터에 백업을 하는것도 훨씬 안전해지지만

    지구반대편에 있는 컴퓨터에 복제를 해놓으면 지구적인 레벨의 재앙이 오기전까진 데이터를 동시에 유실하는건 불가능

     

    버전관리를 이용했을 때 -> 얻을 수 있는 아주 간편한 효용 백업!

     

    자신의 파일과 버전들을 백업할 컴퓨터

     --이런 백업을 제공해주는 사업자들이 있음. 컴퓨터 안사도 됨.

    그중에 github.com을 씀 = 원격저장소, 내 컴퓨터는 지역저장소, 올리면 github도 버전을 볼 수 있다.

     

    커밋하고 Push(원격저장소에 밀어넣기)하면 올라간다.

    Push하고나서 다른컴퓨터 등에 올라간걸 땡겨오는걸 Pull

     

    --------------------------------------------------------------------------------------------------------------------

    @5.git의 목적 3 - 협업

    백업을 하면 협업은 그냥 되는거나 다름이 없다. 백업PC를 다른사람이라고 생각하면 똑같음.

    서로가 주고받으면서 협업이 이뤄짐.

     

    Git의 기능중

    같은 파일을 수정하고 같은 행을 수정했을 때 자동으로 합쳐주고 같은 행을 수정했을 때는 나중에 등록한 사람한테 알아서 하라고 교통정리를 해주는 것

    이 있다. Git덮어쓰기가 일어나지 않도록 교통경찰 역할을 해준다

     

    --------------------------------------------------------------------------------------------------------------------

    @6.git의 종류

    자동차는 제품군

    세상엔 여러 가지종류의 Git프로그램이 존재

    Github.com에서 만든 Github desktop이라고 하는 프로그램이있다.

    -> Changes, History, 업로드다운로드버튼..

     

    TortoiseGit 도 있고

    Sourcetree라는 프로그램이 고급자용임. 복잡하고, 자유롭다.

     

    사실 Git이라고 하면 가리키는 원래의 오리지널 프로그램이 있음.

    git log, git status, git commit -am “”            ...

    git push 치면 업로드가 됨

    이걸 기반으로 저 위에애들이 만들어진 것.

     

    --------------------------------------------------------------------------------------------------------------------

    @7.수업을 마치며

    지금 당장 할 필요는 없고

    이걸 왜 해야돼 -> 이거 하면 일이 편해지겠는데??기대기대로 바뀔 때 공부하실 것을 권해드립니다.

     

     

    '생활코딩 Git' 카테고리의 다른 글

    Git4 - SourceTree (4)Collaboration  (0) 2021.11.08
    Git3 - SourceTree (3)Backup  (0) 2021.11.08
    Git3 - SourceTree (2)branch & conflict  (0) 2021.11.08
    Git2 - SourceTree (1)Version Control  (0) 2021.11.08
    Git2 - CLI (1)Version Control  (0) 2021.10.05
Designed by Tistory.