소스트리라는 gui 프로그램을 사용하면 더 쉽습니다.
소스트리를 주로 사용하다보니 위의 내용이 틀린 내용일 수 있습니다.
(틀리면 댓글 부탁 드립니다)
소스트리를 하더라도 git명령이 필요할 때가 있습니다.
에러가 나는 경우 인터넷 검색해서 git명령으로 해결할 수도 있습니다.
이해가 어려우신 분은 소스트리라는 gui프로그램을 설치하여 사용해 보시고...
이곳 git명령을 배우시면 보다 쉽게 이해할 수 있을 것으로 생각합니다. https://g4world.tistory.com/380
소스트리프로그램 사용하여 git을 사용해본 후 이곳 강의 공부 >> 보다 쉽게 이해할 수 있습니다.
그러면 왜 처음 부터 커밋하면되지 번거롭게 중간에 add라는 과정을 거쳐서 커밋을 하는 것일까?
잘 생각해보면 알 수 있을 것 같습니다.
커밋은 의미있는 지점을 저장하는 것입니다. 그런데...
의미있는 지점을 저장할 때 여러개의 파일이 변경되어 있을 수 있는데
모두가 다 의미 있는 지점이라면 커밋하면 되지만...
그중에 몇개의 파일은 의미가 없는 지점에 있을 수 있을 것이고...
그 파일들은 커밋에서 제외시켜야 할 수도 있을 것입니다.
즉, 커밋하여 계속 관리하여야 할 파일중에서도
커밋하려는 때에, 커밋이 지금 필요한 파일과 지금은 커밋에서 제외할 파일을 구분할 필요가 있게 됩니다.
또 다른 경우도 생각해 볼 수 있을 것 같습니다.
3개의 파일이 의미있는 변경이 있는 경우라 하더라도...
한꺼번에 커밋을 하나 만들어도 되겠지만...
git에서 add란 명령어를 사용하는 이유: commit를 선택적으로 할 수 있기 때문!
modified 된 여러 파일이 있을 시 add를 통해 선택적으로 골라진 파일만 stage area로 올라가고 git commit를 통해 stage area에 올라간 파일만 선택적으로 커밋을 해줘 버전을 업데이트 할 수 있습니다.
stage area 는 실제 명령어는 아니고 이고잉님이 설명을 위해서 입력하신 거에요.
영상 속 설명처럼 실제 commit이 되기전 대기열에 있는 목록들을 나타내주는 공간이고
stage area 에서 unstage상태로 돌리려면 git reset HEAD <filename> 을 입력해주시면 됩니다.
저도 궁금해서 찾아 봤습니다.
윈도우 환경에서는 줄바꿈 문자를 CR(carriage return) LF(line feed) 문자를 둘 다 사용하고, Mac과 Linux는 LF 문자만 사용합니다. 윈도우와 유닉스가 서로 협업하는 환경에서는 이게 문제가 될 수 있기때문에 이를 전환해주는 기능이 존재합니다. core.autocrlf인데요, commit할 땐 crlf->lf으로 checkout할 때는 lf->crlf으로 전환 시켜 줍니다. "LF will be replaced by CRLF"라는 오류 메시지는 autocrlf = true인 상태에 발생하는 메시지 이며 윈도우가 아닌 유닉스 스타일인 lf로 줄바꿈이 된 파일이 존재할 때 발생합니다. 윈도우와 유닉스 환경 모두 사용하시는 분이 아니라면 git config --global core.autocrlf false 을 입력하셔서 이 기능을 꺼도 무방할 듯 합니다.
vim 에는 파일들이 존재하는 두 개의 공간이 있다.
1. stage : 수정된 파일이 commit 되기를 기다리는 장소 (이미 add 된 파일들)
2. repository : stage에 존재하던 파일들이 commit 되어 저장되는 장소.
vim 을 오랜만에 사용하면서 답답한 부분들이 생겼다.
1. insert 모드에서 한글로 입력하다가 command 모드로 돌아가려할 때
esc를 눌러도 command 모드로 돌아가지 않는다.
입력모드를 다시 영문입력으로 돌리고 esc를 눌러야 그제야 command 모드로 돌아감.
- 해당 내용으로 구글 검색시 _vimrc 파일을 수정하여 해결하는
플러그인이 존재하나, 해결만 해줄 뿐 어떻게 해결하는지는
내용을 알 수가 없어 더 좋은 사료를 찾기 전까지 보완을 보류
2. 문서의 내용이 한 페이지를 넘기기 전에는 스크롤이 생기지 않아서 내용을 작성할때
굉장히 불편하다. 이는 vim 자체에서 해당하는 단축키가 존재하는것으로 알고 있다.
- z,z 현재 행을 화면 가운데로 이동
z,t 현재 행을 화면 맨 위로 이동
z,b 현재 행을 화면 하단으로 이동 (top, bottom, double click 으로 외우면 됨)
3. 한글 입력중 enter키를 누르면 바로 라인이 변경되지 않는다. 마지막으로 입력한 문자가
한글일 때만 발생하는 문제. (공백이나 콤마, 닷 입력시엔 발생하지 않음)
cp f1.txt f2.txt 카피하기
ls -al
git status
git add f2.txt
git status
git commit
i
2
esc
:wq
git log
나가고 싶은 경우 q누름?
vim f1.txt
source부분을 f1.txt라고 변경
esc > :wq
vim f2.txt
source부분을 f2.txt라고 변경
esc > :wq
cat f1.txt
cat f2.txt
git status
왜 깃이 add라는 과정을 포함하고 있는가?
선택적으로 커밋할 것만 선택하고 커밋할 수있다.
git add f1.txt
git status
git commit
i > 4 > esc > :wq
git log
git add하면 커밋 대기상태로 감 > 이상태를 스테이지 에어리어라고 함
git add 하면 스테이지 에어리어에 파일을 올리는 것임
스테이지라는 개념과 레파지토리라는 개념을 가지고 있음
커밋이 저장된 결과가 저장되는 곳이 레파지토리임
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: f1.txt
modified: f2.txt
* f1.txt 만 add, commit
git add f1.txt
git status
git commit
git status
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)