로컬 저장소   

 

 로컬저장소는 git으로 버전 관리가 이루어질 내 컴퓨터 내에 있는 폴더를 말한다.

 

  [1. 로컬 저장소 생성]

 

    1. 컴퓨터 내에 작업할 프로젝트 폴더를 하나 만든다.

    2. README.md 파일을 하나 만든다. (내용은 자유)

    3. 폴더에 오른쪽 우클릭 후 git bash here을 클릭한다.(윈도우 기준)

    4. git bash 터미널 창에 git init 명령어를 입력한다. 

     

      $ git init

 

           - Initialized empty git repository라는 텍스트가 나오면 성공하며 프로젝트 폴더에는 .git이라는 폴더가

              자동으로 생성된다.

           - 이 폴더에는 버전들의 정보, 원격저장소의 주소 등이 저장되어 있고 이 .git 폴더를 로컬저장소라고 부른

             다. 

 

 

  [2. 정리]

       - git init 명령어를 통해 로컬 저장소를 만들면 그 때부터 이 폴더에서 버전 관리를 할 수 있다.  

 


 

   커밋(Commit) 하기   

 

 방금 생성했던 README.md 파일을 하나의 버전으로 만든다고 하면 Git에서는 이렇게 생성된 각 버전을 커밋(Commit)이라고 부른다.

 

 

  [1. 커밋 하기]

 

    1. git bash 명령어 창에서 다음과 같은 명령어들을 입력한다. (반드시 github 계정과 동일하게 입력)

 

       $ git config --global user.email "생성한 github "계정의 이메일"

       $ git config --global user.name"생성한 github "계정의 이름"

 

    2. 커밋에 추가할 파일을 선택하는 명령어를 입력한다.

 

       $ git add README.md

       - 수정된 파일을 모두 추가하고 싶다면 $ git add . 을 입력한다.

 

    3. 아직, 커밋할 파일만을 추가했지 진짜 커밋은 수행하지 않은 상태이다. 커밋을 할 때에는 상세 설명을 적을

        수 있으며 이 상세 설명을 적어놓음으로써 왜 이 파일을 생성했고 수정했는지 알 수 있고 해당 버전을 찾아 그

       버전으로 돌아가기에도 수월하다.

 

       $ git commit -m "README.md 파일 작성"

 

 

 

  [2. 수정하고 다시 커밋 하기]

 

    1. README.md 파일을 수정한다.

 

    2. 커밋에 추가할 파일을 선택하는 명령어를 입력한다.

       

        $ git add README.md

 

    3. 커밋 명령어를 입력한다. 

       

        $ git commit -m "README.md 파일 수정"

 

 

 

   다른 커밋으로 바꾸기   

 

 지금까지는 커밋이 2개가 생성이 되었고 README.md 파일은 두 번째 커밋의 내용이다. 이 파일을 다시 첫 번째 커밋 상태로 되돌리는 작업을 합니다.

 

  [커밋 바꾸기]

 

    1. 이제까지의 커밋 내역을 확인한다.

 

       $ git log

 

 

       - 두 개의 커밋 내역을 확인 할 수 있다.

       - 또한, git log 명령어는 최신 커밋부터 나타나는 것을 알 수 있다.

 

 

    2. 첫 번째 커밋으로 되돌리기 위해 첫 커밋 아이디의 앞 7자리를 복사하고 checkout 명령어로 해당 커밋으로

        되돌린다. 

 

       $ git checkout 89e861f

 

       

       - 다음과 같이 마지막 줄에 HEAD 절이 나오면 제대로 커밋된 것이다. 

       - 다시 두 번째 커밋으로 돌아가려면  $ git checkout b06801f 또는 $ git checkout - 을 사용한다.

 

 


 

   원격 저장소 생성 및 푸쉬(Push)  

 

  원격저장소는 git으로 버전 관리가 이루어질 github 웹 사이트 프로젝트를 위한 공용 폴더를 말한다. github에서는 레포지토리(Repository)라고 부른다. 

 

 

  [원격 저장소 생성하고 커밋 올리기]

 

    1. github에 로그인하고 상단 + 아이콘을 클릭한 후 [New Repository] 메뉴를 선택한다. 

    2. 옵션을 선택한 후 [Create Repository] 버튼을 클릭한다. 레포지토리가 생성되면 주소가 나온다.

        (필자는 https://github.com/daldalhada/git.git)

 

    3. git bash에서 로컬 저장소에 원격 저장소 주소를 알려주는 git remote add origin github 주소 명령어를

       입력한다.

 

 

    4. 로컬 저장소에 있는 커밋을 git push origin master 명령어로 원격 저장소에 올린다. 

 

 


 

   원격 저장소 커밋을 로컬 저장소에 내려받기(Pull)   

 

 원격 저장소의 코드와 버전 전체를 내 컴퓨터(로컬 저장소)에 내려받는 것을 클론(Clone)이라고 한다. 새로운 폴더(B)를 만들고 다음 명령어를 입력해 보자.

 

         $ git clone [git 주소] . 

 

 여기서 주의해야 할 점은 주소를 입력한 뒤 .을 붙이는 것인데 .을 붙이지 않으면 git이라는 새로운 폴더가 만들어지고 그 안에 파일들과 .git 폴더가 생성된다. 따라서, 반드시 .를 붙여서 현재 폴더 안에 작업할 수 있도록 해준다.

 

 클론 작업이 끝나면 원래 폴더(A)로 다시 바꾸고 README.md를 수정하고 다시 커밋하고 푸쉬해보자.

 

         1. $ git add README.md

         2. $ git commit -m "README.md 파일 수정2"

         3. $ git push origin master

 

  이 작업까지 끝나면 원격 저장소에 수정된 README.md 파일로 업데이트가 된다. 다시 새로운 폴더(B)로 바꾸어 pull 명령어를 사용하여 원격 저장소의 업데이트된 파일들을 로컬 저장소에 저장해보자.

 

         $ git pull origin master

 

 pull 작업이 완료되면 로컬 저장소의 파일들은 원격 저장소의 파일들과 동일한 버전이 된다.

'버전관리 > Git' 카테고리의 다른 글

1. 버전 관리란?  (0) 2020.08.27

 

   버전관리란 무엇인가?   

 

 한번쯤은 다들 Ctrl + Z를 이용하여 작업한 것을 전 단계의 시점으로 수정해본 적이 있을 것이다. 이전 단계로 되돌리는 것을 넘어서 내가 원하는 시점(버전)으로 이동할 수 있게 해주는 것버전 관리 혹은 소스 관리라고 한다.  이러한 "버전"을 통해서 시간적으로 변경 사항과 그 변경 사항을 작성한 작업자를 추적할 수 있다.

 

 

   버전관리가 왜 필요할까?   

 

 물론, 개인 컴퓨터에서 혼자 작업하고 변경하는 프로그램이라면 버전 관리가 필요없다. 개인이 작업해 놓은 것을 기억할 수 있고 남에게 알릴 필요도 없기 때문이다. 하지만, 팀 단위에서의 작업은 얘기가 달라진다. 팀 프로젝트에 참여 인원수가 많고 프로젝트의 범위가 넓어지고 기간이 길어질 경우에 에러가 발생했을 때의 지점을 확인하려고 하면 확인할 길이 막막해진다. 따라서, 여럿이 함께 작업하는 협업 프로젝트에선 버전 관리가 필요하다.

 


 

   Git의 등장   

 

 

 위에서 설명한 것들은 소스코드 버전 관리 시스템인 git을 통해 버전 관리가 가능해졌다. git은 데이터를 저장할 공간만 있으면 어디서나 사용할 수 있다. 이처럼 git으로 관리하는 프로젝트를 올려둘 수 있는 git 호스팅 사이트에는 github, gitlab, bitbucket 등 여러가지가 있다. 이 중에서도 github는 전 세계 최대 규모의 호스팅 사이트이다. github에 프로젝트를 오픈 소스로 만들면 전 세계 개발자와 협업할 수 있다. 

 

 

   Git 설치   

 

  (1) 윈도우

 

     1. https://git-scm.com/downloads에 접속해서 Download 버전 for Windows를 클릭한다.

     2. 설치 팝업창이 뜨면 [Next]버튼을 누르고 마지막 설치 화면에선 [View Release Notes]를 체크하지 않고

        [Finish] 버튼을 클릭해서 설치를 완료한다.

     3. git bash를 실행해 명령어 창에 git을 입력 후 제대로 출력되는지 확인한다. 

 

 

  (2) 맥/리눅스/유닉스

 

    1. https://git-scm.com/downloads에 접속해서 Download 버전 for 맥/리눅스/유닉스를 클릭한다.

    2. terminal을 실행해 명령어 창에 git을 입력 후 제대로 출력되는지 확인한다.

       (윈도우처럼 git bash를 설치하지 않고도 기본 터미널에서 CLI로 git을 다를 수 있다.)

'버전관리 > Git' 카테고리의 다른 글

2. 로컬, 원격저장소 만들고 활용하기  (0) 2020.08.27

 

   네트워크란 무엇인가?   

 

 

 보통 두 대 이상의 컴퓨터를 연결한 것을 컴퓨터 네트워크라고 하며 서로 통신하여 컴퓨터 간 필요한 데이터를 주고 받을 수 있다. 독립적인 컴퓨터에서 파일을 전송하려고 하면 메모리나 USB, 디스켓 등의 저장매체를 사용해야 하는데 네트워크 덕분에 오늘날 쉽게 전송하고 다운받을 수 있다. 

 

 흔히 PC나 노트북, 스마트폰, 프린터 기기 등 노드라고 불리는 종단장치와 라우터, 스위치와 같은 내부 장치들이 통신 링크로 연결된 형태이며 통신 링크에는 유선과 무선으로 나뉜다. 

 


 

   네트워크와 인터넷의 차이점   

 

 네트워크와 인터넷은 많이 헷갈리는 개념이다. 인터넷도 컴퓨터 네트워크의 일종이지만 구체적인 정의는 다음과 같다.

 

전 세계적으로 수억 개의 컴퓨팅 장치를 연결하는 TCP/IP 프로토콜 슈트로 구현된 컴퓨터 네트워크

 

 아직 TCP/IP에 대해 개념이 정확히 잡히지 않았지만 확실한 것은 인터넷도 컴퓨터 네트워크의 일종이라는 것을 알 수 있다. 결론적으로 인터넷은 네트워크간의 통신이며 통신을 하기 위해선 TCP/IP와 같은 프로토콜(통신 규약)을 사용한다. 그리고 우리는 인터넷을 이용하기 위해 크롬, 파이어 폭스, 사파리 등과 같은 웹 브라우저를 사용한다.

 


 

   패킷이란?   

 

 그렇다면 네트워크에서 어떻게 서로 정보를 주고 받을까? 바로 패킷(Packet)을 사용한다.

 

 패킷은 패키지(package)와 버킷(bucket)의 합성어로, 네트워크를 통해 전송되는 데이터의 작은 조각들을 말한다. 통신망을 통해 전송을 쉽게 하기 위해 큰 데이터도 작게 나누어서 보내는것이 규칙이다.

 

 왜 한번에 보내지 않고 작은 조각들로 나누어서 보내는 것일까? 대역폭(bandwidth) 때문이다. 대역폭이란 네트워크에서 수용 가능한 최대 전송 속도로 정보를 전달할 수 있는 단위 시간당 전송량을 뜻한다. 만약 한 데이터가 네트워크의 대역폭을 많이 점유한다면 다른 패킷의 전송 흐름을 막을 수 있기 때문에 아래 그림과 같이 곤란한 상황이 발생한다.

 

 

   분할된 패킷이 순서에 맞지 않게 들어온다면?   

 

 패킷은 헤더, 데이터, 꼬리(테일러)로 이루어져 있는데, 헤더에는 목적지의 주소와 순서 등이 테일러에는 에러에 대한 정보가 담겨있다. 이메일로 예를 들면, 우리가 전송하고자 하는 이메일을 적당한 길이로 분할하여 여러 개의 패킷을 만들고 각각의 패킷에는 순서에 해당하는 번호가 붙는다. 목적지에 대한 주소가 기록되면 에러에 대한 내용도 담기게 되고 목적지로 전송을 하게 된다. 전송된 패킷들은 목적지에서 다시 순서에 맞게 패킷을 원래 파일로 재조립하는 과정을 거치게 된다.

 

 


 

   네트워크의 범위(종류)   

 

    1.  LAN

        - 랜(LAN)은 근거리 통신망으로 보통 같은 건물 안을 범위로 하는 네트워크로 집이나 사무실과 같이 제한된 곳에서 컴퓨

          터나 프린터와 같은 장치들이 서로 연결된다.

   

   2. MAN

      -  맨(MAN)은 도시권 통신망으로 도시 정도 규모에 펼쳐져 있는 네트워크로 서울특별시나 한 대학교 캠퍼스를 예로 들 수

         있다.

   

   3.WAN

      - 왠(WAN)은 광역 통신망으로 지역적으로 넓은 범위에 구축된 네트워크로 랜과 랜을 연결한 것이라고도 볼 수 있다. 보통

        인터넷을 예로 들 수 있다. 아무래도 WAN은 LAN과 MAN보다 범위가 넓기 때문에 속도가 느리며 오류가 많다.

 


 

    기업에서의 네트워크(LAN)   

 

 기업에서는 조직의 내부 네트워크와 외부 네트워크(인터넷) 사이에 위치한 서브넷인 비무장지대(DMZ)가 존재한다. DMZ 내의 컴퓨터는 오직 외부 네트워크에만 연결할 수 있기 때문에 DMZ 안에 있는 호스트들은 내부 네트워크로 연결할 수 없다. 이는 DMZ에 있는 호스트들에게 외부 네트워크로 서비스를 제공하면서 DMZ 안의 호스트의 침입으로부터 내부 네트워크를 보호하는 역할을 한다. DMZ는 일반적으로 웹 서버, DNS 서버, 메일 서버와 같이 외부에서 접근할 필요가 있는 서버들을 위해 사용된다. 

 

 

 

 또한, 기업에서는 서버를 운영하기 위해 서버를 사내에 있는 랙에 설치하거나 데이터 센터를 따로 두거나 클라우드에 둘 수 있다. 사내 또는 데이터 센터에 서버를 두고 운영하는 방식을 On-Premise라고 한다.