원격 저장소와 연결
- Github에서 Newrepository를 만들때 빈 저장소로 만들었다면
1
2
3
4
5
6
7
8
git init
git remote add origin https://github.com/{username}/{reponame}.git
# commit을 만들어준다.
touch README.md
git add README.md
git commit -m "docs: Create README.md"
git push -u origin master
- Github에서 README.md 등 파일이 있는 저장소의 경우
- 작업 폴더를 만들고 싶은 위치에서 클론을 실행
1
git clone https://github.com/{username}/{reponame}.git
Commit Convention
- commit은 동작 가능한 최소단위로 자주
- 해당 작업 단위에 수행된 모든 파일 변화해 당 commit에 포함되어야 함
- Open Source Contribution은 영어로 작성
- prefix를 사용하여 한눈에 커밋의 용도를 알기 쉽게 한다
- 50자 이내로 요약하여 작성한다
1 2 3 4 5 6 7 8 9
"feat: features" "docs: documentations" "conf: configurations" "test: test" "fix: bug-fix" "refactor: refactoring" "ci: Continuous Integration" "build: Build" "perf: Performance"
Shell Command
- 디렉토리를 이동하거나 만드는 등 터미널에서 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 디렉토리이동
cd Documents/
cd ..
# 디렉토리 생성
mkdir name
# 현재 경로 확인
pwd
# 파일 생성
touch readme.md
# 파일 이동, 파일명 변경
mv readme.md bin/
mv readme.md ./README.txt
# 파일 복사
cp readme.md bin/
# 파일 제거
rm README.txt
# 폴더 제거
rm -rf bin/
# 시스템 모드 변경
chmod 750 readme.md
# 파일 출력
cat readme.md
# 파일 편집
vi readme.md
Vim Command
- 자주 사용하는 명령어
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
h : left
j : down
k : up
l : right
i : insert mode
v : visual mode
ESC : back to normal mode
d : delete
dd : delete a line
p : paste
y : copy (aka yank) marked text
yy : copy a line
u : undo a - append
A : append from end of line
H : move to the top of the screen
L : move to the bottom of the screen
:set nu : set line number
:set nonu : unset line number
:q : quit, won't work in case of unsaved changes
:wq : save and quit
Branch 관리
Git 기본 명령어와 위의 내용을 바탕으로 이하의 작업이 가능하다.
- 로컬 혹은 원격 저장소 생성
- 로컬저장소와 원격저장소의 연결
- 파일 생성 및 commit
- push 혹은 pull 을 통한 상태 관리
새로운 가지
- git branch 명령어로 만든다
- main에서 추가로 만들어지는 가지가 생긴다
- 원본과 별개로 기능 개발을 테스트해 볼 수 있다
Pull request
- 새로운 branch를 만들고 개발 사항을 개발, commit을 해준다
- 원격 저장소에 push해준다
- pull request : main ← 새로운 branch를 해준다
- 변경사항에 문자가 없다면 merge 해준다
- 로컬 저장소에서 main을 pull 해온다
Conflict
발생 원인
- main과 branch에서 같은 라인의 내용이 서로 상이할 때 발생한다
- conflict가 발생하면 충돌한 내용을 파일에 보여준다
- 어느 내용을 선택하거나 적절히 조합하여 저장한다
- 충돌을 해결할 수 있다
보통의 경우 원격과 로컬 사이에 충돌이 발생할 수 있다
- git fetch로 원격의 내용을 가져온다
- FETCH_HEAD와 main의 충돌 내용을 조절한다
- merge 후 push 하면 충돌이 해결된 것을 확인할 수 있다