git에서 add부터 commit까지 정상적으로 완료됨을 확인하고
git push origin main
를 했다.
그리고 해당 github repository를 확인했지만 업데이트 되지 않았다.
"뭐 그럴수도 있지~ 오류 날수도 있지 괜찮아 github야~" 하고 다시
push를 날렸지만 안되서 또 날려보고 또 날려...도 안됐다.🤦🤷🥲🤦♂️🤷♂️🥲
everything up-to-date
🙋🏻♂️라고..
지는 다 잘 됐다는 메시지를 반복하면서...
결론부터 말씀드리자면 엉뚱한 곳에서 작업하고 올바른 곳에 업로드했다는 것이다.
일단 내 terminal에 지정되어있는 branch가 github에 push하고 싶은
branch와 일치하는지 git branch
를 통해 확인해보자.
뭔가 아차싶으실 것도 없으실 것이다.
아마 저처럼 branch에 대한 개념이 자리잡기 전이기 때문에 어쩌라는건가
하는 상태이실테니..
그럼 이제부터 원인에 대해 설명드려보겠다.
사실 지금까지 다른 브렌치에 있는 파일을 작업하고
그곳에 버전을 저장하고 있던 것이다.
그리고 push만 내가 원하는 branch를 대상으로 한 것이다.
master이라는 브렌치에서 작업하고 git push origin main
이라고
main이라는 브렌치에 push해봤자 이 명령어는 main에 있는 파일들에
대한 commit 상태를 확인하고 github에 push해준다..
A회사(main이라는 branch)의 파일인줄 알고 B회사(master라는 branch)의
파일을 열어 일을 하고(그러니까 add도 commit도 되는거..), 아무것도 변한게
없는 A회사의 파일을 A회사 사장님한테 결제올린 것이다..🤦♂️🤦♀️🤦
terminal에서 git checkout git에올렸던브런치이름
(저의 경우 main)을 입력하시면
코드 에디터의 코드들이 바뀌는 것을 경험하실 것이다..ㅋㅋㅋㅋ(실성)
자, 이제 그렇다면 낼름 B회사 파일에 수정했던 내용들을 복사하고 원복시킨 후
A회사의 파일에 넣고 add~commit 후 push하도록 하자!!🙆🙆♀️🙆♂️
(사장님 미안해요 사랑해요..!)
수십개의 관련 질의에서 문제를 호소하는 사람들에게 달린 답변들은
그저 add를 하고 commit하라는 말이나 -am의 기능을 설명하는 것 뿐이었다.
처음 시도한 방법은 terminal에서 branch를 바꾸는 것이었다.
기본 브렌치가 master로 되어있기 때문인가? 하고
github에 올렸던 최초 commit대로 main branch로 바꾸기 위해
git checkout main
으로 branch를 변경하고 add / commit / push를 했지만
역시나 github repository에는 아무런 변화가 없었다.
(아마 이때 당황해서 commit후 상태메시지를 잘 안본것같다.)
그래서 프로그램 자체의 문제인가 싶어 master branch로 add~push를 했는데
정상적으로 업로드 됐으며 이후 추가적인 push도 잘 되었다.
(master 브렌치의 파일을 열고 작업했으니 당연히..)
그렇다. branch에 대한 이해가 부족했던 것이다.
사실 이 블로그를 쓰면서 원인을 알아냈으며 처음에는 참고했던 자료에
-am
명령어로 해결했다는 글을 보고 따라했다가 해결해서 -am
에
뭔가 특별한 능력이 있는줄 알았다.
아래 링크가 참고했던 자료인데 질문을 다신 분도 add 명령어 후에 -am
을
사용하신걸 보니 git 초보자이고 여러가지 시도를 해보다가-am
에서
얻어걸려 해결하신것 같다.
(저도 그래서 더 헷갈렸다..🥲)
유추해보자면 계속 master 브렌치의 파일로 작업하다가 안되서 껐다켰다 했는데
마침 main 브렌치로 이동해서 main 브렌치의 파일을 열고 작업한 후
이 기가맥힌 타이밍에 -am
을 써서 해결된듯 싶다.
🥕 참고했던 자료: https://stackoverflow.com/questions/19877818/git-commit-m-vs-git-commit-am
정리하자면 나는 최초 init부터 terminal을 master branch로 설정해놓고
모든 작업을 다 했는데 push는 다른 브렌치인 main을 한것이다...
git을 사용할 때는 branch 확인을 꼭꼭꼭! 해야겠다는 교훈으로 마무리!🧖♂️
문제해결 과정에서 궁금했던 부분을 정리해 보았다.
-am
은 두개의 명령어를 하나로 합친 명령어다.
-m
은 원래 commit할 때 vim에서 해당 commit관련 메시지를 남겨야 하는 번거로움을
간단하게 커밋을 하면서 동시에 메시지를 남길 수 있는 기능이다.
-a
는 git add 버전에추가할대상
명령어와 유사한 명령어인데 변경사항을 add하지만
❗️이전에 add된적 없는 파일은 적용이 안되기 때문에 주의해야한다.
그래서 -am
명령어는 git add
를 생략해도 (❗️기존 add했던 파일에 대한)add와
message를 동시에 해준다!
🥕 git commit options: https://git-scm.com/docs/git-commit
SYNOPSIS에 있는 내용은 대략 이런게 있구나 하면서 찾는게 있으면 아랫쪽에 각각 옵션에 대한 자세한 설명을 읽어보면 된다.
(🤗 좀 복잡해보이는데[-a | --interactive | --patch]
처럼 대괄호([]
) 단위로 끊어보면 된다.(-a
는 상호작용과 패치를 한다는 함축적 의미)
-u
는 untracked files을 추적하여 표시하는 옵션이며 설정을 따로 건드리지 않으면
추적되지 않은(git status
명령어를 입력하면 빨간색 이름으로 뜨는)
files + directories를 표시(add
X)하는 옵션이다.
그러면서 no changes added to commit (use "git add and/or "git commit -a")
라는 메시지를 출력한다.
추적되지 않은 대상이 없는 경우에는 nothing to commit, working tree clean
이라는 메시지를 출력한다.
음.. 이번 해결과정을 통해 다시 한 번 재검토에 대한 중요성을 확인했다.
아마 이 글을 쓰지 않았더라면 나는 -am
이 무슨 만병통치약인줄 알고
엉뚱한 지식으로 앞으로의 문제를 해결해보려 했을것이다.
그리고 시간을 버리며 수많은 삽질을 했었을 것이라 예상된다.
이번 글 덕분에 스스로 branch와 git 공식문서에 대한 이해를 할 수 있었고
또한 다양한 명령어들을 익힐 수 있었다.
요즘 계속 동료들과 나자신이 비교되면서 스트레스를 많이 받아왔다.
하지만 그 과정에서 무너지고싶지 않았고 해결하자는 의지와 함께
몇몇 사람들에게 고민을 이야기해보기도 하고
나의 학습이나 수면패턴을 조절해보기도 하는 등 여러가지 시도를 해봤다.
그리고 2주간의 시간동안 나는 꾸역꾸역 해야할 일들을 했고
지금도 그 과정속에 있는데 느끼는 바가 조금씩 생기고 있다.
일단 포기하지 않으면 확실히 얻어내는 것들이 있다는 것이다.
그리고 잘난 사람들 사이에서 꼭 못난 사람이 된다는 것은 아니라는 것이다.
나는 그냥 보통 사람이고 우선 묵묵히 내 일들을 해나가면 될것같다.
조금 느리지만 스스로 중심을 잡고 성의껏 한발한발 내딛으며 나아가보자..!
글 보고 바로 해결했습니다 감사합니다!