2022. 10. 30. 17:13ㆍ강의노트/GIT
https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-%EC%88%98%EC%A0%95%ED%95%98%EA%B3%A0-%EC%A0%80%EC%9E%A5%EC%86%8C%EC%97%90-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0
Basic 터미널 명령어
작업위치
- pwd
Print working directory; 현재 작업 위치 알려줌. - ls
list files; 현재의 directory의 모든 파일들을 보여줌. - cd ..
상위 디렉토리로 이동. - cd ~
사용자의 홈디렉토리(/Users/hannah)로 감.
- cd 디렉토리명
change directory; 원하는 디렉토리로 이동; 다만 건너뛸 수는 없음. 한 칸씩 단계적으로 들어가야 함.
디렉토리 / 폴더
- mkdir 디렉토리명
make directory; 새로운 directory 생성. - rm –rf 디렉토리명
디렉토리 삭제. 디렉토리와 디렉토리 하위의 모든 파일까지 삭제. - cp -R <sourcedir> <destdir>
디렉토리 복사.
Sourcedir: 카피하고 싶은 폴더명, destdir: 옮기고싶은 폴더명.
검색키워드# mac terminal commands copy directory
파일
- cat 파일명
파일의 contents를 보여줌. - touch .파일명
파일 만들기.
Ex) touch .DS_Store (DS_Store라는 파일 만들기) - echo "파일내용" > 파일명
내용과 함께 새로운 파일 만들기.
Ex) echo "project test" > test.html ('project test'라는 내용이 있는 test.html 파일을 생성) - 파일명 .gitignore
무시해야할 소스파일 만들기. 소스파일 버전관리. - ls -al | grep .파일명
특정 파일 불러오기. 찾고 싶은 파일이 있을 때.
Ex) ls -al | grep .gitconfig (gitconfig파일 찾기)
etc.
- ctrl + L
터미널 화면 clear (화면이 너무 복잡할 때).
status
git status
레포지토리의 상태를 보여주는 명령어.
현재 브랜치, 원격 브랜치, 현재 추적중인 파일, 변경된 파일목록 등이 표시됨.
1.
폴더를 만들어서 git status를 하게 되면 나오는 내용⬆️
- On branch master: 현재 브랜치는 'master'라는 뜻.
- No commits yet: 아직 commit한 내용은 없음.
2.
- Staging area로 들어갈 준비가 된 파일: index.html
- 추가되지 않은 파일(git add가 되지 않은 파일) : hello.html
- add되지 않은 파일은 commit이 될 수 없기 때문에 지금 상태로 commit을 하게 되면 여전히 working directory에 남아있게 된다.
>>이렇게 현재상태를 확인하면 된다!!!
add
add는 Working directory의 파일을 staging area로 옮기는 명령어.
git add [파일경로] *명령어에 대괄호[]는 입력하지 않음
명시된 파일만 staging area로 추가.
Ex)git add index.html : index.html 파일만 staging area로 추가.
git add .
추가해야될 파일이 다수인 경우, 현재 디렉토리 밑에 있는 추가되지 않은 모든 파일을 staging area에 한번에 추가.
git add -i
remove
git rm –cached [파일경로]
staging directory에 추가된 파일을 다시 working directory로 내려보내는 명령어.
git status를 입력했을 때 나오는 화면.
괄호 안의 comment처럼 git rm –cached index.html 하게 되면 staging area 에서 다시 workind directory로 내려보내게 된다.
git rm -r --cached .
현재 staging directory에 있는 모든 파일을 한꺼번에 다시 workind directory로 내리기
commit
Staging 영역에 있는 파일을 repository에 저장하는 명령어.
git commit
입력해야할 커밋메시지가 긴 경우에 사용. 줄 바꿀이나 띄어쓰기가 가능. 이 명령어를 입력하면 디폴트 에디터가 출력됨. 에디터에서 메시지를 입력한 후 저장(esc + :wq)하면 커밋이 됨.
이 명령어를 입력하면 밑의 사진처럼 editor(vim)창이 출력이 됨.
(만약 출력 안되고 modified 어쩌고하는 화면만 보일 경우 git commit –a 입력하면 아래 화면이 나옴)
이렇게 몇 개의 파일/줄이 추가되거나 삭제되었는지 알려준다.
git commit –m "커밋 메시지"
m은 메시지의 약자. 타이틀정도로 간략하게 메시지를 입력하는 경우에 사용.
git commit -a–m "커밋 메시지"
working directory에 있는 파일들이 staging area를 거쳐서 커밋되는 것이 일반적이지만, 이 명령으로 staging area를 거치지 않고 바로 커밋할 수 있게 됨.
<커밋이 가능한 경우>
git의 경우, 리포지토리 영역에 있는 파일이라도 한번 수정을 하게 되면 다시 working directory형태로 내려오게 됨.
이 경우에는 수정을 하고 바로 이 명령문을 통해 커밋을 할 수 있는 것.
예를들어,
현재 커밋이 완료된 index.html 이라는 파일이 있는 상태에서
echo "<html> </html>" > index.html로 index.html파일 내용을 변경하고 (아무 내용이 없었던 파일에 html태그를 추가한 것)
git status로 상태를 조회하면 아래처럼 modified 된 파일이 있다고 알려줌.
이 파일의 경우, 한번 커밋이 되었던 파일이기 때문에 staging area를 거치지 않고 바로 커밋을 진행할 수 있음.
이 화면이 뜨면 git commit –a –m "Added html tags" 라고 입력해서 커밋을 진행할 수 있게됨.
<커밋이 불가능한 경우>
이 명령어를 쓸 수 있는 건, 한 번이라도 staging area를 거쳤던 파일에 한해서이다!
새로운 파일을 생성했다면 git commit –a-m "커밋메시지"를 한다고 해도 그 대상에 포함되지 않음.
만일 staging area를 거치지않은 파일을 commit하려 한다면
nothing added to commit but untracked files present
라는 메세지로 커밋된 것은 없지만 staging area에 있지 않은 untracked files가 있다고 알려줌.
log
저장소에 있는 commit 이력을 조회하는 명령어.
git log
현재 브랜치의 커밋이력을 디테일하게 볼 수 있음. 타이틀 메시지, 컨텐츠 메시지, 누가커밋 했는지 등 전반적인 정보를 준다.
git commit 으로 제목 + 내용까지 상세하게 기록한 커밋은 아래처럼 내용까지 보여짐
조회가 끝나면 'q로 화면나가기
git log --oneline
말 그대로 한줄(oneline으로)로 간단하게 보여달라는 명령어. 커밋이력 중 커밋 ID, 타이틀 메시지(에디터로 커밋했을 때 첫번째 줄에 있는 정보/ 혹은 -m뒤에 따라오는 정보)만 조회.
git log --oneline --decorate --graph --all
모든 브랜치의 커밋이력을 조회하게 됨. 브랜치가 한 개라면 단순하게 한 줄로 표시가 됨.
브랜치가 여러 개인 경우에 적합. (사진은 master에서만 작업했기 때문에 이렇게 보여짐)
--oneline : 한 줄로 간단하게
--decorate : 어떤 브랜치인지 --all을 빼고 입력하면 master를 포함해 모든 브랜치 내용을 볼 수 있음
(더 자세한 예시는 하단의 checkout 부분에 有)
git log -- [파일경로] ❗️띄어쓰기 주의❗️
특정 파일의 변경 커밋내용만 조회.
위 화면은 git log -- index.html로 출력된 결과.