GIT

버전관리란?

본 수업은 한국어 자막이 제공되고 있습니다. 자막 작업의 공헌자는 아래와 같습니다. 
  • Seongsoo Yoon
  • Juyoung Moon
  • Hansung Shim
  • Sunmi Kwak
  • Eunyoung Park
  • Jeongeun Kim
  • fruitson

댓글

댓글 본문
작성자
비밀번호
  1. 김수현
    구글doc에서 이전 버젼으로 돌아가는 기능을 한번 보았던 것 같은데요. 여러 사람이 공동 작업할 때만 가능한 것으로 알았습니다.(사용한 적은 없읍니다) 그런데 이번 기회에 확실히 알게 되었네요.

    이 강의에서 드랍박스에 대해 나왔는데요.
    구글Doc에서는 어떻게 하냐하면요.(구글쉬트도, 다른 구글문서도 다 될 것 같습니다)
    구글Doc문서 편집모드에서 제목줄 아래 메뉴의 오른쪽 끝 메뉴(도움말) 오른쪽 옆에 "몇초, 몇분, 몇일에 수정했습니다"라는 부분이 있습니다. 그곳을 클릭하면 과거에 수정했던 목록이 오른쪽에 나옵니다. 돌아가고 싶은 곳을 클릭한 후에 메뉴줄 부분에 '버젼복원'이라는 버튼을 클릭하면 복원이 됩니다.
    http://imgur.com/a/6HIFH <-- 구글버젼관리 방법 (그림을 한번더 클릭하면 큰그림이 나옵니다)

    그러고 보니
    git처럼 많은 기능을 구현할 수 없지만
    구글doc으로도 협업/버젼관리가 가능할 것 같습니다.
  2. 김수현
    지금부터 버전 관리시스템이라고 하는 것이 무엇인가에 대해서 살펴보겠습니다. 버젼관리 시스템이라는 말을 처음 들어보시는 분도 있을 거고요 이 말에서 뭔가 위협적인 느낌을 받으시는 분도 있을 겁니다. 버젼 관리시스템 옆에 제가 흐릿하게 적어둔 것처럼 버전 콘트롤 시스템이라고도 불러요. 줄여서 vcs라고도 하고 또는 형상관리라고도 하고, 소스관리라고도 합니다. 다양한 이름으로 불리지만 버전관리시스템이라 말을 저는 주로 사용을 합니다. 자 그럼 버전관리시스템을 도대체 무엇이냐 하는 것을 우리가 살펴보기에 앞서서, 다시말해서 구체적인 버전관리시스템 소프트웨어 머 git이라든지 서브버젼이라 든지 머큐리얼 뭐 CVS 이런 여러가지 제품들이 있습니다. 이런 것들이 다 버젼관리시스템에 속하는 제품들이라고 할 수가 있는데요. 구체적인 제품에 대한 얘기는 이번시간에 나오지않습니다. 이번 시간에는 여러분들이 그런 구체적인 제품들을 익히기 전에 버전 관리라는 것이 도대체 무엇인가를 이해 할 수 있는 내용으로 이번 시간은 구성을 해봤습니다. 일종의 오리엔테이션이라고 할 수가 있어요.

    버전이 무었인가를 한번 생각해볼까요? 쉽진 않아요. 버전이라고 하는 것이 딱 한 마디로 정의하기는 좀 어려운 말이지만, 전 이렇게 얘기하고 싶습니다. 어떠한 의미있는 변화들 자, 여기에서 중요한 것은 의미있는 변화라는 것이 중요합니다. 자 여기서 의미있는 변화들이 무엇일까요? 그리고 의미없는 변화는 무엇일까요? 예를 들어서 여러분이 프로그램을 만든다라고 했을때 거기에 있는 주석에 아주 의미없는 그런 내용들을 수정하는 거는 별로 의미가 없어요. 또는 여러분이 어떤 내용을 고치고 있는데 고치다가 화장실이 급해가지고 어디 나갔다. 완전히 완결 되지 않은 작업들 이런 것도 의미있는 변화라고 할 수 없죠. 의미있는 변화라는 것은 기능의 개선 또는 버그를 수정 했다든지 아니면 어떤 고객이 요구하는 사항에 맞게 여러분들이 만드는 소프트웨어를 커스터마이징해서 제공했다라든지. 자! 이런 것들이 바로 의미있는 변화들 다시말해서 버전이라는 것이죠. 그리고 버전관리시스템이라고 하는 것은 바로 이러한 변화들을 관리하는 체계, 소프트웨어 또는 방법론 이런 것들을 우리가 버젼관리 시스템이라고 부릅니다.

    자! 그런데 버젼관리 시스템이라고 하는 이러한 정의만으로는 여러분이 뭔가 제가 하는 얘기가 굉장히 뜬구름 잡는 듯한 이야기처럼 들릴 수 밖에 없어요. 그건 당연합니다. 그런데 여러분한테 버전관리시스템을 확 들이밀게 되면, 어렵게 느껴질 수가 있 습니다. 그래서 버전관리시스템이라는 것이 별게 아니다. 여러분들이 낳설게 느낄 것이 전혀 아니다라는 것을 제가 보여 드리기 위해서 유사 버전관리시스템들을 제가 소개해드리는 것이 이번 시간에 목표입니다. 현실에서 우리가 어떻게 버젼관리를 이미 하고 있었는지 한 번 살펴볼까요?

    자! 여기 ‘제품 설명서.txt’라는 파일이 있습니다. 이 파일은 켜고 쓰고 끈다라는 내용으로 내용이 적혀 있어요. 저 안에는 그래서 여러분이 만든 제품에대한 사용설명서라고 할 수가 있 습니다. 그런데 여러분이 이 내용을 좀 바꾸고 싶었어요. 좀 더 좋게 만들고 싶어서 이렇게 바꾼 거예요. 잘 켜고 막 쓰고 꼭 쓴다. 이런 식으로 기존의 제품설명서를 좀더 풍부 하게 여러분이 만들 어서 고객이나 또는 직장상사한테 컨펌을 요청한 거죠? 그랬더니 고객이 “돌려놔” 옛날 게 훨씬 좋아요. 이거 너무 장황하잖아요. 이런 얘기가 나오는 거죠. 자! 어때요? 힘드시죠. 회사 그만두고 싶을 수 있습니다. 이런 일이 항상 일어난다면 어떻겠어요. 그럼 여려분들은 고민을 하는 거죠. 회사를 그만둘 것인지 아니면 어떤 방법을 찾을 것인지. 그래서 여러분이 좀 더 긍정적인 사람이고 뭔가 방법을 찾는 것을 잘 하는 사람이라면, 아마도 이런 방법을 강구 하게 될겁니다. 보시는 것처럼 제품 설명서라고 하는이 파일의 이름에 다가 이렇게 숫자를 붙이는 거죠. 그리고 그 내용은 켜고 쓰고 끈다라는 내용입니다. 그리고 여러분이 새로운 내용을 바꿀 때는 고객이 이 내용을 옛날로 돌리라고 분명히 할 것이기 때문에 우리가 아무리 잘 해도 고객은 우리한테 우리가 하려고 하는 걸 하지 말라고 하는 가능성이 굉장히 크죠? 그렇기 때문에 아에 여기 있는 이 파일을 카피해서 새로운 파일을 만든 다음에 그 이름은 제품설명서2로 바꾸는 거죠. 그리고 거기에다가 이렇게 추가된 내용을 작성을 한다음에 그것을 클라이언트 또는 여러분의 상사에게 보여주는 거죠. 그러면 그 분이 좋다라고 하면 문제 없겠지만, 옛날 게 더 좋네요라고 하면, 그때 여러분은 그 앞에서는 정말 이거 다시 돌리는게 힘들 것 같다라는 표정을 짓고 그리고 돌아와서는 회심의 미소를 지으면서 제품설명서 1.txt 파일에 내용을 다시 돌려 주는 것이죠. 이렇게 문제를 해결 하는 것이 바로 버전관리를 이미 우리가 손으로 하고 있는 거라고 할 수가 있습니다.

    자 그러면 버전관리시스템에 조금 더 근접한 사례를 살펴보면, 위키피디아를 들 수가 있을 것 같습니다. 위키피디아 잘 하시죠? 전세계 수많은 사람들이 협업을 해서 집단지성을 발휘해서 어떤 백과사전을 만드는 아주 중요한 이 시대 아주 중요한 프로젝트라고 할 수가 있 습니다 이것은 위키피디아에서 한국을 찾아서 보여주는 페이지인데요. 여기 있는 이 내용은 어떤 한 사람이 작성한 게 아니에요. 굉장히 많은 내용이 담겨 있 습니다. 이것은 아주 많은 사람들이 그 안에는 심지어 익명의 사람도 포함이 되어있죠. 로그인 하지 않은 사람이란 뜻입니다. 아주 많은 사람들이 협업을 해서 이 내용을 완성 했고, 완성하고 있고, 앞으로도 계속 계속이 내용을 개선을 하게 될 겁니다. 그중에서도 우리의 눈길을 끄는 부분이 뭐냐면, 여기는 있는 역사보기라는 부분입니다. 여기 있는 역사를 따른 말로 하면, 버전 보기라고 할 수가 있어요. 자! 역사보기를 클릭해보겠습니다. 클릭하면 이렇게 여러 행들이 나옵니다. 여기 있는 행 하나가 바로, 하나하나의 버전이라고 할 수가 있어요. 그리고 누군가가 대한민국이라고 하는 페이지의 내용을 수정 할 때마다 저기 있는 한 줄이 생기는 거에요. 다시말해서 버전이 하나가 생기는 것이죠. 그래서 이 대한민국 페이지에는 이렇게 많은 버젼들이 존재해요. 수백 개의 수정 사항들이 있었다라는 것이죠. 그래서 여러분이 여기 있는 이 버전에서 만약에 가장 최근의 내용과 이걸 선택해요? 그리고 이전에 있었던 내용 뭐 2014년도 9월 2일 뭐 한 10전에 작성했던 내용을 선택 해서, ‘선택한 판을 비교하기’ 버튼을 클릭 하면, 어떠게 되냐 하면, 최신 버전과 이거 최신버전입니다. 그리고 예전에 9월 2일에 작성 했던 버전 사이에 어떤 차이점이 있는 가를 이렇게 시각적으로 보여줍니다.
    이전에는 보시는 것처럼 그냥 18대 라고만 되어 있었는데, 그 앞에 대한민국 제18대라고 내용을 변경한 것을 이렇게 우리가 쉽게 알아낼 수가 있다는 겁니다. 그래서 만약에 누군가가 작성한 내용이 악의적으로 편집된 내용이거나 또는 누군가가 치명적인 실수를 해서 내용을 홀랑 날려 버렸다고 하더라도 우리는 이런 비교할 수 있는 기능 또 과거로, 과거의 버전을 현재 버전으로, 최신 버전으로 다시 되돌릴 수 있는 기능, 이런 기능들을 이용해서 잘못 된 내용을 되돌릴 수 있다라는 겁니다. 그리고 이런 위키피디아 같은 컴퓨터 또는 웹이라고 하는 공간에 십분 활용한 이러한 시스템에게 있어서 버전관리라고 하는 것은 정말 본질적인 기능이라고 할 수가 있어요. 왜냐 누군가가 악의적으로 편집 하는 거에 대책이라고 할 수가 있는 것이죠. 그런 경우에 만약에 버젼관리스템이라고 하는 것이 위키피디아에 포함되어있지 안다면 위키피디아는 이런 시도조차 이런 시도를 할 생각을 하지 못 했을 겁니다.

    또 다른 사례를 하나 살펴보고 이번 시간 마치겠습니다. 드랍박스라는 것이 있어요. 드랍박스 라는 서비스를 아시는 분은 아실 거고 모르시는 분은 모르실텐데, 혹시나 구글드라이브 라든지 또는 네이버 N 드라이브, 또 다음 클라우드 이런 서비스들은 다 비슷한 서비스입니다. 드랍박스는 일종의 클라우드 스토리지 서비스, 여러분이 자신의 컴퓨터에다가 파일을 만들면 그 파일이 자동으로 드롭박스의 서버로 전송이 돼서 여러분의 딸은 장치들 컴퓨터에 저장된 내용을 노트북에도 똑같이 복사해 놓는다든지, 자 이러한 기능들을 제공하는 것이 드롭박스가 하는 일입니다.
    재미 있는 것은 드롭박스 사업계획서를 제가 옆에다 옮겨 놨는데요. 사업계획서의 내용을 보면, 서브버전에 대한 언급이 나옵니다. 서브버전은 버전관리시스템의 대표적인 제품 중에 하나라고 할 수가 있어요. 요기 있는 내용은 이 서브버전과 같은 버전관리 시스템이 가지고 있는 가장 중요한 장점들만 모아서 소규모의 그룹이나 일반인들도 사용할 수 있도록 만든 제품이 드롭박스다 라는 내용이 대충 들어가 있는 내용죠? 보시는 것처럼 제가 만든 사용설명서.txt라는 파일이 드롭박스 서버에 올라가 있는 상태입니다. 그리고 제가 여기 이 파일을 선택하면 자 무브밑에 프리비어스 버전스라고 하는 항목이 있어요. 요거는 이전 버전을 보고 싶다는 뜻이죠. 자! 요것을 선택을 하면 보시는 것처럼 버전 원투쓰리가 이렇게 나타 납니다. 그 중에서 커런트는 현재 상태 즉, 잘 켜고, 막 쓰고, 꼭 끈다라는 내용이죠. 그리고 버전 쓰리는 보시는 것처럼 켜고 쓰고 끈다라는 내용이고 버전2는 내용이 없습니다. 그리고 만약에 여러분이 예전 상태 버전 쓰리 상태로 이 파일에 내용. 사용설명서.txt 파일 내용을 원복 하고 싶다면 여기 있는 리스토어 버튼을 클릭 하기만 하면, 이 내용이 옜날 상태로 돌아가게 된다라는 것이죠.자 클릭해 볼게요. 자 그러면 사용 설명서 내용이 켜고 쓰고 끈다로 바뀐 것을 알 수가 있죠.

    자! 여기서 여러분들에게 이야기 하고싶은 거 두가지가 있습니다. 자! 첫번째는 여러분이 앞으로 버전관리시스템을 배우게 될 건데, 버전관리 시스템은 약간의 수련이 필요 합니다. 하지만 그 수련은 분명히 말씀드리지만 할만하고 여러분이 제대로 프로젝트 하기 위해서는 반드시 필요합니다. 그런데 그 수련을 지금할 시간이 없거나 또는 좀 너무 어렵게 느껴진다거나, 그럴 수 있어요. 그런 경우에는 여러분들이 버전관리 시스템을 시스템이 없이 프로젝트를 할 것이 아니고, 드랍박스 구글드라이브와 같은 이러한 이 버젼관리 기능을 가지고 있는 클라우드서비스를 이용해서 여러분의 소스코드를 반드시 안전하게 보관했으면 좋겠다는 겁니다. 그리고 그 소스코드가 어떤 문제가 생겼을 때, 이러한 기능들 이전 상태로 돌아갈 수 있는 이런 기능을 이용해서 심각 한 경우에는 옜날 상태로 원복 할 수 있는 그런 기능들을 기본적으로 아주 편리하게 제공하는 기능 들이기 때문에, 혹시 여러분들이 버전관리시스템을 사용하지 않는다손 치더라도 최소한 이런 써비스를 여러분들이 꼭 썼으면 좋겠다는 겁니다. 제가 소규모 기업들 에대해서 컨설팅 같은 거를 나가보면, 버전관리시스템을 쓰고 있지 않은 경우가 많이 있어요. 이를테면 cto분이 초창기에 혼자서 개발을 했었던 코드인데, 자신의 노트북에서만 작업을 한 거예요. 그리고 이게 어디 딴 곳에 복사되어있지 않은 상태에서 2년 정도 프로젝트를 한 거에요. 저는 그걸 보고 깜짝 놀랬어요. 만약에 컴퓨터가 고장 났다든가 분실되거나 침수 된다면 회사가 2년 동안 공들여 왔던 그 솔루션이 사라지게 되는 겁니다. 그럼 회사 문 닫아야 되는거죠. 자! 이것은 굉장히 중요한 문제기 때문에 아주 심각한 위험속에 노출되어 있는 거기 때문에 여러분들이 버전관리시스템 그리고 어떤 소스코드를 안전하게 보관 하기 위한 의미로서의 버전관리시스템, 이런 것들 에대해서 여러분들이 꼭 중요하게 생각할 필요가 있습니다. 그래서 다시 말씀드리지만 사용하기 어렵다 그러면 드랍박스라도 쓰세요. 구글드라이브라도 꼭 쓰시길 바랍니다.

    자! 이렇게 해서 제가 버전관리시스템이 무엇인가? 버전관리시스템을 왜 사용해야 되는가? 또는 그것의 대체재는 무엇인가?에 대해서 제가 말씀을 드리렸고요. 다음 시간에는 버전관리시스템에 대한 구체적인 제품들에 대해서 다음 시간에 살펴보도록 하겠습니다.

    자막작업 참여하실 분 참고하세요 > https://opentutorials.org......109
  3. Sangmook Kim
    170807 완료
  4. 헬리사우드
    갑들은 원래 짜증나죠 ㅎㅎ..
  5. 김명성
    2017.07.27 수강완료
  6. 2017.03.25 수강완료
  7. skychoy
    항상 감사합니다
  8. ym cho
    정말 많은 도움 받고 갑니다.
  9. 좋은 강의 감사합니다.
  10. 뭐지
    좋은 강의 감사합니다.
  11. 감사합니당><
  12. 류11
    출석 .. 강의 정성이 느껴집니다.
  13. 샤핀
    [git] 과거로 갔다가 돌아 오기 (특정 리비전으로 갔다가 되돌아 오기)
    http://mytory.net......78/

    이고잉 님 git 강의에 이 특정 버전으로 소스를 돌렸다가 다시 최신 커밋 소스 상태로 돌아오는 강좌도 꼭 필요할 꺼 같은데요. 강의 제작 요청 드립니다.
  14. 우오오오
    쓰라린 경험이 있어요. ^^
  15. 윤재영
    잘 봤습니다. ^^
  16. Sy Kim
    구글 드라이브에서도 버전관리는 따로 안하고 있었는데 습관화 할 필요가 있네요.. 매번 파일 이름에서 ver1.2.3.으로 키워갈게 아니라 구글드라이브에서 버전관리를 했으면 편했을것 같네요.. 오오오오..
  17. 이주환
    2016. 04. 29
    저도 프로젝트를 제 노트북에만 담아놓는데
    버전관리를 배우고 항상 사용하는 습관을 들여야겠습니다.
  18. 동w
    정말 감사합니다^^
  19. 도강
    감사히 잘 배우겠습니다!
  20. Joungmin Shin
    맨날 도강(?)만 하다가 오늘 가입했습니다. 감사하구요 열심히 배우겠습니다. ^_^
  21. NoName
    쉽게 잘 설명해주시네요.
    잘 배우겠습니다.
  22. 호노호노
    저희 컴공과 교수님 중 한 분이 egoing님 생활코딩 사이트를 소개하면서 굉장히 좋은 사이트라고 칭찬하셨어요.
    그 말 듣고 여기서 수업 듣고 있는 저 또한 왠지 모를 뿌듯함이 느껴졌답니다
    앞으로도 좋은 강의 부탁드리겠습니다
    감사합니다
  23. 하민우
    감사 합니다. 팀프로젝트 수업이 있는데 같이 하는 친구들이 Git 에 대해서 배워오라고 해서 검색하다가 여기 왔는데 기본 개념부터 알려주시니 너무 좋네요.
  24. 김창균
    강의 감사합니다.
  25. Leon
    강의 잘 들었습니다. 감사합니다.
  26. 곤잘레스
    좋은 강의 감사합니다.
  27. pej4303
    좋은 강의 잘 봤습니다. 감사합니다!
  28. 잘봤습니다.
  29. Wonil Shim
    정말 멋진 오리엔테이션이네요. Git뿐만 아니라 '강의' 자체도 많이 참고해야 할 것 같아요~
  30. generator
    아리까리한 내용이 깔끔하게 정리 되었네요. 덕분에 많은 시간을 아낄수 있을거 같습니다.
    감사합니다~
  31. 좋은 강의 정말 감사합니다!! 존경합니다
  32. 활활
    넥슨풋볼고딕체 같은데요 ㅎㅎ네이버에서 다운받으실수있어요 ㅎㅎ
    대화보기
    • 마인드
      폰트가 되게 예쁜데 어떤 폰트 쓰신거에요??
    • Welfare23
      WOW! I love you, Egoing! You really helped me understand how Git works!
      Thanks a lot for the nice video.
    • CrazyJune
      처음으로 git을 써 보기 위해서 열심히 공부시작합니다!
      감사합니다 이고잉님.
    • Pacman
      이곳 웹사이트 정말 좋은데요.
    • egoing
      옙 파워포인트 입니다!
      대화보기
      • david
        강의 정주행 시작합니다!
        드롭박스도 버전관리가 되는 줄 처음 알았네요 ㅎㅎ
        초반에 설명하시는 화면은 PPT로 만드신건가요?
      • egoing
        캠타시아 입니다!
        대화보기
        • now4it
          목소리도 너무 좋으시고
          내용도 상세하고 친절하고
          폰트도 예쁘고 화면도 미려하네요.

          감사합니다.

          PS 튜토리얼은 어떤 프로그램으로 제작하셨나요??
        • egoing
          아라한사님 감사해요 ^^
          대화보기
          • 아라한사
            새수업이군요. 저도 요새 강의 좀 업뎃중인데 소스되돌리기는거 좀 난감한 경우가 많아서 보려고 합니다. 잘 부탁드리구요 항상 감사합니다 :)
          버전 관리
          egoing
          현재 버전
          선택 버전
          graphittie 자세히 보기