개발공통

브랜치를 사용하는 이유

우리가 진행중인 프로젝트(opentutorials_git)를 하면서 동시에, 불확실하고 실험적인 작업을 동시에 진행할 수 있다.

만약 브랜치를 사용하지 않는다면, 실험적인 작업이 취소되었을 때, 이전버전으로 돌아가도 되지만, 그 부분만 도려내야하는데, 쉽지않다.

폴더를 복사해서 실험적인 작업을 진행할 수 있지만, 완료되었을 때, 원본에 붙혀넣기가 쉽지않다.

이 때, 우리는 브랜치를 사용할 수 있다.
브랜치를 통해서, 마치 2개의 폴더로 나눈 뒤, 각각 따로 작업하는 것과 같은 효과를 내면서 동시에 작업 완료후 실험적인 작업에서 변경된 내용을 원본소스에 간편하게 병합해줄 수 있다.


브랜치 만들기

index.html 파일에 대해, 일상적인 업무실험적인 업무가 있다고 치자.

일상적인 업무는 html코드에 ul태그를 넣는 것.
실험적인 업무는 head태그를 넣는것이라고 가정하자.

우리는 브랜치를 이용해서,
마치 프로젝트폴더를 2개로 복사한 다음, 하나의 프로젝트에서는 ul태그를, 다른 하나의 프로젝트에서는 head태그를 넣는 것처럼 사용해보자.

좌측메뉴의 Branches에는 master라는 현재 브랜치가 표시되어있다.
(기존 default로 만들어진 브랜치 이름이 master일뿐 바꿀 수 있다.)

  • 브랜치를 만들어보자.
    상단의 [ Branch ] 버튼을 누른 뒤, <실험>이라는 New Branch를 만들어보자.
    image
    image
    image

  • master인 상태에서, ul태그만 추가해서 commit해주자.
    image

    이제 ul태그안에 li태그를 추가해서 하나마다 버전을 나누어서 commit해주자.
    image


    위 그림을 보면, 실험branch는 뒤쳐져져있는 것을 확인할 수 있다.


  • 이제 [실험]브랜치를 더블클릭해보자. 이 때, 타임라인의 실험브랜치가 적힌 버전을 확인해주자.
    index.html파일를 확인해보자. ul태그랑 li태그가 사라져있다.

    image

  • 이제 이 상태에서, 실험적인 업무인 head태그를 넣어주고, commit해보자.

    image
    image

    타임라인의 그래프를 보자.
    [master]에서 commit한 3개의 버전은 분홍색으로 가고 있다.
    [실험]에서는 해당 버전의 프로젝트(h1태그 추가)로 돌아간 다음 --> head태그 추가 버전으로 파란색으로 가고 있다.
    *** (실험)head태그추가 와 (master) ul태그 추가의  부모는  둘다 동일하게   h1태그 추가인 것을 확인해두자.
    *** 추가한 브랜치 수만큼, [ 만들어준 시점에서 프로젝트를 복사해둔 효과 ] 가 난다는 것을 알 수 있다.
    my) 실제 윈도우 폴더에서 접근했을 때, 같은 파일이라도, 소스트리의 브랜치 선택상태에 따라 다른상태로 열린다.
    image
    image


  • 서브라임텍스트에서도 브랜치를 바꿀때마다, 같은파일의 내용이 변경되는 것을 확인할 수 있다.

    image
    image
  • Discard : 현재 파일수정후 저장된 상태에서,commit을 하지 않았다면, 다시 직전버전의 파일로 돌아갈 수 있다.
  • Reset - hard : 선택한 버전으로 돌아가고, 현재 파일상태와 상관없이, 그 이후의 버전+파일들은 다 삭제
  • Reset - mixed : 선택한 버전으로 돌아가고, 현재 파일상태는 uncommited changes로 남겨둔다.
  • Revert(Reverse) : <최근버전부터 순차적으로> 선택한 버전을 취소하지만 Revert로 새로만들어남겨두고, 그 직전버전으로 돌아간다.
    - 타임라인(Repository)에 Revert가 있다면-> 그 직전버전으로 돌아간 것

git의 Revert = 소스트리의 Reverse commit 을 이용하여, 취소할 버전을 남겨두고 직전버전으로 돌아가자.

Reset은 선택버전 이후의 버전들은 모두 삭제하고, 선택한 버전으로 돌아간다. 파일유지만 Hard(삭제)/Mixed(유지)로 결정해준다.
Revert는 취소할 선택버전을 남겨둔 체, 그 직전버전을 [ Revert + 취소버전]이라는 이름으로 새로운 버전을 만들어준다.
(즉, Revert 버전  = 그 버전의 이전 버전으로 돌아간다.)

타임라인에서 취소할 버전을 선택한 뒤, 우클릭 > [Reverse Commit] 을 통해, 직전 버전새로운 이름[Revert 취소버전]으로 만들어준다.
image
image


이름은 [ Revert 취소한 버전 ]이지만,  취소버전의 직전버전[body태그 추가]으로 돌아간 상태라,
수정해준 index.html이 다시 돌아가고, 추가해준 README.md가 삭제되었다.
image


만약, 더 이전버전으로 돌아가고 싶다면, 최신버전부터 -> 취소할 버전까지, 순차적으로 계속 revert를 해줘야한다.
image

예를 들어서,  아래의 상태에서, html태그 추가 버전까지 다 취소하고 싶다면,
[reset-mixed] revert -> [body태그 추가] revert -> [ html태그 추가] revert 후, ===> index.html버전에 도착하게 된다.
image

해석을 하자면 ) Revert "특정버전" ---> 특정버전하기 전으로 돌아갔구나!
[html태그를 추가]하기 전으로 돌아갔구나!


만약 순차적으로 revert안한다면, 충돌이 일어날 수 있다.

Repository(타임라인)에서 Reset to Current  - Hard을 이용해, 지난 버전+지난파일로 되돌아가기

Reset to current branch에서  current란,, 선택한 지난버전을 의미한다.

타임라인(repository)에서 되돌아가고 싶은 버전 [body태그 추가]을 선택하고,
우클릭 >  [ Reset to current branch ]를 선택 한 뒤, [ Hard - ~ ]를 선택하면
[body태그 추가] 버전 이후의 모든 버전들이 삭제되고, 아직 commit하지 않은 내용, stage에 올려놓은 내용도(파일들도) 모두 사라진다.

image
image
image


실제 파일 [index.html]도 body태그만 추가한 상태로 되돌아갔고,
image

README.md파일도 사라졌다
image

선택버전 이후의 모든 내용 + 파일이 다 사라지니, 조심해서 사용해야한다.



다시 최신버전으로 수기로 대충 만들어보자. html>body>header>h1태그 + README.md

Reset to current - Mixed로 지난버전으로 되돌리면서, 현재파일은 유지하기

어떤 웹서버를 관리하다가 인증정보를 모르고 파일에 넣어 오픈소스로 풀려버렸다.
이 때, 지난버전으로 되돌리면서, 현재 수정중인 파일들은 유지(working area 유지)하고 싶다면 역시 reset를 이용하면 된다.


타임라인(repository)에서 되돌아가고 싶은 버전 [body태그 추가]을 선택하고,
우클릭 >  [ Reset to current branch ]를 선택 한 뒤, [ Mixed - ~ ]를 선택하자.
마찬가지로, [body태그추가 버전] 이후의 버전들은 삭제되지만, 현재 작업중인 파일들은 유지가 되어, Uncommitted changes남아있다
특히, 작업중인 파일들이 없을 때로 돌아가면, 버전관리가 안되는 것 같이 [보라색]으로 유지된다.
image
image
image


Mixed/soft/hard의 차이점에 관해서는 다음에 이해하자.

Discard 버튼을 이용해서, 수정사항(추가 혹은 삭제한 코드) 취소하기

어떤 파일을 수정했는데, 아직 commit하진 않았을 때,  discard를 이용해서 가장 최근에 commit한 버전으로 파일을 되돌릴 수 있다.

기존의 index.html 파일에 body태그 안에 있던, header태그를 제거하는 수정을 해주자.
image

소스트리에서 수정사항을 감지하 곳에서, 제거한 부분은 (-) 빨간색으로 표시된다.
image

갑자기, working area에 있는 index.html의 삭제한 저 빨간줄을 다시 복구하고싶다
상단의 Discard버튼을 눌러보자.
image
image
index.html파일을 선택후, discard changes를 눌러서 수정사항을 취소한다.

그러면 아래와 같이, unstage에서 수정을 감지한 index.html이 사라져있고,
실제 파일에서 가장 최신버전의 index.html로 돌아와있다.(지웠던 header태그가 살아나있다)
image
image

staging files(index 혹은 staging area)에서도 discard가 먹힌다. 커밋전에 수정사항취소후 되돌리기는 다 가능.

commit하기 전에, 지금 작업한 내역을 review하는 버릇을 가지자.
working area/staging area(index)의 초록줄/빨간줄은 최종적으로 되돌릴 수 있는 순간이다.

commit으로 버전을 만들었으나, 코드의 변화만 볼 수 있지, 과거의 프로젝트 상태로 돌아갈 순 없다.

  • 새 파일을 만들어보자. sublimeText를 켜고, 루트폴더인 opentutorials_git에 우클릭으로 [readme.md]파일을 만들어보자.
    image

  • 소스트리(버전관리)로 들어가보면, [ Log/Histroy ]탭에는 uncommitted changes가 감지되었고
    unstaged files파일에, 생성하고 수정한 readme.md파일이 감지되었다. 아이콘이 물음표인 것을 기억하자.
    image

    index.html 파일의 body태그안에 수정하고 소스트리를 보자. unstaged files에 index.html로 걸려있지만
    아이콘이 연필모양이다.
    image

    image
    이 2개 아이콘이 다른 의미는 버전관리(소스트리)에서는 다르게 인식하고 있다는 것인데,
    index.html파일의 [주황색연필]아이콘은 git에 의해 추적되고 있는 파일로서, commit으로 버전을 만들어 저장소에 보관이 가능하다.
    readme.md파일의 [보라색물음표]아이콘은 git에게 파일을 추적하고, 관리하라고 명령하기 전의 파일이다.
    - stage위로 올리고 -> [최초커밋]을 통해, 버전을 만들어야지 [git의 추적]이 시작된다.


  • 새 파일을 stage위에 올린 뒤, commit버튼을 눌러 버전을 만들자.
    이 때, commit은 stage위에 올라와있는 readme.md파일만 commit이 된다.(index.html은 안됨)
    imageimageimage

    마지막 버전확인시, [초록색+]는 이 버전에서 추가한 파일이라는 뜻이다.
    다시 uncomiited changes를 더블클릭해 돌아와보면, unstage에는 index.html만 있다.
    image



  • 이제 변화가 생겨 unstage에 감지된 index.html과 readme.md를 stage에 올리지않고 다시 수정해보자.
    index는 h1으로 큰제목의 태그를 달고, readme는 문자몇개 수정한다.
    그리고 2개를 한꺼번에 stage에 올리고, commit해보자.
    image
    하나의 버전에는 여러개의 파일의 변경사항을 모두 포괄할 수 있다.

  • 다시 2개 파일을 수정한 뒤, 각각 따로 stage에 올려서 commit하여 버전을 만들어보자
    비록 2개 파일의 변동사항이 있지만, 하나의 파일 수정사항에 대한 버전을 만들 수 있다.
    imageimage

    readme.md파일은 여전히 commit되지 않은 체, unstage에 남아있다.
    image

    unstaged와 staged 공간의 차이가 드러난다.
    -unstage : 수정된 모든 파일들의 목록이 표시되는 공간
    -stage : commit시 만들어질 버전에 합류할 파일들만 모아놓은 공간. 중간단계!
    staged라는 중간공간을 통해서 변경사항들 중에서, 필요한 or 완결된 or 연관된 파일들만 모아서 하나의 버전(commit)으로 만들 수 있다!!


[git]에서는 소스트리의
unstaged를 [workingcopy]
staged에 올리는 작업을 [add]
staged를 [index 혹은 staging area]
버전들이 표시되는 타임라인을 [repository]라고 부른다.

즉, working copy에 있는 수정된 파일들을 add해서 index 혹은 staging area에 올려놓고,
commit을 통해 하나의 버전을 만들어 repository에 저장한다.
image


  • 하나의 파일이라도, 중간단계인 staging area에 있는 상태에서, 다시 수정되면 working copy에 감지되어 올라온다.
    image

1. [윈도우키 + R]로 실행창을 켜서 [  netplwiz  ]를 입력한다.


2. 나타나는 사용자계정 설정창에, 암호입력하여 로그인하는 체크박스를 [체크해제]후 적용을 클릭하자


3. 이제 암호없이 자동로그인을 하기 위해, 비밀번호 인증하라고 나온다. 기존에 사용하던 비밀번호를 입력해서 인증해주자


4. 계정의 암호를 제거했다면, 이제 윈도우설정 > 사용자정보 > 계정으로 가서
  마이크로소프트 로그인을 -> 로컬 계정으로 로그인하도록 하자.

  비번을 제거한 로컬계정으로 로그인하게 되어, 비밀번호도 제거했으니 자동로그인 될 것이다.


5. 제거 확인은 win키 + L 을 눌려서 확인하자

Git을 이해하기 위하여, 예제부터 이해하기


Git 저장소(프로젝트의 메인폴더) 만들기

  • 언어를 영어로 바꿔주자.
    소스트리를 켜고,  도구 > 옵션 > 언어를 english로 바꾸자. 참고할 대부분의 자료들은 영어로 되어있기 때문이다.
    재실행해야지 바뀌어 진다.
    image

    [ create]버튼을 눌러서 repository( 저장소 )를 만든다. 한 프로젝트의 디렉토리(폴더)이다. 그것을 git에서는 저장소라 부른다.
    타입은 git으로 고정해두고, destination path 프로젝트의 디렉토리가 어디에 생성할 것인지 지정하는 것이다.
    나는 데스크톱의 cho폴더(C:\Users\cho)에서 폴더에 [ opentutorials_git] 라는 저장소(프로젝트의 폴더)를 만들 것이다.
    image

    소스트리에 프로젝트 폴더(저장소)가 생성된 것을 확인할 수 있다(탭의 이름)
    image


소스트리로 버전관리 해보기

  • SublimeText의 루트폴더를 추가해주자.
    project > Add folder to Projects > 소스트리에서 만든 저장소(프로젝트의 최상위폴더)를 선택
    image

  • 저장소에 수동으로 새로운 파일을 추가해보자.
    저장소(프로젝트 폴더)에서 우클릭으로 생성해도 된다. 여기서는 서브라임텍스트를 이용해서, 지정한 root_폴더에서 파일(index.html)을 생성해보자. 아래 그림과 같이 소스트리에서 해당파일이 [unstaged files ]의 목록에 자동으로 생성된다.
    image
    즉, 저장소(프로젝트 폴더)에서 일어나는 일(파일생성, 삭제 등)을 계속 주시하고 있다가, 변화를 알아채고 바로 띄워준다.

  • 버전관리를 해보자.
    보라색의 물음표의 파일 우측상단에 [Stage All] 이나 [Stage Selected]를 클릭해보자. 아래그림과 같이  [ Staged files]로 올라가면서 초록색 플러스아이콘으로 바뀐 것을 확인할 수 있다.
    image

    이제 초록색 플러스아이콘인 Staged된 index.html을 선택한 뒤, 좌측상단의 Commit 버튼을 눌러보자.
    커밋을 적는 란이 생긴다.  파일을 생성했다고  커밋을 남겨보자.
    커밋이란 ? 버전하나를 만드는 행위이다. ( 만약 커밋사용자의 정보가 없다면 Tools 에 들어가 지정해주자)
    커밋 후 확인은 하단의 [Files Status]탭을 [Log /History]탭으로 바꾸어주면 된다. (혹은  [ BRANCHES ] > master 에 들어가면 확인할 수 있다.)
    image
    commit을 통해서 버전을 최초로 만들었다.

  • 새로운 버전을 추가하기 위해서 파일을 수정해보자.
    index.html파일을 수정했더니 소스트리에 [Uncommiteed changes]가 관찰되었다.
    image
    image

    commit을 통해 새로운 버전을 만들었는데, uncomiited changes는 아직 버전을 만들지 않은 변화가 있다는 뜻이다.
    버전을 만드는 방법은 [Unstaged files] 를 Stage 하여 —>  [ Staged files]에 올린 뒤 –> [commit버튼]을 눌러 버전 정보를 작성해주는 것이다. 방금 한 작업인 html태그 추가를  적어주면서 commit을 눌러 버전을 만들어주자.
    imageimageimage

    아래그림 처럼, BRANCHES에서 새로운 버전(commit)이 생성된 것을 확인할 수 있다.
    커밋 후 확인은 하단의 [Files Status]탭을 [Log /History]탭으로 바꾸어주면 된다.
    image

  • 버전들을 탐색해보자.
    위에서 만든 commit들(버전들)을 확인해보자. 처음에는 내용이 없는 html파일을 생성했으므로, 
    우측에는 아래와 같이 텅빈 화면으로 나타난다.
    image

    2번째 버전에서는 html을 추가한 것에 대해 [ 녹색으로 이전버전에 비해 추가된 코드를 표시 ]해 주고 있다.
    image

    3번째 버전에서는 body태그를 추가하였다. 녹색으로 추가된 부분이 표시 될 것이다.
    image


파일의 변형 –> commit으로 버전으로 만듬 –> 버전 탐색의 과정이었다.

소스트리 : 명령어 기반으로 사용하기 쉽지않은 git을, 그래픽 환경에서 쓸 수 있게 해주는 프로그램.


git 설치

  • 구글에서 git download를 검색하여, 공식사이트에서 다운 받고,  default설정으로 설치한다.
    image

  • 설치하고 난 뒤, 시작메뉴에 보면 Git Bash 아이콘이 생긴다. 클릭해서 열어보면, 유닉스/리눅스 환경과 비슷한 환경에서 윈도우를 제어할 수 있다. [ git ]이라고 쳐서 명령어들이 출력되면 정상적으로 설치 된 것이다.
    image
    image


sourceTree 설치하기

  • 구글에서 sourcetree download를 검색해서 default로 설치한다.
    설치과정에서 Atlassian에 가입을 했고, 구글아이디를 이용하였다.
    image
    image

    동시에 비트버킷에도 가입하였다. 위에서 사용한 Atlassian계정으로 연결하고 비트버켓 닉네임은 nittaku로 하였다.
    image
    image

1. 버전 관리란?

2018. 3. 13. 21:08

버전 관리 시스템(Version Control System)

버전 : 의미있는 변화들 = 기능개선 및 버그 수정
버전관리 시스템 : 이러한 변화들을 관리하는 방법론 ( 이전버전으로 바로 돌아갈 수 있다 !)


유사 버전관리 시스템

제품설명서 :
- 제품설명서1을 복사해놓고 수정하여 제품설명서2를 만든다. 마음에 안들면 되돌릴 수 있다.
image

위키피디아 : 집단지성으로 전 세계사람들이 협업하여 백과사전을 작성
- [ 역사보기 ] 탭의 하나하나의 행이 하나의 버전이라 볼 수 있다. 악의적인 편집에 대해 예전버전으로 되돌릴 수 있다.

DropBox : 구글드라이브나 네이버N드라이브처럼, 파일을 올릴 수 있는 클라우드서버 제품
- subversion과 같은 버전관리시스템의 장점만 모아서 일반인들도 사용할 수 있는 제품이다.
- More > Previous versions를 통해 버전 관리를 확인할 수 있고 –> restore버튼으로 예전버전으로 되돌릴 수 있다.
image
image


git을 못쓰겠다면, dropbox구글드라이브를 반드시 사용할 것!

1. 네이버에서 [ classic shell ]을 검색하고 다운 받는다.

2. 설치 시, 다른 항목을 [x]를 만들고, 시작메뉴( Classic Start Menu)만 설치하도록 한다.
image


3. 설치 후 [ Start menu Style]에서  윈도우7Style을 선택한다.

image

image


4.  [ Skin ] 탭에가서 원하는 스킨을 지정해준다. 윈7에 가까운 것은 [Windows Aero]스킨이다.

image

image

1. 깃헙 회원가입

첫화면에 보이는 곳에 모두 작성하고 singup을 누른다. 다음화면에서는 개인공간이 필요하다면 결제하라는 것이 나오는데 무시하고 submit해준다.

등록한 이메일로 들어가서 verify해준다.


2. 프로필 꾸미기

우측 상단에 Profile에 들어가 edit profile을 선택한다.

Name / 사진업로드 / Bio(자기소개) 정도만 적어서 update해준다.


3. Git(깃) 설치하기

구글에 git download 를 검색해서git for windows 사이트에 들어간다(http://gitforwindows.org/)

download버튼을 눌러 다운받고 설치한다.


4. 깃 저장소 만들기

프로필 왼쪽의 + 버튼을 눌러서 Create a new repository 페이지에 온뒤 repository name만 적어준다. 설명은 안적어도 된다. 바로 create


5. 저장소에 commit 준비 

빈 폴더를 만들고, 해당폴더에 터미널을 열어줘야한다. 윈도우의 경우 해당폴더에 우클릭하면, git BASH 모양이 뜰 것이다.

나같은 경우 안드로이드 프로젝트 폴더에 GitTest라고 만든 뒤, 폴더에서 우클릭하여 Git BASH를 띄웠다.

여기서 명렁어 git init을 치면, 깃을 사용할 준비가 된 것이다.(master)표시가 나옴.


 -git init


이제 github 저장소로 가서, 서버에 원격위치를 알려주는 명령어를 저장소<code>탭에서 복사해 온다.


 -git remote add origin https://github.com/is2js/test.git


그 다음 현재 git에 저장된 상태를 알려주는 git status를 쳐본다.  아직 커밋한것이 없다고 뜬다. 커밋하지 않았으니.. 커밋은 의견제공 정도다.


-git status


6. 파일 추가(add)하기(git 서버에  add)

지정된 폴더에 아무 파일이나 만들어준다. 교재대로, test.php를 하나 만들어준다. 그리고 다시 Bash에서 git status를 쳐보자. 

-git status


그럼 빨간색으로 test.php가 뜰 것이다. untracked라고 해서 아직 관리하지 않는 파일을 의미한다. 이 파일을 git서버에 add해주자.  또는 git add . 을 쳐서 모든 파일을 add해주자.


-git add test.php or git add . 


다시 git status를 쳐보면 초록색으로 add된 new file이 뜬다. 이제 여기서 test.php를 폴더에서 수정해보고 다시 git status를 쳐보자. 빨간색으로 수정되었으니 새로 add하라고 뜬다.  git add . 을 쳐서 다시 관리대상으로 만들자


7. 커밋(의견남기기)하고 푸쉬(github에 저장하기)

(1)커밋하기 전에 git에 자신의 정보(email과 name)를 알려주어야 한다.


-git config --global user.email "is2js@naver.com"

-git config --global user.name "is2js"


(2)이제 커밋을 해보자

-git commit -m 'test(의견)'


(3) 처음에는 master라는 브런치를 가진다. 그것을 이용해서 github에 push(저장)하는 것이다. 아래 명령어를 치면 github로그인 정보를 입력하도록 뜬다. 입력하고 repository에서 확인해보자.

-git push -u origin master


8. 깃허브 소스관리

(1) 기존 파일을 수정한 뒤, git status를 해보고, modified가 확인되면, git add . 으로 다시 git서버에 add해보자.

(2) 다시 커밋(의견)을 하고 푸쉬(깃헙에 저장)를 해보자.


-git commit -m '2th test'

-git push -u origin master


(3) 깃헙 사이트에서 commits를 확인해본다.


9. 브런치

브런치는 복사본은 아니나 임시저장소 같은 느낌

(1) git checkout -b beta 라고 쳐서, beta라는 이름을 가진 브런치를 만들어서 이동한 뒤(생성과 이동이 동시에 됨)

(2) git branch 를 통해 branch상태가 master에서 beta로 이동한 것을 확인 할 수 있다.

-git branch


10. 새 브런치 beta에서 파일을 새 파일을 커밋, 푸쉬 한

(1)GitTest폴더에 새로운 파일을 하나 만든다. test2.php 

(2) git status를 통해 확인 후, add . 하고, 커밋으로는 베타브런치임을 알려준 뒤, 푸쉬 해준다. 푸쉬할때는 새로운 branch이름으로 푸쉬해준다.


-git status

-git add .

-git commit -m 'beta branch'

-git push -u origin beta


(3) 깃헙사이트에서  Branch 선택창에서 beta를 선택해 확인해본다.


11. 실제 사용하는 브런치인 master로 옮기기(merge)

(1) 먼저 터미널에서 git checkout master를 통해 master브런치로 넘어온다.


-git checkout master


(2) git merge beta 를 입력하면, beta브런치에 있던 것들이 모두 master로 이동해온다.(git 서버에만 옮겨진 것임)


- git merge beta


(3) 이제 깃허브에도 적용해주기 위해, push를 해주자.(add(git)->commit + push(github), merge(git)->push(github))

- git push -u master 


(4) 사이트에서 beta브런치에 push한 test2.php가 master브런치로 옮겨가진 것을 확인한다.

1. 제어판> 파일 탐색기 옵션 > 보기 탭>  '숨긴 파일, 폴더 및 드라이버 표시' 체크


2. C:\User\내 이름\ 에 가보면 AppData 라는 폴더가 보이게 됨


3. Local > Temp 에 있는 내용 모두 삭제


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

1. 윈도우 키 눌러서 디스크정리 검색


2. c:\ 디스크 정리

○ ISP(Internet Service Provider) : KT나 SKT처럼 인터넷 서비스를 판매하여 공급해주는 업체를 생각하면 된다

 - 일반 가정집 [HOME]에서는 [ISP]( KT 또는 SKT인터넷)에서 1개의 '유동'IP를 제공받는다. (고정IP는 비싸다)

 - 일반 가정집은 유동IP이기 때문에, 서버를 만들려면 저번 포스트의 DDNS를 사용해서 구축할 수 있다. 더 쉽게 하려면 호스팅업체(cafe24 등)에서 구매하여 고정&공인IP를 제공 받는다.




○ 유동IP 변경 방식

 - KT에서 인터넷을 신청하면 --> 유동IP가 할당 --> 공유기 연결시 : 121.129.87.55

--> PC 바로 연결시 : 168.126.35.122


 - 이렇게 차이나는 이유는 유동IP가 MAC주소를 토대로 바로바로 아이피를 할당해주기 때문에, 각 컴퓨터나 공유기 등의 장치마다 고유주소(MAC주소-물리적 주소)를 가지고 있어서 연결하는 장치마다 다른 IP가 할당되는 것이다.


○ NAT(Network Address Translation) : 공유기가 하나의 공인IP를 여러개의 내부망 사설IP들로 나누는 기술

 - 사설IP를 사용하여, 내부망을 공유기 외부로부터 보호한다. 공유기까지는 (공인IP)는 전세계 40억개 밖에 주소를 할당 못하니, 사설IP를 만들어서 부족한 수를 해결한다.



○ 나의 IP주소 알아보기

 - CMD창에서 ipconfig 입력시 나오는 'IPv4'를 확인한다. cf) ipconfig /all 입력시에는 DNS서버의 아이피까지 확인가능
 - 사설IP(내부망)이라면 각각의 대역이 정해져있다.
A : 10.0.0.0 ~ 10.255.255.255 까지
B : 172.16.0.0 ~ 172.31.255.255 까지
C : 192.168.0.0 ~ 192.168.255.255 까지 ---> 웬만한 공유기가 제공하는 사설IP 대역이므로, 대부분 이러한 아이피를 가지고 있을 것
  - 사설IP의 단점 : 외부에서 내 컴퓨터를 찾을 수 없다(공유기라는 라우터(공인IP) 속의 내부망안에 갖혀있기 때문), 
  - 사설IP(공유기 속 내부망)에서 서버를 구축하려면 '포트포워딩'을 이용한다.

○ 포트포워딩

 - 공유기(라우터, 공인IP)는 포트포워딩을 통해서 그 속의 사설IP를 가진 각 컴퓨터에 포트번호를 지정해서 구분하도록 함.
  -> 192.168.0.3의 사설IP를 가진 컴퓨터가  웹서버를 구축한다면,  공유기는 외부접속을 포트80으로 지정해서 보내줄 수 있다. 그렇게 된다면 사설IP(내부망)도 서버로 사용이 가능해짐.



○ 내부망에서 2개이상의 웹서버의 운용

 - 포트포워딩을 통해 포트80, 포트81로 지정해서--> DNS 서버에는 다른 도메인으로 등록해준다.


○ IP대역의 중복

 - 내 공유기속 내부망의 사설IP와 다른 외부의 공유기속 내부망 사설IP가 같을 수 있다(A, B, C대역으로 정해져있었다. 보통 가정집은 C대역)

   그러나, 통신은 공유기(라우터, 공인IP)를 통해서 하기 때문에 상관없다. *사설IP를 인위로 바꿔서 외부의 공인IP랑 겹치는 일이 없도록 하자



○ IP추적

 ● 나의 IP를 확인하는 방법 : 네이버에서 '아이피 주소'를 검색해서 확인한다. - 내부망 내 사설ip가 뜬다.

 ● 나의 공인IP 확인하는 방법은 IP확인 사이트를 들어가서 확인해야 한다. findip.opendocs.co.kr

- ISP(KT나 SKT)가 뜨고, 아래에는 USER의 정보가 뜬다. 요 근래에는 ISP급으로 나온다. 사설IP까지 나오려면 경찰동원으로...

○ IP(Internet Protocol) : 인터넷에서 다른컴퓨터와 통신할 때 쓰는, 프로토콜

 ex> 1비트는 0과 1이나 2^1개라 하면, 현재 IP는 32비트로 2^32 : 40억개의 주소를 표현할 수 있다.


○ 웹사이트 접속 :  

 [Broswer]    ---도메인주소(www.dshani.org)-->    [DNS server] : IP변환--> [Broswer]

  ● 도메인주소를 실제IP로 변환해서 보는 방법 : CMD창에서  'nslookup naver.com' 



○ IP 주소체계

 - IPv4 : 지금 흔히 사용하는 IP주소체계로, 버전이 4이다.  40억개 주소만 생성

   ex> 192.168.0.1 

 - IPv6 : 버젼6으로 버젼4의 40억개의 주소로 모자란 것을 대체할 것이다.


○ IP의 분류(4)

  1. 공인IP : 세계 단 하나뿐인 IP, [ 공유기의 '라우터' ]

- 바뀌면 안되는 CLIENT<->SERVER간의 서버IP가 공인IP에 해당해야한다. 바뀌면 안된다.

● 서버를 유동IP로 구축할 경우 : 

Dynamic DNS(DDNS)로, 사용자가 도메인주소로 접속할 때, IP를 할당해주는 DNS서버 자체가 실시간으로 바뀌는 유동IP를 가지고 있어서,

client가 요청시에 할당된 ip를 실시간으로 뿌려준다.

●DDNS의 원리 : 서버--> DDNS server에게 특정주기로 바뀐ip주소를 알려줌.

                       DDNS server는 client에게 그 바뀐 ip를 제공해준다.


  2. 사설IP : '공유기'를 이용해서 만들 수 있는 각 컴퓨터의 '가상' 의 IP주소 , [ '내부망' ]

- 공유기로 연결된 내부망에 적용되는 IP

- 사설IP(공유기에 연결된 컴퓨터의 가상IP)가 외부와 통신하기 위해서는, 공인IP인 '라우터'를 거쳐서 다른 공인IP(라우터)를 통해서 다른 사설IP와 통신한다.

  즉, 한번에 사설IP가 다른 사설IP와 통신 할 수 없다.




  3. 고정IP : 컴퓨터가 고정적으로 사용하는 IP

  4. 유동IP : 수시로 변하는 IP


조재성) 공인=라우터, 사설=내부망, 유동=변하는, 고정=변하지않는 으로 해석한다.

+ Recent posts