- 증상 : 로컬 저장소에서 코드 변경, 커밋하고 푸시할 때 진행중 문구만 나오며 완료되지 않음

 

 - 원인 : '21.8.13일부터 깃허브 비밀번호 정책 변경 (계정 보안을 위해 기존에는 개인비밀번호 외 다른 수단을 권장 -> 필수로 변경)

    ㅇ 깃허브 관련 정책 공지 : https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/#what-you-need-to-do-today

 

Token authentication requirements for Git operations | The GitHub Blog

Beginning August 13th, 2021, we will no longer accept account passwords when authenticating Git operations on GitHub.com.

github.blog

 

  - 해결 : 깃허브 계정에서 PAT (Personal Access Token) 생성 후 비밀번호처럼 사용 (실제로 비밀번호 넣는 곳에 이 토큰을 입력)

     ㅇ 깃허브 계정 토큰생성 방법 :  https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token

 

Creating a personal access token - GitHub Docs

Personal access tokens (PATs) are an alternative to using passwords for authentication to GitHub when using the GitHub API or the command line. If you want to use a PAT to access resources owned by an organization that uses SAML SSO, you must authorize the

docs.github.com

 

 

 

혹 제가 잘못 이해한 부분이 있다면 알려주시면 업데이트 하겠습니다.

'분석 > Github' 카테고리의 다른 글

[github] 초보자의 깃허브 탐방  (0) 2018.04.19
[깃허브] 생활코딩(2)  (0) 2018.02.01
[깃허브] 생활코딩(1)  (0) 2018.02.01
[Git] 깃허브를 배워보자  (0) 2018.01.29


- 깃허브를 하려고 마음먹은지 약 2~3달이 지나고....

  잘 안돼서 막 미루다가, 중간고사 끝나고 다시 하기로 결심했다.


- 이리저리 기억을 되살리다가...

  기본 명령어를 다시 학습했다.


기본적인 git 명령어

* clone : remote repo를 복제하여 local repo를 생성

           서버에 저장되어 있는 git으로 관리되는 소스와 개발이력을 전부 가져와 

            local에서 작업 시작을 준비하는 단계

* checkout : 브랜치를 전환 / 해당 소스 또한 브랜치의 것으로 전환

                실제로 작업을 할 수 있는 상태

* pull : 현재 브랜치의 최신 상태를 remote repo로부터 가져온다.

         local repo내의 현재 checkout된 브랜치 소스를 최신상태로 만들어 준다.

* add : modified 상태에 있는 변경 내용들을 staged 상태로 만들어준다.

* commit : staged 상태에 있는 변경 내용들을 repo에 저장

              commit message를 통해 변경에 대한 decription 기입 가능

* push : local repo에 commit된 내용들을 remote repo에 보낸다.



 - 그런데 문제는 commit 과정까지는 잘 되었으나 push를 하는 과정에서 다음과 같은 오류가 떴다.




곰곰히 생각해보니 약 2달 전에 깃허브를 하다가 말았던게 이 문제를 해결하지 못해서였다.


검색을 하던 와중에 알게된 사실은 

이 문제는 기존 remote repo에 존재하는 자료를 받아오고 다시 push하기 전에 다른 누군가가 수정을 했을 때 생기는 원 자료의 달라짐 때문인 것을 알게 되었다.

따라서 다시 pull 명령을 한 번 해주고 push를 해주면 된다.


이제 깃을 처음 시작하는 나의 계정에 왜 이런 현상이 나타난 건지는 모르겠지만 시키는 대로 해보았다.


< 출처 : https://stackoverflow.com/questions/24114676/git-error-failed-to-push-some-refs-to



git pull --rebase origin master

git push origin master


(다른 브랜치가 없기 때문에, origin master를 꼭 붙여줘야하는듯?)


무튼 이렇게 해결했고, 이제 잘 활용하는 일만 남은 것 같다.


1. 원격저장소(Remote Repository <--> Local)


  1) 버전 or 소스코드를 백업한다.

  2) 다른 사람과 협업이 가능하다.

      >> 프로젝트가 커지는 과정에서 중요한 역할을 한다.

           단, 혼자서 작업한다면 dropbox나 google drive의 스토리지를 사용해도 충분하다.




2. 원격저장소의 기초


  - git init local >> cd local

  - cd .. : 부모 디렉토리로 간다 (상위 폴더로)

  - git init --bare : 작업을 할 수 없고, 저장소로서의 기능만 수행한다. >> 수정이 불가능하게 하는 역할

  - git remote add origin [ 주소 ]

  - git remote remove origin : 지정된 origin을 지운다.

  - git branch : 현재의 branch를 확인한다.

  - git push --set-upstream origin master : 원격 브랜치 사이에 연결하기




3. 원격 저장소를 지역 저장소로 복제(Github)


  1) 원격저장소를 제공

  2) 오픈소스 프로젝트를 제공


  - 일단 이미 존재하는 프로젝트를 컴퓨터로 끌고오는 방법을 알아보자.


1. 깃허브란? 

      - 버전관리 시스템(Version Management, not by changing the file name)

      - 효용 : Backup, Recovery, Collaboration

      - 본질 : 변경사항을 관리한다.

      >> 깃은 어렵다.

           그래서 Dropbox나 Google Drive를 통해서도 가능하다.(쉽게)

           Dropbox는 버전관리 시스템을 일반인이 쉽게 사용하기 위해 만들어진 것이다



2. 왜 깃이 어려운가요??

      - 실제 프로젝트의 코드가 복잡할수록 깃을 공부하는 것이 효율적이다.

      - 실제로 깃이 내가 하고자하는 것보다 훨씬 어렵게 여겨질 수 있다.

      >> 자신의 상황에 알맞게 사용할 것




============================================================


1. 설치



2. 저장소 만들기

   - pwd : 현재 위치를 알려준다

   - cd : 위치 찾아가기

   - mkdir : 새로운 디렉토리를 만든다.


   - git init : 현재 디렉토리를 git의 (버전) 저장소로 만든다.

                이 때 .git 이라는 파일이 생기는데, 이것은 버전정보를 저장하고 있으므로 절대 지우면 안된다!!



3. git이 관리할 대상 파일 지정하기

  - vim [ 파일명 ] : 파일을 생성한다.

  - git add [ 파일명 ]

  - git status



4. 버전 만들기

  - version : 의미있는 변화를 뜻함


  - git config --global user.name ""

  - git config --global user.email ""

    >> 작가를 지정해주는 것과 같음 / 최초에 한 번만 필요


  - git commit >> vim화면 사용

    * vim화면에서?

      - "i" : 입력가능하게 해준다. 나올때는 ESC

      - 완전히 vim에서 나오려면 ":wq"를 입력한다.


  - git에서 새로운 파일이 생겼을 때, 버전관리를 명명할 때는 add 명령어를 쓴다.

  - 또한, git에서 이미 있는 파일에 수정버전 관리를 명명할 때도 add 명령어를 쓴다.


  - git log : 이 때까지의 변경사항을 볼 수 있다. (q키를 통해 나올 수 있음)



5. stage area

  - git add 기능을 통해 선택적인 commit을 가능하게 한다. : Git의 혁신

  - stage area : add를 통해 만든 commit 대기상태



6. 변경사항 확인하기

  - git log의 옵션을 통해 활용이 가능하다.

     1) git log -p : 이전 commit과의 차이점을 보여준다.(historical)

     2) git diff commit ID_1 commit ID_2 : 두 commit 간의 차이를 보여준다.

     3) 작업 후 git diff : 어떠한 작업을 했는지 확인 가능 (commit 전 마지막으로 review 가능)

         - add 한 후에는 안보인다.



7. 과거버전으로 돌아가기

  - 어렵고, 굉장한 주의가 필요하다.

  - git reset commit ID --hard : 해당 commit ID를 최신으로 한다.

    >> 실제로는 남아있고, 복구가 가능하다.

         그러나 공유한 이후에는 reset을 절대로 해선 안된다.

         hard는 조금 위험한 reset 방법

  - git revert : 취소하면서 새로운 버젼을 만들 수 있다.

  >> 그냥 있다는 것 정도만 알아두고, 나중에 더 공부해서 사용할 것..



8. 명령의 빈도 & 매뉴얼

  - git commit --help : 옵션에 대한 도움말을 얻을 수 있다.

  - git commit -a : 바로 add를 실행한다.

  - git commit -m "commit message" : commit message를 editor를 안켜고 바로 실행할 수 있다.



코드를 블로그 타입으로 관리하고 좋고,


특히 협업이 좋아 개발자들이 많이 사용한다는 Git-Hub의 사용법을 찾아보았다.




우습지만, 한참을 해매다 더듬더듬 찾아가고있다.


가입부터 프로필 수정 등등 아직도 모르는 것이 많지만, 그나마 알게된 것을 잊기 전에 기록하고자 한다.





특히, 윈도우라서 Git Bash를 다운 받아 커맨드 형식으로 폴더와 파일을 관리하는 것이 낯설고 어렵게 느껴졌다.

 - git init : initialize

 - ls : 폴더 내의 전체 목록

 - git status : 상태 보기

   ㄴ 수정된 파일이나 새로 생성된 파일 / 업로드 여부 등을 살필 수 있다.

 - git remote add origin git@github.com:Statart/Hello-GitHub.git

   ㄴ 나의 깃 repo와 연결하기(원래 깃 사이트에서 복사해 넣을 수 있다.)

 - git add 파일명 : 해당 파일을 깃에 추가한다.

   git add . : 폴더 안의 모든 파일을 깃에 추가한다.

 

 - git config --global user.email "@naver.com"  : 깃에 자신의 e-mail 정보 입력

 - git config --global user.name "statart"          : 깃에 자신의 ID 정보 입력

 - git commit -m '____'



## 근데 깃허브 ssh 지정하는 것에서 포트22 에 대한 방화벽 문제가 생김....

     학교 와이파이를 사용해서 그런 것 같은데... 어떻게 해결해야하는지 모르겠음..ㅠㅠ




* 참고한 주소들

   1) https://www.inflearn.com/course/github-%EA%B8%B0%EB%B3%B8%EA%B8%B0-10%EB%B6%84/

   2) https://backlog.com/git-tutorial/kr/intro/intro4_1.html

   3) https://nolboo.kim/blog/2013/10/06/github-for-beginner/



=====================================================================


깃허브 공개키 지정하기


참고) 

  1) http://www.whatwant.com/395

  2) http://ourcstory.tistory.com/112

+ Recent posts