거의 항상 Pycharm VCS에서 github repository를 clone해서 commit, push를 해 왔기 때문에 command로 git 어쩌구 하는건 솔직히 익숙하지 않은데 이것때문에 중요한거 중요한 때에 대차게 날려먹지 싶다.
지금까지는 어차피 나 혼자 하는거고 Pycharm이 거의 다 해주기도하고 iterms2에서는 필요할 때 필요한 것만 구글링 해서 했었는데 제대로 좀 알아보고 숙지한 상태에서 해봐야지 싶었다.
그래서 머리 속에서 정리 좀 해볼겸 쓴다.
iterms2에서 처음 git을 시작할 때에는
$ git init
으로 초기화 시켜주어야 한다.
github에서 연습용 새 repository를 하나 만들어준 뒤 clone or download
를 눌러 링크를 복사한다.
$ git clone [copied_url]
을 repository 폴더를 생성하고 싶은 위치해서 입력하면 [repository_name]
폴더가 생성된다.
github가 아닌 다른 서버에서 clone 해 오는건 다음에 쓸 것이다 (사실 SSH용 가져오면 된다..).
새 맥북에서 git 초기화가 처음이라 github의 user_name과 email을 입력하라는 명령이 나온다.
파일을 add
하고 commit
, push
까지 하기 위해 일단 아무 파일이나 생성한다.
$ touch sample.txt
위와 같은 경우에서 touch
는 해당 폴더에 sample.txt
가 존재하는지 확인한 후 있다면 아무 일도 일어나지 않는다. 하지만 만약 없다면 sample.txt
라는 파일을 생성해 줄 것이다.
굳이 맥락상 필요는 없지만 얘기 나온 김에 적어놓자면, touch
로 여러 파일을 생성하고 싶을 때에는
$ touch [file_1_name], [file_2_name], [file_3_name]
과 같이 쭉 나열해서 적어주면 된다.
본론으로 돌아와서 텅 빈 txt파일만 repository에 보내기는 아쉬우니까(?) 한 마디라도 내용을 적어주자.
$ vim sample.txt
i
[what you wanna type in]
[esc]
:wq
파일을 올리기 전에 내가 누군지 알려줘야 commit
시에 에러가 뜨지 않는다.
$ git config --global user.email "[your_email_address]"
$ git config --global user.name "[your_name]"
이건 한 번 해주면 re-init해도 다시 입력할 필요가 없다.
드디어 파일을 올린다.add
는 local의 작업 폴더에서 index까지 올라간 것이기 때문에 아직 remote의 repository에는 파일이 추가되지 않는다.
$ git add [file_name]
이젠 추가하는 파일에 대한 메모를 적어 commit할 것이다.
이 시점에도 아직 remote의 repository에는 파일도 메모도 추가되지 않는다.
$ git commit -m "[commit_memo]"
이제는 push
할 일만 남았는데 나는 항상 새 repository를 만들 때 README.md
로 시작을 한다.
분명히 clone
할 때 README.md
파일을 같이 가져 왔을텐데도
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/[your_name]/[repository_name].git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
에러가 뜬다.
그래서
$ git pull [remote_name] [branch_name]
일단 remote에 있는 모든걸 받아봤다.
참고로 여기서는 remote_name, branch_name이라는 식으로 적어놨는데 어차피 일반적으로 처음에는 remote_name은 origin이고 branch_name은 master다.
branch만들고 checkout하는건 다음에 쓸거다.
인터넷 환경이 별로일 때에는 아래와 같은 에러도 나오는데 시간을 좀 뒀다가 다시 시도하면 잘 된다.
fatal: unable to access 'https://github.com/[your_name]/[repository_name].git/': Could not resolve host: github.com
만약 그래도 안된다면 stack overflow의 could not resolve host github.com error while cloning remote repository in git 같은 글을 보고 해결하면 될 것 같다.
제대로 README.md
파일이 들어 있었다.
다른 변화는 없었다.
이제 push
를 하자.
$ git push [remote_name] [branch_name]
하.. 또 똑같은 pull하라는 error가 뜬다.README.md
말고 뭐 또 없을텐데 자꾸 pull하라 하니까 짜증난다.
다 지우고 새로 했다.
제대로 코드 잔뜩 쓰기 전에 이런걸 해 봐야지 암...
이유를 알았다.git init
한 폴더에 이미 뭐가 잔뜩 있었다.
새로 깨끗하게 하위 폴더를 만들어서 re-init해야 한다.
이미 git이 초기화 되어있는 폴더에서
$ rm -rf .git
을 해서 일단 지워준다.
새로 만든 깔끔한 하위 폴더에서
$ git init
$ git clone [your_repository_url]
$ git add sample.txt
$ git commit -m "create sample.txt"
$ git push [remote_name] [branch_name]
을 시전한다.
아 깔끔하다.
에러 하나 없이 한 방에 성공했다.
아, sample.txt
는 미리 clone
한 local 폴더에 넣어놔야 한다.
여기서 local 폴더는 하위 폴더의 하위 폴더가 되겠다.
교훈: 새로운 것을 시작할 때에는 무조건 깔끔하게 시작하자
'command line 노트' 카테고리의 다른 글
이미 push 한 commit 을 되돌리기 (0) | 2020.07.23 |
---|---|
갑자기 터미널에서 git 권한이 없다며 push에 실패할 때 (0) | 2020.05.06 |
iterms2에서 push 완료 상태를 확인하고 새 branch 만들고 변경하기 (0) | 2020.04.05 |
pip으로 install했던 것들 리스트 출력해서 새 맥북 setup하기 (0) | 2020.04.01 |
git에 push할 때 dyld: Library not loaded가 뜬다면 (0) | 2020.02.17 |