git int

해당 디렉토리를 이제 저장소로 사용하겠다는 명령, 일종의 초기화

 

git config

사용자 이름과 이메일 설정.

 

git config --list

설정한 모든것을 확인할수 있음.

 

브런치 목록확인

지역 브런치 목록과 원격브런치 목록 확인(-r)

 

git status

현재 깃의 상태를 나타냄.

현재 master 브런치이며, main과 requisition.o가 untrackde 상태라는것을 나타냄.

 

 

git add

수정하거나 다룰 파일을 등록하는 과정. 한번등록하면 새로운 파일이 아닌이상 다시 add 할 필요는 없음

hello.c파일을 앞으로 저장소에 다루겠다는 등록.

 

hello.c등록후 untracked files에 해당파일이 추가된 모습

 

project관련 파일들을 모두 add함.

 

git commit -m "설명"

-m 옵션으로 수정된 버전을 commit한다.

 

git remote add origin URL

저장할 저장소의 링크를 등록하는 과정.

 

git push

현제 깃의 commit된 것들을 remote저장소로 업로드 하는 과정.

git push -u "현재 저장소" "원격저장소"

-u옵션으로 master브런치에 있는 commit들을 업로드

 

remote 저장소로 등록한 github site에 실제 적용된 모습.

실제 적용된 모습

 

파일수정

main.c 파일수정 후 git status를 통해 main.c가 수정중된 상태라는 것을 확인할 수 있음.

 

 

git diff

그 후 git diff를 통해 어디가 수정된것인지 자세히 확인 가능함.

git diff : 현재 작업디렉토리와 staged간이 차이를 비교.

git diff --staged : 현재 staged와 최근commit간의 차이를 비교

git diff commitid :commitid 해당 commit들 간의 차이를 비교.

 

text.txt 파일 수정 후 diff 확인

 

text.txt 수정,add 후 diff --staged확인

 

commit 버전간의 diff확인

 

현재 untracked 상태인 나머지 파일들을 모두 add한 후

 

상태 상태를 확인해보면 new file: 로 새롭게 등록됨을 알 수 있음.

 

그 후 make clean 과 a.out와 main을 삭제한 후 다시 commit을 해본다음

 

다시 git diff로 커밋간의 상태수정변화를 확인할 수 있다.

 

 

 

git log

지금까지 업데이트된 commit의 히스토리를 보여줌.

git log

 

 

--stat옵션을 이용해서 각 commit의 통계를 확인할수 있음. 어느 파일이 얼마나 수정되거나 추가되거나 했는지에 대한 것. +-,

 

 

원격저장소의 파일 지우기

 

github site를 원격저장소로 예를 든다면, 이와 연동된 로컬저장소에서 파일을 지우게 되면 원격저장소의 파일은 삭제되지않는데 이를 해결하기 위해서는 git rm 명령어를 사용해야한다.

 

더 이상 a.out과 main을 track하지 않는것을 확인할 수 있다.

 

add, commit push 취소하기

 

git reset HEAD [file]

뒤에 파일명이 없으면 add한 파일 전체를 취소한다.

 

 

git reset HEAD^

commit 취소.

 

 

text.txt파일을 수정 수 add하면 현제 modified 즉, staged에 올라간것을 확인할 수 있음.

 

이상태에서 git reset text.txt를 통해 상태를 staged상태에서 add되지 않은 modified상태로 바꿀 수 있음.

즉, add취소.

 

git reset HEAD~숫자

 

git reset HEAD~2를 통해 현재 commit으로 부터 2개 전의 commit으로 돌아감. 즉 ver3과 ver2는 없어짐.

하지만 commit한 최종 이력은 적용이 된 상태로 ver3, ver2가 사라지는 것임.

 

 

git revert

과거의 버전들중에 특정버전 또는 여러개의 버전을 최신의 버전으로 다시 불러오는 명령.

 

 

*git reset 과 git revert의 차이

두 명령어 모두 이전의 버전을 불러온다는 공통점이 있지만

reset은 불러오고자 하는 이전버전을 불러온 후 그 후의 버전들을 완전히 삭제하고 최신버전이었던 commit의 내용을 적용시킨다.

반면 revert는 삭제같은 것 없이 과거의 해당버전만을 꼭 잡아서 다시 불러오는 작업이다.

따라서 상황에 맞게 reset과 revert 각각의 잘 사용해야 한다.

 

commit 취소 예시.

 

git commit --amend

commit의 이름을 잘못 적었을 경우 수정하는 방법.

push취소.

위의 2개를 응용하여 commit을 되돌린 후 다시 push하는 방법으로 push를 취소한다.

 

 

git checkout 파일명

현제 수정하고 있는 파일에 대해 이전 commit버전을 불러올때

 

현제 수정하고 있는 파일에 대해 이전 commit을 불러올때

 

 

CO-WORK

서로다른 버전으로 만들다가 적절한 시점에서 합치는것, 합치는 부분 merge 나누는 부분 branch.

 

branch

기존 버전에서 새로운 업데이트 버전을 만들고 싶을때 branch로 시험삼아 만든 후 마음에 들면 master에 적용함.

 

내가 어떤 브런치에 작업하고 있는지, 내 위치를 확인하는 것이 굉장히 중요함.

git branch "이름"

새로운 브런치를 생성할 수 있음.

 

git branch

자신이 어떤 브런치에 있는지 확인하는 방법

 

git checkout "브런치이름"

현재 브런치를 나와서 해당 브런치로 이동하는 명령.

 

git merge "브런치이름"

해당브런치를 현재브런치에 병합하는 명령.

merge를 할때를 merge되고자 하는 브런치에서 해당명령을 수행하는 것이 중요함. 현재 브런치의 위치!

 

*merge충돌*

만약 브런치와 master에서 같은 이름의 파일을 다른내용으로 만든 후,

merge할 경우 충동이 발생함!!

이 경우 해당 파일의 내용이 수정되는데

수정해서 다시 commit할 수 있도록 파일이 수정됨.

merge 충돌 시 파일내부내용 변경

 

#시나리오#

아래 그림과 같은 작업 수행.

 

master에서 ver1,2,3 설정.

초기 ver1,2,3 commit한 상태

 

 

second 브런치를 만들어 이동.

 

 

new.txt를 만들어서 ver4 커밋.

 

 

그 후 다시 master브런치로 돌아가서

 

 

 

old.txt와 old2.txt를 만들어서 각각 ver5, ver6를 만듦.

master 에서 ver5

 

master 에서 ver6

 

 

다시 second로 이동하여 new2.txt를 만들어 ver7 commit.

 

master로 이동하여 second merge를 진행함. 이때 merge를 통해 ver8이 만들어짐.

 

second로 이동 후 old3.txt를 만들어 마지막버전9를 만듦.

 

 

최종 log graph모습

 

git rebase

 

git rebase -i --root 을 입력하면 다음과 같은 편집창이 뜬다.

아래 설명글에 나와있는 작업하고 싶은 키워드를 통해 위쪽의 commit 키워드들을 수정해주면 된다.

reword에 경우 또 다른 에디터 창이 열리게 된다.

reword를 적용한경우

 

 

rebase 적용전

 

 

rebase 적용후

 

 

 

 

 

모드종류

1. 명령모드

2. 명령줄모드

3. 편집/입력모드

4. 비주얼/선택모드

 

 

 

1. 명령모드

-커서이동

h-좌, j-하, k-상, l-우

e,E - 다음단어의 끝으로 이동

w,W - 다음단어의 처음으로 이동

$ - 줄의 마지막

0 - 줄의 처음

gg - 문서의 처음

shift+g - 문서의 마지막

줄번호 + shift + g - 해당줄로이동

{} - 이전, 다음문단의 처음.

*주로 gg,shift+g와 {}가 많이 사용될듯 하다.

 

-스크롤

control F,B - 한 화면을 위아래로

control E,Y - 한줄을 위아래로

shift h,m,l - 화면의 상단, 중단, 하단으로

 

-마크(지정이동)

ma, mb이런 식으로(mx) 해당커서에 책갈피 기능이 가능하다.

'mx를 이용해 되돌아갈수 있다.

 

-단어찾기

/단어 - 아래쪽으로 단어찾기

?단어 - 위쪽으로 단어찾기

n - 아래쪽으로 계속 단어찾기

shift + n - 위쪽으로 계속 단어찾기

 

-편집

y-한줄복사

yn-현재라인부터 밑으로 n줄복사

p - 붙여넣기

dd - 한줄삭제

dw - 한단어 삭제

shift+d - 현재커서위치에서 마지막까지(최대 해당한줄 까지) 삭제

shift+j 현재 행의 개행문자제거 (아래라인을 현재라인에 덧붙이는 기능가능)

 

r - 글자하나 변경

cw - 단어하나 변경

c$ - 해당줄 변경

 

되돌리기 - u

다시 되돌리기 - control + r

 

ZZ - 저장후 종료 (:wq보다 훨씬 유용할듯)

 

 

 

2. 명령줄 모드

:w 저장

:q 종료

:wq 저장 후 종료

:!명령어 - 명령어 사용가능

:vs <파일이름> 수직으로 창나워서 파일추가로 열기

:split <파일이름> 수평으로 창나워서 파일추가로 열기

:#,# <파일이름> - 두 번호사이의 줄들을 파일이름으로 새롭게 저장.

 

*control+ww(아래창으로 이동) 혹은 control+w+방향키 를 통해 창이동을 할 수 있다.

vs file1 실행모습

 

split file2 실행모습

 

-단어바꾸기

:s/찾는단어/새단어 - 현재줄에서 해당단어 하나 바꾸기

초기상태

 

Goodbye를 Goodmorgin으로 바꿈(:s/Goodbye/Goodmoring)

 

:s/찾는단어/새단어/g - 현재줄에서 해당단어 전체 바꾸기

:%s/찾는단어/새단어/g - 문서전체 해당단어 전체 바꾸기

파일의 모든 Goodbye를 byebye!!!!로 바꿈 (:%s/Goodbye/byebye!!!!/g)

 

:%s/찾는단어/새단어/gc - 문서전체 해당단어 확인하면서 바꾸기

:#,#s/찾는단어/새단어/ㅎ - 두 번호사이 줄에 해당단어 모두바꾸기

 

3. 입력모드(로의 이동)

i-현재위치에서 입력모드로

I-현재줄의 처음에서

a-현재위치에서 한칸앞

A-현재줄의 마지막

o-새로운줄을 커서아래에

O-새로운줄을 커서위에

s- 현재위치의 문자를 지우고

S- 현재줄을 지우고

 

수정모드 전환 - shift+r

 

 

'linux' 카테고리의 다른 글

[Linux] server관련 명령어  (0) 2021.06.16
[Linux] 명령어 정리  (0) 2021.06.16

 

linux 명령어 정리

 

1. 프로세스관련 명령어

 

top(실시간 모드)

: 현재 프로세스 목록을 CPU 사용률 순으로 보여준다.

top

shift+m과 shift+t로 각각 메모리 사용률 순과 사용시간 순으로 정렬하여 보는 방법도 있다.

shift+m ( 메모리 사용률 순)
shift+t (사용시간 순)

 

top(배치모드)

명령어 : top -b -n 1

위의 실시간 모드는 한페이지만 보여주지만 배치모드를 사용하여 전체 프로세스 목록을 볼 수 있다.

top 배치모드

 

ps

현재 사용중인 프로세스의 목록을 보여준다.

ps

 

ps aux

현재 사용중인 프로세스 목록을 CPU, MEM사용률 등과 함께 보여준다.

자주 사용된다고 한다.

ps aux

 

ps -ef

현재 사용중인 프로세스를 PID와 PPID 등과 함께 보여준다.

PIP 는 프로세스 ID이다.

ps -ef

 

kill 프로세스 아이디

프로세스를 종료시킨다.

 

kill -9 프로세스 아이디

응답이 없어도 프로세스를 강제종료시킨다.

 

free

메모리 사용량 확인

free

 

free -f

사람이 보기 편한 단위로 환산되어짐

free -h

 


2. 파일 / 폴더 관련 명령어

 

ls 명령어

현재 디렉토리의 내용목록 확인

ls -a : 숨겨진 파일목록까지 확인가능

 

rmdir 디렉토리명

현재 디렉토리 목록에 해당 디렉토리 제거

 

mkdir 디렉토리명

현재 디렉토리 목록에 새로운 디렉토리 추가

ls, mkdir, rmdir

 

mkdir -p : 하위 디렉토리와 함께 디렉토리 생성

mkdir -p

 

ll (ls -l)

각 프로세스의 권한,소유자, 갱신일이 확인가능 함.

ll

 

cd 명령어

cd 디렉토리명 : 해당 디렉토리로 이동

cd .. : 현재 디렉토리에서 한단계 상위 디렉토리로 이동

cd 디렉토리명 및 cd ..

cd . : 현재 디렉토리

cd : 사용자 홈 디렉토리로 이동

cd / 최상위 디렉토리로 이동

 

 

-cp명령어

cp 파일명1 파일명2

파일명1의 내용을 복사하며 파일명2라는 이름의 파일을 새로 생성함.

cp - omitting error

하지만 해당디렉토리가 사용중인 경우 등의 의해서 omitting 오류가 날 수도 있다.

이럴경우 cp -r 옵션을 사용하면 해결가능하다.

 

cp -r 파일명1 파일명2

cp -r

 

rm 명령어

rm 파일명 : 해당파일을 제거 (이때 디렉토리는 제거 불가)

rm 파일명

 

rm -r 디렉토리명 : 디렉토리도 삭제 가능

rm -r(디렉토리 삭제)

 

cp 옵션

-a : 모든것을 동일하게 복제함

-i : 파일이 이미 있을경우 덮어쓸지 물어봄

-f : 파일이 있어도 덤어씀

-p : 수정시간, 소유자, 그룹, 퍼미션을 유지

-R : 하위 폴더 및 파일 포함

 

 

tree

해당 디렉토리의 하위 목록들을 tree형으로 나타냄.

tree

 

find

find : 현제 디렉토리에 있는 파일을 찾는다. 숨겨진파일이나 하위디렉토리도 포함!!

find

 

 

find -name 파일명 : 해당 파일위치를 찾는다.

find -name 파일명

 

find -name "파일명" -o -name "파일명" : 여러가지 파일을 동시에 찾는다.

find -name "파일명" -o -name "파일명"

 

find . -mtime +일 : 생성된 날짜가 x일 지난 파일을 찾는다.

find . -mtime +일

 

 


3. shell

 

date / cal

date: 현재 날짜 및 시간을 나타낸다.

cal: 현재 날짜를 달력형식으로 나타낸다.(calender)

date 및 cal

df

파일 시스템의 디스크 용량 확인

df

 

du

현재 디렉토리의 디크스 사용용량 확인

du

 

du -h

사람이 보기 편한 단위로 환산되어 표기됨.

du -h

 

 

화살표 방향키 ↑

이전에 입력했던 명령들을 불어올수 있다.

반복적인 수행 등의 경우에 유용하게 쓰인다.

 

 

exit

종료

 

에디터로 파일열기

vi 에디터

명령어 : vi 파일명

vi 파일명

 

 

nano 에디터

멍령어 nano 파일명

 

 


4. command

 

whatis

whatis 명령어

해당 명령어가 어떤 기능인지에 대한 요약설명

 

alias

alias 별칭="명령어"

해당 명령어를 별칭으로 사용가능 하게 함.

ps aux를 psa라는 별칭을 통해 사용

 

unalias 별칭

반대로 별칭해제하고 싶을때.

 

 

man 명령어

해당 명령어 관련 설명

man 명령어

 

 

man

 

which

which 명령어

해당 명령에 대한 위치를 알려줌.

ls의 위치

 

file

file 파일명

해당파일의 종류를 확인할수 있음.

file

 

type

type 명령어

해당 명령어의 종류를 알려줌.

 

 

apropos

apropos 검색어

검색어와 관련있는 명령어들을 그 기능과 함께 나타냄.

 

 

echo

echo "텍스트"

입력한 텍스트를 출력

.

 

clear

clear

화면을 깔끔하게 정리해줌.

 

cat

cat > 파일명 (후 내용입력)

파일명에 해당하는 파일을 만들거나 해당파일에 내용을 입력할 수 있음.

cat 파일명

해당파일의 내용을 읽어들임.

 

 

more

more 파일명

해당파일의 내용이 많을경우 한페이지만 보여지도록 함.

 

 

pwd

현재 위치경로를 나타냄

 

 

id

사용자 id를 알수 있음.

.

 

tail

tail 파일명

해당파일의 맨 아래서부터 10행을 읽어들임.

 

head

head 파일명

해당파일의 위에서 10행을 읽어들임.

 

wc

파일에 대한 단어 수 등의 정보를 세어줌.

-c:문자수

-m:캐릭터수

-l:라인수

-w:단어수

-L:가장 긴 문자의 길수

 

 

 

 

'linux' 카테고리의 다른 글

[Linux] server관련 명령어  (0) 2021.06.16
[Linux]Vim editer  (0) 2021.06.16

+ Recent posts