< MStart 디버그툴 설치 (나중에 업데이트) >


< 시리얼 통신으로 업글레이드 하기 >


1. Tera Term을 이용한다.  -> File 메뉴의 New connection을 눌러 시리얼로 전환하고

   Port를 고른다. ( 디버그 보드가 필요하다)


2. Edit -> Serial Port... 을클릭하고  Baud rate를  115200로 변경한다.  MStar 는 115200를

   쓰는듯???



3. 이제 화면상에 엔터를 쳐보면 #이 뜰것이다.  이제 reboot을 치고 글들이 올라갈때

    엔터를 누루고 있으면 nugget# 으로 들어가진다.



4. 이제 마지막으로 usb에 업그레이드할 바이너리 파일을 저장하고 타겟보드에 꽂는다.

   그후 custar 를 입력에 업그레이드 시킨다.  (nugget 명령어는 help 를 치면 볼수 있다)

'임베디드 > MStar' 카테고리의 다른 글

MIDE 유용한 함수  (0) 2017.03.16

Git Cheatsheet

  • git Cheat Sheet
  • git clone [저장소주소] [디렉토리명] : “디렉토리명”으로 저장소 복제
  • git clone --depth 1 [저장소주소] [디렉토리명] : “디렉토리명”으로 저장소를 복제하는데, 히스토리는 복제하지 않는다(빠르다).

올리기

  • git add 파일 : 저장소에 추가
  • git commit -m “메시지” : 로컬 커밋
  • git push [origin] : 원격 저장소 origin으로 Push

받기

  • git fetch : 원격 저장소 origin에서 받아오기. Merge는 안함.
  • git pull : 원격 저장소 origin에서 최신 데이터를 가져와 Merge까지 하기

비교

  • git status : 워킹 디렉토리 상태 보기
  • git diff 커밋ID_1 커밋ID_2 [파일명] : 두 커밋로그 사이의 차이점 비교. 파일명을 지정하면 두 커밋간 해당 파일의 차이점 비교
  • git blame 파일 : 파일을 누가 언제 고쳤는지 보여줌.
  • git diff 브랜치1..브랜치2 : 두 브랜치간의 비교
  • git diff 다른브랜치 -- 파일 : “파일”의 현재 브랜치와 다른 브랜치간의 차이점을 보여준다.
  • git diff --name-status 브랜치1..브랜치2 : 두 브랜치간의 변경된 파일 목록과 상태. --name-only 옵션은 파일 이름만 출력.
  • git diff --stat --color 브랜치1..브랜치2 : 두 브랜치간의 차이를 컬러 차트로 보여줌.
  • git log --graph --left-right --cherry-pick --oneline 브랜치1...브랜치2
  • git diff --name-only [COMMIT1] [COMMIT2] : 두 커밋간의 변경된 파일 목록
  • git diff --name-only HEAD~10 HEAD~5 : 헤드에서 10번째 커밋과 헤드에서 5번째 커밋간의 변경된 파일 목록

Log

  • git log [파일] : 특정 파일 혹은 워킹 디렉토리에 대한 커밋 로그를 보여줌
    • git log -숫자 : 최근 숫자 갯수만큼의 로그만 보여줌
  • git log --full-history [파일] : 사라진 커밋 히스토리까지 다 보여준다.
  • git log --author=“Jon” : 특정 사용자로 커밋 로그 검색
  • git log --grep=“정규표현식” : 정규표현식을 만족하는 커밋 메시지가 있는 로그를 보여줌
    • --all-match : 모든 --grep 옵션을 다 만족시키는 것만 검색.

특정 커밋으로 소스 전체 변경

  • git checkout [커밋ID] : 특정 커밋 시점으로 모든 소스를 변경한다.
  • git checkout master : 다시 master 브랜치로 원상 복구

삭제

  • git rm 파일 : 특정 파일삭제.

이름 변경(rename)

커밋로그 일괄 변경하기

  • Push 하기 전의 여러 commit들의 커밋 로그 변경하기
  • $parent_of_flawed_commit에 대해 rebase
    git rebase --interactive $parent_of_flawed_commit
    • 편집기가 뜨면 커밋로그를 변경하고자 하는 것에 대해
    • pick 을 reword 로 변경하고 저장
    • 이제 하나씩 에디터가 뜨면 커밋 로그를 변경
    • 자동으로 다시 커밋까지 해줌.
    • --interactive == -i

커밋로그의 Author 일괄 변경하기

  • 여러개의 커밋에 대한 변경
    # 특정 갯수 지정할 경우
    git rebase -i HEAD~갯수
    # Push 안된 모든 커밋을 지정할 경우
    git rebase -i $parent_of_flawed_commit
    # 여기서 나온 편집기 화면에서 고치고자 하는 커밋을 pick 대신 edit로 수정한다.
     
    # 이제 작성자 변경작업
    git commit --amend --author "New Author Name <email@address.com>" 
    git rebase --continue
  • 가장 최근 한 개만 변경
     git commit --amend --author "New Author Name <email@address.com>"

커밋로그 합치기

  • 아직 푸시 전이라면 커밋로그를 합쳐서 푸시하는 것이 더 좋을 때가 있다.
  • 커밋 로그 Author 변경과 거의 동일하지만 squash를 사용한다는 점이 다르다.
    # 특정 갯수를 지정할 경우
    git rebase -i HEAD~갯수
    # 맨 처음 커밋로그(합쳐진 결과가 될 커밋)을 제외하고 "squash"로 변경하고 저장.

변경 파일 취소 (Revert)

  • git fetch origin; git reset --hard origin/master : 커밋을 모두 취소하고 origin/master 상태로 변경
  • push 되지 않은 commit들 취소할 때 커밋되지 않은 변경사항들 유지하기
    # 커밋 외의 변경사항이 있을 때 변경 사항들을 stash 해 두어야 한다.
    git stash
    git reset --hard origin/master # 올바른 리모트 브랜치로 바꿔줄것
    git stash pop
  • git checkout -- [파일] : 아직 스테이지로 안 올라간 파일의 변경 취소
  • git reset --hard HEAD : 커밋 되지 않은 모든 변경사항 취소. 최종 커밋한 상태로 돌아감.
  • git reset HEAD [파일] : 스테이지에 올라간 파일을 스테이지에서 뺌(파일 자체는 변경 상태 유지)
  • git revert [commit_id …] : 특정 커밋의 변경 사항을 되돌리며, 되돌리는 행위 자체를 하나의 새로운 커밋으로 만든다. 실제 기존 커밋 히스토리가 사라지지는 않는다. 이미 Push된 커밋도 가능.
  • Undoing Merges
    git revert -m [parent] [commit_id]
    # example
    git revert -m 1 xxxx
    • Merge를 revert 했다가 다시 merge하고 싶을 때는 Merge에 대한 Revert 커밋을 revert 해야한다.
    • git clean -d -f : 디렉토리까지 삭제
    • 여기에 -x 옵션을 주면 ignore된 파일들까지 모두 삭제

신규 프로젝트 올리기

이미 파일이 많은 신규 프로젝트를 Git 리포지토리로 올리는 작업이 필요한 경우. Git – setting up a remote repository and doing an initial push

  1. 먼저 Git 원격 리포지토리를 생성한다.
  2. 로컬에서 프로젝트디렉토리로 이동하여 다음과 같이 명령을 실행한다.
    # 프로젝트 이름과 원격 리포지토리 이름이 my_project 일 때
    cd my_project
    git init
     
    # 불필요한 파일들을 모두 정리한 뒤에
    git add * # 혹은 git add --all
    git commit -m '프로젝트 초기 설정'
    git remote add origin [git_repository]/my_project.git
    git push -u origin master
  3. 커밋이 한 개도 없는 원격 리포지토리에 Push를 최초로 할 때는 git push origin master로 origin master를 명시해줘야 한다.(git 1.8 이상에서는 상관 없는 듯)

Remote URL 변경하기

git remote set-url origin git://new.url.here
# origin을 원하는 remote 저장소 이름으로 변경

Branch

  • git branch : 브랜치 정보 출력
  • git branch 이름 : 새 브랜치 만들기
  • git checkout 이름 : 브랜치 체크아웃
  • git checkout -b 이름 : 브랜치 생성하고 체크아웃 동시에
  • git checkout - : 직전 브랜치 체크아웃
  • git branch -d 이름 : 브랜치 삭제, -D는 강제 삭제
  • git branch --merged : 머지가 완료된 브랜치 목록을 보여준다. master를 제외한 머지 완료된 브랜치는 삭제해 버리자.
  • git branch --no-merged : 머지 안된 브랜치 목록을 보여준다.
  • git branch -v : 각 브랜치의 최종 커밋을 보여준다.
  • git branch -a : 전체 브랜치(리모트 포함) 목록
  • git branch -r : 리모트 브랜치 목록
  • git remote prune origin : 원격에서 삭제된 리포지토리를 로컬에서도 삭제.

Remote Branch

  • 로컬 브랜치를 만들어 작업하고 나서 다음과 같이 작업한다. origin은 원격지 이름으로 대체될 수 있다.
  • git checkout -b [localbranchname] origin/[remotebranchname] : 원격 브랜치를 로컬 브랜치를 생성하며 체크아웃한다.
  • git push origin [remotebranchname] : 원격브랜치로 push. 원격브랜치가 없으면 만든다.
  • git push origin [localbranchname]:[remotebranchname] : 특정 로칼 브랜치를 지정하여 원격브랜치로 푸시. 원격 브랜치가 없으면 만든다.
    • 이 로컬 브랜치에서 push/pull 을 자동으로 지정된 원격 브랜치로 가게 된다.
  • git push origin :[remotebranchname] : 원격 브랜치 삭제. 중간의 콜론(:)이 있다는 점에 주의할 것.
  • git clone -b [remotebranchname] [remote_repo 주소] : 원격 브랜치를 바로 clone 한다.
  • git branch --set-upstream [localbranchname] origin/[remotebranchname] : 로컬 브랜치와 리모트 브랜치간의 연결

Rebase

  • rebase라는 것은 현재 브랜치의 base가 되는 뿌리 커밋을 바꿔친다는 뜻이다.
    • 예를들어 master C5 에서 experiment 브랜치를 땄다면, experiment 브랜치의 Base가 되는 커밋은 C5이다.
    • experiment에서 이런 저런 작업을 하고 커밋을 하고(C7, C8 생성됐다 치고), 마스터에서도 작업을 해서(C6, C7, C10) 마스터의 커밋이C10이 된 상태가 됐다.
    • experiment에서 master에 대해 rebase를 수행하면(git rebase master) 현재 experiment의 커밋들이 가리키는 base 커밋을 마스터의C10으로 바꾸는 작업이다.
    • 이렇게 한 상태에서 master로 돌아가서(git checkout master), experiment를 머지하면(git merge experiment) 머지되는 커밋들이 C5에 대해 머지되지 않고, C10의 뒤로 머지되어 master 입장에서 봤을 때 C10 → C7' → C8'로 깔끔한 순서로 머지가 되는 것이다.
      • 만약 rebase없이 그냥 머지를 하면 master의 입장에서 봤을 때 C5 → C7 → C8 → C11(머지후 커밋) 가지와 C5 → C6 → C9 → C10 → C11(머지후 커밋) 이 두개의 가지가 생긴다.
      • 하지만 rebase를 하면 C5 → C6 → C9 → C10 → C7' → C8' → C11(머지후 커밋)으로 하나의 가지만 생기게 된다.
    • Rebase와 Merge 흐름
      • 부모(master로 간주)에서 pull을 실행해 최신으로 변경한다. : git pull
      • 작업 브랜치로 간다. : git checkout workingbranch
      • 작업 브랜치의 부모에 대해 rebase : git rebase master
      • 부모로 간다. : git checkout master
      • 작업 브랜치의 내용을 머지해 부모에 적용한다. : git merge workingbranch
  • --preserve-merges : rebase 시에 머지 커밋을 유지한다.

Tag

  • git tag -l : 태그의 목록을 보여준다.
  • git tag -a [tagname] [commit] -m “태그 설명” : commit을 지정하지 않으면 현재 커밋.
  • git checkout [tagname] : 태그 목록의 태그 이름을 이용해 해당 태그를 체크아웃한다.
  • git tag -d [tagname] : 태그 삭제
  • git push --tags : 태그 전체를 리모트로 푸시
  • git push origin [tagname] : 특정 태그를 리모트로 푸시
  • git push origin :[tagname] : 리모트 태그 삭제
  • git push --delete origin [tagname] : 리모트 태그 삭제

Merge

  • git merge [내용을 가져올 브랜치명] : 특정 브랜치를 현재 브랜치에 Merge
  • git merge [내용을 가져올 브랜치명] --squash; #충돌 처리 작업 후 ;git commit : 다른 브랜치로부터 머지를 하되 모든 커밋들을 하나로 뭉쳐서 가져온다. 실제 커밋은 현재 브랜치에서 commit 명령으로 생성한다. How to use git merge squash
  • git merge -Xignore-space-change [내용을 가져올 브랜치명] : 머지할 때 공백을 무시한다. -Xignore-all-space 도 가능. rebase시에도 동일한 방법으로 사용한다.
  • -Xignore-space-at-eol 참조

Stash

  • git stash : 스태시
  • git stash list : 스태시 목록
  • git stash pop : 마지막 스태시 복원하고 목록에서 제거

Patch

  • git apply 패치파일.patch

ls-files

Local bare repository

  • 로컬 파일시스템에 원격 리포지토리를 흉내내에 리포지토리를 만든다.
  • 정확히는 워킹 디렉토리가 없는 순수 리포지토리만 만드는 작업이 --bare 옵션이다.
    # 리포지토리 생성
    git init --bare newreponame
     
    # clone
    git clone newreponame [clonename]
  • 로컬 리포지토리를 사용해 Git 연습을 하기 좋다.

Merge branch 'master' of https://xxx...

  • 요약하면
    1. 원격지에서 내가 Pull을 한 뒤에 내 리포지토리에서 수정/커밋을 하고
    2. 그 사이에 (내가 Push)하기전에 다른 사용자가 자기의 변경 사항을 먼저 Push
    3. 내 수정 사항을 Commit하기 전에 먼저 Pull을 해야하는데, 이 때 다른 사용자의 변경사항이 머지 되면서 발생하는 커밋 로그.
    • pull --rebase를 하던가
    • git config --global branch.autosetuprebase always 혹은
    • git config branch.master.rebase true : master 대신 원하는 브랜치명

alias

  • 원하는 명령을 짧게 줄이도록 할 수 있다.
# last
git config --global alias.last 'log -1 HEAD'
git config --global alias.lg \
 "log --color --graph --pretty=format:'%Cred%h%Creset
 -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'
 --abbrev-commit --"
 
git config --global alias.ci commit
git config --global alias.co checkout
git config --global alias.st status
git config --global alias.unstage 'reset HEAD --'
 
# 외부명령 gitk 혹은 gitg
git config --global alias.visual '!gitk'

출처 : http://v_lovepooh_v.blog.me/220666786139

'리눅스(ubuntu) > Git 관련' 카테고리의 다른 글

git 튜토리얼 (사용법) 사이트  (0) 2017.01.20
현재 이슈 완료하기(닫기), issue close  (0) 2017.01.04
커밋 합치기  (0) 2017.01.03
수정하고 저장소에 저장하기  (0) 2016.12.23
git 최초 설정  (0) 2016.12.23

리눅스에서 vim 설정하기




설명서 파일

vi toolbox 사용법_r1.pdf


출처 : http://cafe.naver.com/cstudyjava/1471


윤성우 만세!

앙마꾼 (jinny0615) 만세!

+ Recent posts