본문 바로가기

Programming/General

git - Linux & windows 환경에서 사용하기

< windows 환경 >



< linux command 환경 >

 1.1 git 환경 설정

  a. git config --global user.name "my name" : user name 설정

  b. git config --global user.email "my email" : user email 설정

  c. vim ~/.bashrc

     git config --global core.gitproxy '/root/env/git_proxy.sh' : git 외부 proxy 설정 (git_proxy.sh는 첨부의 파일 참조)


 1.2 code 수정 후 반영 sequence

  a. git pull : 코드 최신으로 sync받기

  b. git status : 코드 수정 후 수정 사항 확인하기

modify 된 파일들이 기본적으로 update 상태로 나타납니다.

d. git add -i . : 새로 추가할 파일이 있는 경우 추가하기

$ git add -i
           staged     unstaged path
*** Commands ***
  1: [s]tatus     2: [u]pdate     3: [r]evert     4: [a]dd untracked
  5: [p]atch      6: [d]iff       7: [q]uit       8: [h]elp


u : modify 된 파일중 서버에 반영할것을 선택합니다.

a : 새로 add 된 파일중 추가할것을 선택합니다.

각 서브 메뉴에서 명령어 없이 "enter"를 누르시면 상위 메뉴로 나오게 됩니다.
(이것 몰라서 엄청 고생했습니다. ㅜㅜ)

$ git add -i
           staged     unstaged path
  1:    unchanged        +1/-0 arch/arm/configs/h2_defconfig
  2:    unchanged        +4/-4 arch/arm/kernel/traps.c
  3:    unchanged        +3/-0 arch/arm/mach-s5pv210/include/mach/map.h
  4:    unchanged       +19/-0 arch/arm/mach-s5pv210/mach-h2.c
  5:    unchanged       +10/-0 drivers/watchdog/Kconfig
  6:    unchanged      +190/-6 drivers/watchdog/s3c2410_wdt.c
  7:    unchanged        +2/-2 kernel/printk.c

*** Commands ***
  1: [s]tatus     2: [u]pdate     3: [r]evert     4: [a]dd untracked
  5: [p]atch      6: [d]iff       7: [q]uit       8: [h]elp
What now> u
           staged     unstaged path
  1:    unchanged        +1/-0 arch/arm/configs/h2_defconfig
  2:    unchanged        +4/-4 arch/arm/kernel/traps.c
  3:    unchanged        +3/-0 arch/arm/mach-s5pv210/include/mach/map.h
  4:    unchanged       +19/-0 arch/arm/mach-s5pv210/mach-h2.c
  5:    unchanged       +10/-0 drivers/watchdog/Kconfig
  6:    unchanged      +190/-6 drivers/watchdog/s3c2410_wdt.c
  7:    unchanged        +2/-2 kernel/printk.c
Update>> *
updated 7 paths

*** Commands ***
  1: [s]tatus     2: [u]pdate     3: [r]evert     4: [a]dd untracked
  5: [p]atch      6: [d]iff       7: [q]uit       8: [h]elp
What now> s
           staged     unstaged path
  1:        +1/-0      nothing arch/arm/configs/h2_defconfig
  2:        +4/-4      nothing arch/arm/kernel/traps.c
  3:        +3/-0      nothing arch/arm/mach-s5pv210/include/mach/map.h
  4:       +19/-0      nothing arch/arm/mach-s5pv210/mach-h2.c
  5:       +10/-0      nothing drivers/watchdog/Kconfig
  6:      +190/-6      nothing drivers/watchdog/s3c2410_wdt.c
  7:        +2/-2      nothing kernel/printk.c

*** Commands ***
  1: [s]tatus     2: [u]pdate     3: [r]evert     4: [a]dd untracked
  5: [p]atch      6: [d]iff       7: [q]uit       8: [h]elp
What now> 

  c. git commit -s -m "s5pc110:model_name: comment" : 코드 수정 사항에 대한 comment 하기

  e. git status : 최종 반영 사항 확인

  f. git push : 코드 반영


1.3 반영된 code revert 방법

  a. git revert commitnumver : web에서 commit number를 copy후 해당 명령을 사용하면 revert 완료.

 

 1.4 특정 시점으로 code sync 하기

  a. git reset --hard commitnumver : commitnumver로 code가 sync.

 

 1.5 코드 반영중 error 발생할 경우 해결책

  a. git reset --hard commitnum : 최종 반영된 commitnum으로 코드를 sync

  b. 이후 1.1 다시 수행

 

  a. git stash : 1.2의 f 스탭 직전에 해당 명령을 수행

  b. git pull : 코드를 최신으로 sync

  c. git stash apply : 최신코드에 반영할 사항을 적용

  d. git push : 코드 반영





<< Error 1 >> git push 명령후 다음과 같은 에러 메시지를 받은 경우

     ! [rejected]        master -> master (non-fast forward)

   1. 원인 : 현재 작업하고 있는 Repository가 서버에 있는 Repository보다 오래된 내용이다. Push 를 하게 되면 서버에 있는 최신 내용은 날라가고 현재 작업한 내용만 적용이 되는 문제가 발생할 수 있기 때문에 에러가 발생하게 된것이다.

   2. 해결방법

       1) 강제 삽입하기 (추천하지 않음) : git push --force
       2) 최신내용을 Local에 적용한 후 올리기 : git pull 명령을 이용하면 기존 작업한
          내용에 최신 내용을 덧붙이게 된다. 만약 덧붙이는 과정에서 conflict가 발생한
          경우, 그 안에 어느 부분이 conflict가 발생했는지가 나오기 때문에 잘 확인해
          서 소스를 수정한 후 다시 올리면 된다.