- 하나의 버전은 모든 변경사항들을 포괄 할 수 있음

- Uncommitted changes가 뜬다면 커밋할 무엇인가가 있다는 의미.

  (즉, 로컬 래파지토리에 변화가 일어났다는 것을 의미.)


Unstaged files

로컬 래파지토리에서 수정된 파일이 존재하는 공간 --> Working copy

체크를 하게 되면 Staged files로 이동하게 된다.


Staged files

커밋이 되었을경우 버전으로 생성될 파일들을 갖고 있는 공간 --> Index 또는 Staging area

Unstaged files에서 Staged files으로 이동(체크)하는 행위를 의미하는 용어 -->add

커밋을 하게 되면 Staged files에 있던 파일들을 저장소로 올리게 되는데, 그러면 버전이 하나 생성된다.

각각의 버전들이 저장되어있는 공간을 Repository 즉 저장소라 부름.

즉, working copy 공간에 있는 파일들은 무시되고, index에 존재하는 파일들만 Commit할 수 있다.




정리하면, 아래와 같은 상황일때;.

Uncommitted changes 이 맨 위에 뜬다면,  로컬 래파지토리에 뭔가 변화가 생겼다는 것을 의미한다.

클릭을 해보면 밑에 변화된 파일들의 목록이 나오게 된다.

여기서 변화란 기존에 있는 코드의 수정일 수도 있지만, 파일 생성 또는 제거를 한 것도 포함된다.

아래에서는 index.html파일만 커밋하기 위해 한 개만  add시켰다.




하나의 파일이어도 index(staging area)에 올려져있는 파일을 수정하면 Working copy에 동일한 이름의 파일이 생성된다. 즉, 동일한 파일이어도 위치에 따라 코드가 다를 수 있다.

그리고 커밋을 하면 index(staging area)에 올려진 코드는 커밋되지만, Working copy에 있는 파일은 그대로 남아있다.



<커밋 전에 수정사항 취소하기>


Discard

Discard라는 명령어를 사용하게 되면 이전 버전 이후 변경한 내용을 모두 되돌려 초기화시킨다.

즉, 가장 최근에 커밋한 상태로 되돌아간다.

흔히 말하는... 코드가 꼬이거나, 원인모를 문제가 발생할경우 사용하면 처음으로 되돌리는 용도이다.



Reset : 버전을 제거하면서 내가 원하는 버전으로 되돌림

종류 : Mixed / Hard / Soft 

이미 커밋한 버전을 취소하는 방법은 Reset을 사용한다.


A) 내가 돌아가고 싶은 버전으로 돌아가면서 그 버전 이후의 모든 것들을 제거하고 싶다면?

Q) 브랜치 그래프에서 자신이 돌아가고 싶은 부분(버전)을 클릭한 다음 마우스 오른쪽 클릭 - Reset current branch to this commit을 선택한 후 Using mode 를 설정한다.

Hard - discard all working copy changes 를 선택한 후 OK를 누르면 경고창이 한 번 뜬다.

모두 지울것이므로 진짜 지울거냐고 물어보는 것이다.  이것은 마치 휴지통 비우기와 비슷한 것 같다. 완전히 날려버림....

모든 일이 끝나고 확인하면 해당 부분의 코드로 돌아온 것을 알 수 있다.. 그 이후 수정 버전은 모두 제거되었다...

조심히 쓰자.



내가 돌아가고 싶은 버전으로 돌아가면서 그 버전 이후의 모든 것들을 제거하고 싶다면?
+ Working copy에 커밋되지 않은 상태로 유지되게 만들고 싶다면

 

Q) 브랜치 그래프에서 자신이 돌아가고 싶은 부분(버전)을 클릭한 다음 마우스 오른쪽 클릭 - Reset current branch to this commit을 선택한 후 Using mode 를 설정한다.

Mixed - keep working copy but reset index 를 선택한 후 OK를 누르면 진행된다.

커밋되기 전에 상태 그대로 Working copy로 나타나면서 다른 버전들은 모두 제거된다.


Revert(Reverse) : 버전을 유지하면서 내가 원하는 버전으로 되돌림

내가 선택한 그 버전을 취소해서 그 버전 이전 상태로 돌리는 것을 의미한다.

안 하는 게 낫다. 왜냐하면 버전은 그냥 되도록 남겨두는것이 좋다.

제거되는 것이 아니라 이전 버전 상태로 돌아가게 된다.


















Posted by sungho88
,
소스트리란 무엇인가?




1. 소스트리(SourceTree)를 다운로드한다. 사이트는 아래에 있다.


2. 다운로드 받아 설치를 완료하면 다음과 같이 소스트리 창이 실행된다.
(버전에 따라 이미지와 다를 수 있다)


3. 상단에 Local 말고 Remote를 실행한다.


4. 좌측에 + Add an account를 클릭하여 원격 연결을 설정한다.



Host에서 설정할 것 :  Hosting Service부분을 GitHub 선택. 그외것들은 그대로 두면 됨.


Credentials에서 할 일 : Refresh OAuth Token을 클릭한다.

그러면 깃허브 사이트에 들어가게 되고 인증 과정을 진행한다.

허용하겠음을 하게 되면 깃허브 아이디를 Username으로 자도으로 끌고온다.

OK를 눌러서 창을 닫는다. 이제 Clone해서 받아보자.


소스트리와 깃허브 저장소(Repository) 연동하기


Remote 오른쪽 Clone 탭을 누르면 위에와 같은 화면이 나온다.

첫 번째 Input : Source Path / URL : 원격 URL Clone 주소를 입력한다.



두 번째 Input : Destination Path : 자신의 PC에 파일이 저장되는 위치를 말하므로 자신이 원하는 위치에 저장하고 싶다면 변경하면 된다. 변경하지 않으면 자동으로 기본 위치가 설정된다.


세 번째 Input : name: 별 의미 없다. 원하는 이름 입력한다. 기본값이 있으므로 입력 안 해도 무방하다.
네 번째 Input : root: 별 의미 없다. 기본값이 있으므로 건들지 않는다.

그리고 클론(Clone)를 누르면 



드르륵~ 드르륵~ 후...


화면이 달라진것을 볼 수 있다. 이제 깃을 사용할 수 있는 준비가 된 것이다.

이제, 소스트리를 이용해서 깃허브에 코드를 제어하는 방법에 대해 알아볼 것이다.
























테스트하기 위해서, 원하는 위치에 로컬 저장소를 만들었다(그냥 빈 폴더 하나 생성하면 된다)
이렇게 로컬 저장소로 생성한 경로에다가 소스트리에서 리포지토리로 설정을 해주게 되면
Git관련 파일들이 설치가 되며, 그 이후 뭔가 파일이 수정되거나 제거되거나 생성될때는 바로바로 그 변화된 부분을 
찾아내어 알려준다(트래킹이라고 함) 이러한 변화를 한눈에 GUI형태로 보여주도록 해 놓은게 바로 소스트리이다.

  

<소스트리에서 저장소 만들기>


1. Clone/New 메뉴를 클릭한다.

2. Create New Repository 메뉴를 클릭한다.

3. Repository Type은 자동으로 설정이 된다. Destination Path에 위에서 만든 빈 폴더의 경로로 가 폴더를 추가한다.

4. 완료를 하면 왼쪽에 프로젝트가 뜨게 된다. 그러면 정상적으로 설정하였다.


이제부터 이 폴더는 소스트리가 지켜본다. 

뭔가 변화가 생기면 즉각적으로 소스트리에 변화된 내용을 알려주게 된다.

그렇다면 뭔가 변화를 줘서 확인해보자.

빈 폴더에 파일을 하나 생성한 다음 소스트리로 돌아오면 뭔가 파일이 ?가 뜬채로 생긴것을 볼 수 있다.

?는 처음보는 파일이니 소스트리에서 알 수 없으므로 ?가 뜨는것이다.

이것을 버전 관리를 하려면 커밋을 해주면된다. 아래에 체크를 해주면 체크해준 파일이 이동한다.

무시하고 Commit버튼을 눌러 커밋해보자.  

 



소스트리를 처음 사용할때 에러가 나는 경우가 있다.  사용자가 누군지 아직 정해주지 않았기 때문이다.

깃을 사용한다는 것은 협업을 한다는 것인데 누가 이 것을 커밋했는지를 알 수 없기때문이다. 당연한거다.

그래서, 사용자의 정보가 없을경우 이름 & 이메일을 처음에 등록해줘어야 한다. 그 이후는 묻지않고 커밋이 가능하다.

커밋을 하면 BRANCHES에 추가된다(버전이 생겼다)

소소트리에서 변경된 코드 부분을 보면 아래와 같이 다양한 색상을 갖고 있다.


녹색 라인 : (이전 버전과 비교해서) 추가된 부분

흰색 라인 : (이전 버전과 비교해서) 변경된 것 없음

빨간 라인 : (이전 버전과 비교해서) 제거된 부분



<소스트리에서 >

위 노란색은 깃에 의해 관리되고 있는 파일이다. 저기에 떳다는 것은 index.html파일이 수정되었다는 것을 의미한다.

보라색 물음표는 처음 보는 파일, 즉 처음 생성된 파일이라고 할 수 있다.

 

Posted by sungho88
,

자바스크립트에서 배열이나 객체를 좀 더 쉽게 다루기 위해 for in 반복문을 제공한다.


for(var str in array) {


}


이것은 array 배열의 처음부터 끝까지. str에 인덱스를 집어넣어 돌리라는 의미이다.


즉,


for(var str = 0; str < array.length; str++) {


}


위 코드와 완전히 동일한 코드라고 할 수 있다. 짧고 간결하게 작성할 수 있다는 장점이 있지만, 

배열을 무조건 전부 사용해야하며 배열중에 필요한 부분만 골라서 제어할 수 없다는 단점이 있다.

Posted by sungho88
,