본문 바로가기

Git

Bash를 통해 Commit, Push하기

요약 : git status - > git add . - > git commit -m "커밋메시지" - > git push

1. 작업할 폴더에서 Bash를 연다

 

빈 공간에 오른쪽 클릭 - Open Git Bash here

 

 


2. git status로 상태 확인

git status를 입력하면 staged, unstaged 두종류가 나올 수 있다

 

위 사진에서 초록색 부분은 이미 git add가 되어서 다음 커밋에 포함될 준비가 완료된 상태인 파일들에 대한것이다.

Changes to be commited가 그 뜻임

그리고 Changes not staged for commit은 '파일은 수정되었지만 아직 git add가 안된 상태'인 파일들에 대한것이다.

 

이런 의문이 든다. 정확히 똑같은 3개의 파일들에 대해 git add가 이미 되었는데 git add가 아직 안된 상태라고?

그건 IntelliJ를 사용하면서 '새롭게 파일을 생성한 후에 git에 추가'한 뒤 새롭게 코드를 작성했기 때문이다.

즉 파일 자체는 git add가 적용되어있지만, 이후에 적힌 코드들은 git add가 안된것

 

따라서 git add를 통해 다시 commit에 포함시킬 파일들을 추가해줘야한다.

 

git add .

 

여기서 나오는 경고문은 '파일이 LF로 저장되어 있는데, 다음에 Git이 만질 때(체크아웃이나 reset 등을 할 때) CRLF로 바꿀 것이다' 라는 정보성 메시지이다. 무시해도 된다고 한다.

 


 

3. git commit -m "커밋에 포함할 메시지 입력"

git commit -m "엘렐레"

 

커밋이 잘 되었다.

 


 

4. 이제 git push를 하면 된다.

여기에서 문제가 발생했고 조그마한 시도를 해봤다.

 

git push를 하면서 발생한 문제

 

나는 git push -u origin main을 통해 로컬의 main 브랜치를 찾아서 커밋하려고 했다.

그런데 error : src refspec main dos not match any, 즉 로컬에 main 브랜치가 없다고 한다!

Git이 main 브랜치를 찾아서 푸시하려고 했지만 내 로컬에 해당 브랜치가 없다고 함..

 

 

그래서 그냥 git push를 해봤다.

그랬더니 fatal이 뜨면서 '현재 브랜치가 원격(origin)의 어디와 연결되어있는지 모르겠어! 그래서 push를 할 수가 없어!'

라고 한다.

그러면서 git push --set-upstream origin 브랜치명 을 사용하라고 권하고 있다.

 

 

세번째로 bash가 말해준 git push --set-upstream origin 브랜치명 을 입력했다.

branch '브랜치명' set up to track 'origin/브랜치명' 하면서 내 로컬과 원격 리포지토리의 연결이 설정되었다고 한다.

 

 

이제 로컬과 원격 폴더가 연결되었으니

git add . - > git commit -m "커밋메시지" - > git push 이 과정만 수행하면 bash를 통해 commit & push를 진행할 수 있다.

 

commit & push가 정상적으로 된 모습