Skip to content
TUWLAB.com
모든 게시물에 대하여 '링크'
방식의 퍼가기만 허용합니다.
한양대학교 전자통신컴퓨터공학부
바라미
  • 363
  • 2573735
DNS Powered by DNSEver.com
일반

[GIT] Commit하고 원격 저장소로 내보내기: add, reset, commit, push

Posted 2014. 10. 23 Updated 2018. 01. 18 Views 27461 Replies 0

 

Commit할 파일 선택하기 - add

Stage 영역은 Commit할 파일들을 올려놓는 일종의 가상 영역입니다. 이 Stage 영역을 이용하여 작업 내용 중 특정 파일들만 선별하여 Commit에 반영할 수 있으며, 이를 활용하여 작업한 내용을 여러 개의 Commit으로 분할할 수 있습니다.

다음 명령어는 변경한 내용을 모두 Stage 영역에 올립니다.

git add --all

특정 파일만 Stage 영역에 올리고 싶다면 --all 대신 파일명 쓰도록 합니다.

git add [File Name]

Untracted File을 제외한 수정/삭제된 파일만 Stage 영역에 올리고 싶다면 -u 옵션을 쓰도록 합니다.

git add -u

reset 명령어를 사용하여 Stage 영역을 초기화 할 수 있습니다.

git reset

 

로컬 저장소에 변경사항을 저장하기 - commit

commit 명령을 통해 로컬 저장소의 현재 Branch에 stage 영역에 올린 변경사항들을 반영한 새로운 commit을 작성합니다.

git commit

명령을 입력하면 Commit Log를 입력할 수 있는 에디터가 나타나고, 여기에 Commit 제목 및 Log를 입력할 수 있습니다. Commit을 취소하려면 아무 것도 입력하지 않고 에디터를 종료하면 됩니다.

commit 명령과 관련하여 자주 사용하는 옵션으로는 --amend가 있습니다. 이 옵션을 부여하면, 새로운 Commit을 생성하지 않고 가장 최근에 작성한 Commit을 수정합니다.

git commit --amend

이 옵션을 사용해 Commit을 수행하면, 작업한 내용을 가장 최근의 Commit에 덧붙입니다. 이는 가장 최근의 Commit을 삭제하고 새로운 Commit을 작성하는 것과 동일한 동작이기 때문에, 가장 최근 Commit의 ID가 새로 부여됩니다.

 

로컬 저장소의 변경 내용을 원격 저장소로 보내기 - push

다음은가장 많이 사용하는 Push 명령어의 형태입니다. 이 명령어는 '현재 branch의 HEAD Commit까지의 변경사항을 origin이라는 이름을 갖는 원격 저장소의 master branch에 전송하라'는 뜻입니다.

git push origin HEAD:master
  • origin: 원격 저장소 별칭(alias)
  • HEAD: 전송할 최종 Commit
  • master: 원격 저장소의 Branch 이름

이 때, origin(게임 런처 아닙니다-_-!)은 별도로 설정하지 않은 경우 clone 명령으로 원격 저장소를 받아올 때 입력했던 저장소 주소가 됩니다.

Push를 할 때마다 [git push git@git.tuwlab.com:batto.git HEAD:master]처럼 원격 저장소 이름을 포함한 긴 명령어를 사용해야 한다면 불편하기 때문에 원격 저장소 주소를 나타내는 별칭을 만들어 놓고 사용하는 것입니다.

이 별칭은 origin 하나만 있는 것이 아니라, 여러 개 만들어 놓고 사용할 수 있습니다. 즉, 로컬 저장소 하나로 여러 개의 원격 저장소와 연동하여 작업을 할 수 있음을 의미합니다.

※ Forced Push

Push를 수행할 때, 로컬 저장소에는 존재하지 않는 Commit이 원격 저장소에 존재하는 경우 Push 요청이 거절됩니다. 정확히 말하면, 원격 저장소에서 로컬 저장소로 변경사항을 반영한 뒤 원격 저장소의 HEAD Commit이 변경된 경우를 의미합니다.

즉, 로컬 저장소에서 작업하고 있는 도중에 다른 개발자가 원격 저장소에 Push를 한 경우 이후 본인의 Push 요청이 받아들여지지 않고 Reject됩니다.

Push 요청이 Reject된 경우, 일반적인 경우라면 Pull을 통해 원격 저장소의 변경사항을 받아와서 자신의 작업 내용과 병합(Merge)하거나 Commit을 재정렬(Rebase)한 뒤 다시 Push를 시도해야 합니다.

하지만, 이미 Push한 자신의 Commit을 수정해야 하는 경우와 같이 특수한 경우에는 Forced Push를 사용할 수 있습니다. 이 경우, 로컬 저장소와 원격 저장소의 공통 조상 Commit 이후의 원격 저장소 Commit은 모두 삭제되로, 로컬 저장소의 Commit 내용으로 덮어 씌워지게 됩니다.

Forced Push를 하려면 다음과 같이 --force 옵션을 넣거나, +를 붙이면 됩니다.

git push --force origin HEAD:master
git push origin +HEAD:master

Forced Push는 일반적인 Push와 다르기 때문에, 사용하기 전에 세심한 주의를 기울여야 합니다. 원격 저장소에 있는 하나 이상의 Commit이 삭제되므로 이로 인해 동료 개발자에게 혼란을 불러일으킬 수 있습니다.

Forced Push를 하는 경우는 이미 Push한 자신의 Commit을 수정하기 위한 경우가 대부분입니다. 대개 Push한 직후 '아 맞다!'하고 떠오르는 내용을 수정하기 위한 경우입니다.ㅎㅎ

따라서 Push를 하기 전에 대상 Commit들을 다시 한 번 살펴보는 습관을 들여야 합니다. 불가피하게 Forced Push를 사용해야 할 경우, Project Manager 및 다른 팀원들에게 알린 뒤 해야 의도치 않은 불상사를 막을 수 있습니다.

 

TAG •
서비스 선택
이용중인 SNS 버튼을 클릭하여 로그인 해주세요.
SNS 계정을 통해 로그인하면 회원가입 없이 댓글을 남길 수 있습니다.
댓글
?
Powered by SocialXE

List of Articles
번호 분류 제목 글쓴이 최근 수정일 조회 수
49 Linux Ubuntu에서 저장소(Repository) 위치 변경하기 TUW 2014.04.23 24061
48 Linux [Ubuntu] 화면캡처 및 작업공간 전환 단축키 TUW 2014.04.20 24089
47 Linux Linux 시스템 종료 명령어 - shutdown과 halt TUW 2014.04.23 24476
46 Linux [사설 클라우드 구축] 삼바(SAMBA) 서버 구축, 우분투-윈도 공유폴더 구현 file TUW 2017.06.02 24644
45 Android android.process.acore 문제 해결방법 file TUW 2021.12.28 24722
44 일반 AutoCAD 자주 사용하는 명령어 요약 정리 TUW 2014.04.24 25464
43 PSpice PSpice에서 Model Editor를 활용하여 새로운 부품 만들고 사용하기 file TUW 2021.12.28 26764
» 일반 [GIT] Commit하고 원격 저장소로 내보내기: add, reset, commit, push TUW 2018.01.18 27461
41 일반 [GIT] GIT이란 무엇인가, GIT에 대하여 file TUW 2017.06.02 27704
40 PSpice PSpice에서 기존 부품 Parameter 수정하여 시뮬레이션하기 file TUW 2021.12.28 27855
39 Python [Django Tutorial] 6. Database 연동하기 - Model설계, Migration file TUW 2017.06.16 29398
38 Linux [Ubuntu] Windows와 멀티부팅 환경에서 시간이 맞지 않는 현상 해결하기 TUW 2017.06.08 29492
37 Linux 디렉토리를 다른 경로에 마운트하기 (mount --bind) TUW 2018.11.16 29547
36 AVR [AVR 강의] AVR 강의자료 - 5. 아날로그-디지털 변환기(ADC) file TUW 2017.06.02 31018
35 일반 PSpice 시뮬레이션 결과창에서 Search Command 사용하기 file TUW 2017.06.02 31898
34 일반 [GIT] 병합하고 Commit 재정렬하기: cherry-pick, rebase, merge file TUW 2017.06.02 32190
목록
Board Pagination Prev 1 ... 7 8 9 10 11 12 13 Next
/ 13

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5