git 에게 관리할 파일을 알려준 다음 우리가 경험하게 되는 다음 일은 바로 파일의 수정이다.
(아래에서 보는 코드의 원본은 open-source 로 진행되는 videoparser 이다)

관리 중인 소스 파일 중 하나를 수정한 이후...


1. modify & git status

   - 코드를 수정한 후 'git status'를 실행한다
   - 'modified' 된 파일이 확인된다.

 



2. git diff

   - 과연 무엇을 수정했는지 그것을 알고 싶으면 'git diff'를 실행하면 된다.



3. git add

   - 수정된 파일을 git 에게 알려주기 위해서는 우선 'git add' 과정을 다시 거쳐야 한다.



4. git commit

   - 최종적으로 'git commit'을 실행하고 코멘트를 적어주면 최종적으로 수정한 내역이 반영된다.



5. git log

   - 'git commit'을 실행하면 최종적으로 어떤 내용이 반영되었는지 알려준다.
   - git 에 반영된 내역들을 확인하기 위해서는 'git log'를 실행하면 볼 수 있다.




만약 여러개의 파일들을 수정하면 그것들을 일일이 하나씩 등록을 해야하는지,
변경한 것을 취소하고 싶을 때 어떻게 하는지 지금 상황에서 궁금한 것이 많겠지만,
차차 추가적으로 확인하도록 하자!!! (절대 지금 졸려서 그런 것 아니다!!! ^^)

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

git Review - stage, add, commit  (0) 2012.01.19
Compare - modify (git diff, git log) 2/2  (0) 2012.01.18
Tracking file - ignoring  (0) 2012.01.15
Tracking file - add, status, commit  (0) 2011.11.30
File Status Lifecycle in GIT  (1) 2011.11.22

지난 번에 글을 올리고 너무 오래간만의 업데이팅이다.
사실 일주일에 2-3번 정도의 업데이팅을 하고 싶었는데... 반성해야겠다!

지난 번에는 새로운 파일을 git에게 알려주고 관리를 받기 위한 과정을 살펴보았다.
이번에는 git에게 관리를 받지 않기 위한 방법을 알아보도록 하겠다.

1. git status

   - 샘플로 사용할 파일이 작업공간(Work Space) 위치하고 있는 상황이다.
   - 이 상태에서 'git status'를 하게 되면 untracked file이 존재하고 있다고 알려준다.



2. create [.gitignore]

   - ".gitignore" 파일을 생성하자.
   - 확장자가 "avi"인 파일들을 제외해보자.



3. git status

   - 다시 확인을 해보면 이번에는 untracked file이 변경되어서 나온다.
   - 이전에 있었던 "Sample.HDTV.Xvid-NoTV.avi" 파일이 사라지고,
   - 방금 만든 ".gitignore" 파일이 등장했다.



4. git add

   - 새로 생성한 [.gitignore] 파일도 또한 git 으로 관리를 해야한다.
   - git add .gitignore
   - git commit -m "add .gitignore"


5. .gitignore

   - git에게 관리하지 않을 것들에 대해서 알려주기 위한 ".gitignore"파일에 대한 문법을 알아보자.

      ▷ # 으로 시작하는 줄은 주석으로 간주한다 (빈 줄도 마찬가지로 무시한다)
      ▷ 표준 glob 패턴의 적용이 된다
      ▷ 제일 뒤에 "/" (forward slash) 를 붙이면 디렉토리로 간주한다
      ▷ "!"로 시작하는 것은 예외로 간주한다

01: # blahblah
02:
03: *.avi
04: !chani.avi
05: sample/
06: source/*.o

   → 01, 02 두 라인은 그냥 무시
   → 03라인은 확장자가 'avi'인 모든 파일을 관리하지 말라는 의미
   → 04라인의 의미는 03라인에서 모든 avi 파일을 관리하지 말라고 했지만, 'chani.avi'파일은 예외라는 의미
   → 05라인은 'sample' 디렉토리 밑의 모든 것들을 관리하지 말라는 의미
   → 06라인은 'source' 디렉토리 밑의 확장자가 'o'인 모든 파일을 관리하지 말라는 의미


[.gitignore] 파일은 보통 빌드를 하면서 생성되는 중간 산출물이나 최종 산출물들을
git에게 관리하지 말라고 알려주기 위해서 사용한다.

사실 별 것이 아닌 팁과 같은 느낌이지만, 이를 모르고 사용하지 않으면 상당히 귀찮은 경우가 많다.

부디 잘 사용하시길...

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Compare - modify (git diff, git log) 2/2  (0) 2012.01.18
Compare - modify (git diff, git log) 1/2  (0) 2012.01.17
Tracking file - add, status, commit  (0) 2011.11.30
File Status Lifecycle in GIT  (1) 2011.11.22
Repository 생성하기  (1) 2011.11.20


에고... 작년에 새로운 버전이 올라왔는데, 이제서야 내가 사용하는 버전을 업데이트 했다.


This is a maintenance release. The following items were fixed and/or added:

   • VMM: fixed VERR_MAP_FAILED during savestate under certain circumstances (bug #7929)
   • GUI: stop updating the VM status icons when the VM is paused (bug #8368)
   • VBoxManage: fixed wrong return code after startvm (bug #9642)
   • BIOS: fixed hang at launch of DOS applications generated by Clipper 5.3 (note that hardware virtualization may be required)
   • USB: fixed OS/2 boot hang when using recent USB drivers
   • NAT: increase maximum number of parallel connections making connections with port forwarding more robust (#8471)
   • Metrics: fixed potential problem with invalid access in guest metrics collection upon VM destruction
   • Main: don't crash if a medium is ejected twice (bug #9922)
   • VBoxSVC: fixed crash under rare circumstances (e.g. client crash)
   • VRDP: fixed screen freeze (bug #9620)
   • OVF/OVA: fixed broken disk images on import under rare circumstances
   • OVF/OVA: better error message when importing corrupted appliances
   • VMDK/VHD: fixed a possible corruption with host cache disabled when using snapshots under rare circumstances (bug #9749)
   • 3D Support: Fixed fullscreen mode issues for ATI graphics (bug #9775), Windows Media Player rendering for XPDM-based Direct3D support (bug #8341). Multiple fixes to XPDM and WDDM - based 3D support for Windows Guests and for 3D support in general
   • Linux hosts: fixes for Fedoras Linux 2.6.41 (bug #9948)
   • Linux hosts/guests: fixes for Linux 3.2 (bug #9743)
   • Solaris Additions: various shared folder fixes (bugs #9856, #9862, #9917)
   • Windows Additions: various fixes for Direct3D support (un)installation, added detection of missing or wrong Direct3D system files


화면이 얼어버리는 문제나 충돌 문제 등에 대해서 뭔가 해결을 했다고 하니... 일단 무조건 좋다~ ^^
특히 최근 나온 Linux 3.2 커널과 관련하여 뭔가를 고쳤다니 무조건 업데이트!!!

반응형

안드로이드 에뮬레이터를 하나 만들어서 실행하여 보자.


이클립스를 실행 후,
[Window] - [AVD Manager]


[New] 클릭


각 개별 옵션들에 대한 설명은 다음 기회에 하기로 하고,
일단 위와 같이 설정을 하고 AVD를 만들어 보도록 하자.


위와 같이 만들어 준 후, [Start]


여기서도 각 항목에 대한 설명은 다음 기회에 되면 하기로 하고,
일단은 '닥치고 런치!'


그런데, 이렇게 실행을 하면 화면이 나와야 하는데 BS(Black Screen)만 나왔다.

뭐가 문제일까...
이러한 경우 종종 권한으로 인한 문제로 발생하곤 한다.
즉, root 권한으로 실행을 하면 해결이 될 것으로 보인다.

열심히 구글링을 해본 결과,
에뮬레이터가 아니라 실제 기기를 USB로 연결해서 사용하는 경우 root 권한 문제가 있다고 한다.

하지만, 이와 같이 에뮬레이터 실행의 경우에는 root 권한 문제가 있다는 말은 별로 없었다.


일단은, 닥치고 root 권한으로 에뮬레이터 실행을 해봤다.

 $ sudo /srv/install/android/android-sdk-linux/tools/emulator-arm -avd Chani_2.2

제일 뒤의 Device 이름은 저 위에서 생성한 것의 이름이다.


에뮬레이터 쨘~

반응형

'잘난놈되기 > 안또라이들' 카테고리의 다른 글

버튼을 더 추가해보기  (0) 2012.03.11
버튼을 추가해보기  (0) 2012.03.06
첫 소스 분석 - HelloAndroid  (0) 2012.03.05
여보세요!? 안또라이들!!!  (0) 2012.02.28
Android SDK 설치하기  (0) 2011.12.10

1. JDK install

   - http://www.oracle.com/technetwork/java/javase/downloads/index.html


   - 최신 버전을 받아서 사용하면 좋겠지만, 안드로이드 작업을 위해서는 이전 버전이 필요하다.

 $ wget http://download.oracle.com/otn-pub/java/jdk/6u29-b11/jdk-6u29-linux-i586.bin
 $ chmod +x ./jdk-6u29-linux-i586.bin
 $ sudo ./jdk-6u29-linux-i586.bin

 $ sudo update-alternatives --install /usr/bin/java java /srv/install/jdk/jdk1.6.0_29/bin/java 1
 $ sudo update-alternatives --install /usr/bin/javac javac /srv/install/jdk/jdk1.6.0_29/bin/javac 1
 $ sudo update-alternatives --install /usr/bin/javah javah /srv/install/jdk/jdk1.6.0_29/bin/javah 1
 $ sudo update-alternatives --install /usr/bin/jar jar /srv/install/jdk/jdk1.6.0_29/bin/jar 1



2. eclipse install

   - http://www.eclipse.org/


   - 이클립스 파일을 다운 받아서, 압축을 해제하면 설치 끝!

 $ wget http://ftp.daum.net/eclipse/technology/epp/downloads/release/indigo/SR1/eclipse-java-indigo-SR1-linux-gtk.tar.gz
 $ tar zxvf ./eclipse-java-indigo-SR1-linux-gtk.tar.gz

   - 아래와 같이 경고가 발생할 수도 있다.

 (eclipse:1859): Gtk-WARNING **: 모듈을 module_path에서 찾을 수 없습니다: "pixmap",

   - 다음과 같이 패키지를 추가 설치하면 해결이 된다.

 $ sudo apt-get install gtk2-engines-pixbuf




3. android SDK

   - http://developer.android.com/sdk/index.html


 $ wget http://dl.google.com/android/android-sdk_r15-linux.tgz
 $ tar zxvf ./android-sdk-r15-linux.tgz
 $ nano ~/.bashrc
...
export ANDROID_PATH=/srv/install/android/android-sdk-linux
export PATH=$PATH:$ANDROID_PATH/tools
 $ source ~/.bashrc



4. Install ADT Plugin

   - Eclipse에서 개발하기 위해 ADT Plugin 설치 !!


   - Eclipse 실행 → [Help] → [Install New Software...]



   - [Add...]


   - Name : ( Android )
   - Location : ( https://dl-ssl.google.com/android/eclipse/ )


   - [Select All] → [Next>]


   - [Next>]


   - 'I accept the terms of the license agreements' → [Finish]


   - Installing...


   - [Restart Now]


 
5. Choose Packages to install


   - 사용할 Packages들을 다운로드 받아야 한다.

 $ cd /srv/install/android/android-sdk-linux
 $ ./tools/android update sdk

   - execute


   - "Accept All" → [Install]


   - Installing...



안드로이드 App 개발 준비 완료~!!
반응형

'잘난놈되기 > 안또라이들' 카테고리의 다른 글

버튼을 더 추가해보기  (0) 2012.03.11
버튼을 추가해보기  (0) 2012.03.06
첫 소스 분석 - HelloAndroid  (0) 2012.03.05
여보세요!? 안또라이들!!!  (0) 2012.02.28
Android Emulator 실행  (2) 2011.12.11

git의 기능들에 대해서 설명해 나가기 위해서 avi 동영상 파일의 parser를 만들어 나가도록 하겠다.
언어는 뭘로 할까 하다가, python을 가지고 한 번 해보도록 하겠다.


1. git init

      - 일단은 리퍼지토리를 하나 생성하자 (= 프로젝트를 하나 생성하자)


  $ mkdir aviParser
  $ cd aviParser
  $ git init


2. create file

      - git을 이용하여 관리할 파일을 만들자


  $ nano ./aviParser.py
  $ git status

      - 'aviParser.py'라는 파일을 생성한 리퍼지토리의 디렉토리에서 생성하자
      - 'git status'라는 명령어를 쓰면, 현재 리퍼지토리의 상태에 대해서 확인할 수 있다
      - 위의 예를 보면 'Untracked files'에 'aviParser.py' 파일이 있다고 알려준다
      - 거기에다가 친절하게 어떻게 해야하는지까지도 알려준다. (use "git add")


3. git add

      - 새로 만든 file을 git에 등록을 하자


  $ git add ./aviParser.py

      - 앞에서 'git status'로 확인해본 결과 'Untracked files'에 'aviParser.py'이 있다는 것을 확인했다.
      - 'git add ./aviParser.py'를 통해 해당 파일을 등록하고,
      - 다시 'git status'로 상태를 확인해 보면, 'new file'에 해당 파일이 있는 것을 볼 수 있다.


4. git commit

      - 최종적으로 git에게 확정을 지어주기 위해서는 'commit'을 해주어야 한다.


  $ git commit -m 'initial project!'

      - 앞에서 'git status'를 통해 확인했듯이 'git add'를 한 후 상태는 'new file'로 등록이 되어 있다.
      - 최종적으로 git에게 앞에서 한 명령(여기에서는 add)을 확정짓기 위해서는 'commit'을 해주면 된다.
      - 'commit'을 하면서 동시에 'comment'를 같이 명시해줄 수도 있다.
      - 'commit'을 하고 난 후 'git status'를 하면 아무 것도 할 것이 없다고 나온다.



지금까지 새로 프로젝트를 생성해서 신규로 파일을 생성하고,
그 파일을 git에 등록을 하는 과정을 살펴보았다.

이 과정을 이미지化 해보면,
"File Status Lifecycle in GIT"에서 봤던 그림과는 조금 다른 그림을 아래와 같이 그릴 수 있다.


반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Compare - modify (git diff, git log) 1/2  (0) 2012.01.17
Tracking file - ignoring  (0) 2012.01.15
File Status Lifecycle in GIT  (1) 2011.11.22
Repository 생성하기  (1) 2011.11.20
저장소 - Repository  (0) 2011.11.17

git을 사용하기에 앞서서 미리 꼭 공부를 해야하는 부분이 있다.

Java를 사용하기에 앞서서 Object-Oriented를 공부해야하는 것처럼,
Git을 사용하기에 앞서서 git에서의 File Status Lifecycle을 공부해야 한다.


① untracked
      - git으로 관리하기 이전의 상태
      - git에게 앞으로는 관리하지 않도록 삭제한 상태

② unmodified
      - git에게 관리를 하도록 add를 하고 아무런 수정을 하지 않은 상태
      - git에게서 commit을 하여 내려 받은 후 수정을 하지 않은 상태

③ modified
      - 사용자가 수정을 한 상태

④ staged
      - git에게 변화된 내용을 등록한 상태


File Status Lifecycle는 위와 같이 구성되어 있지만,
File Status의 변화는 위와 같이 흘러가지는 않는다.

시나리오를 생각해보면,
① 개발자가 소스 파일을 하나 새로 생성을 하고
② git에 관리 대상으로 만든 후
③ 소스 수정을 하게 되면
④ 변경된 내용을 git에게 알려주면 된다.
② 필요한 경우 git에게서 파일을 불러올 수도 있다.
① 불필요하게 되면 git의 관리대상에서 삭제할 수도 있다.



git을 사용하기 위해서는 여기에서 설명한 File Status Lifecycle을 잘 이해해야 한다.

실제 git에서 이와같은 status를 어떻게 보여주는지에 대해서는 다음 글에서 확인해보자!

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Tracking file - ignoring  (0) 2012.01.15
Tracking file - add, status, commit  (0) 2011.11.30
Repository 생성하기  (1) 2011.11.20
저장소 - Repository  (0) 2011.11.17
Git에게 주인님 알려주기 (in Windows)  (1) 2011.11.14

내 컴퓨터에 Repository를 만드는 방법은 "Initializing"하는 방법과 "Cloning"하는 방법의 2가지가 있다.

1. Initializing
     - 새롭게 비어있는 저장소를 생성하는 경우이다.


     ① 저장소로 사용할 디렉토리를 하나 생성한다.
     ② 해당 디렉토리로 경로를 변경한다.
     ③ "git init"을 실행한다.

     - 이렇게 생성된 Repository는 work (non-bare) 타입의 저장소이다.
     - bare 타입과 work (non-bare) 타입의 차이는 다음 기회에 설명을 다시 하겠다.


2. Cloning
     - 기존에 이미 만들어진 Repository를 복사해서 나의 Repository를 만드는 경우이다.


     ① 저장소를 만들고자 하는 상위 디렉토리로 이동한다.
     ② "git clone"을 실행한다.

     - 마찬가지로 이렇게 만들어진 Repository는 work (non-bare) 타입의 저장소이다.


'git init'과 'git clone' 이 두가지만 알면 Git Repository를 생성할 수 있다.
반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Tracking file - add, status, commit  (0) 2011.11.30
File Status Lifecycle in GIT  (1) 2011.11.22
저장소 - Repository  (0) 2011.11.17
Git에게 주인님 알려주기 (in Windows)  (1) 2011.11.14
Git에게 주인님 알려주기 (in Ubuntu)  (0) 2011.10.30

+ Recent posts