https://2jinishappy.tistory.com/337

 

좋은 Pull Request를 만드는 방법과 PR Template 구성

https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository Creating a pull request template for your repository - GitHub Docs For more information, see "About iss

2jinishappy.tistory.com

 

bash 관리자 권한으로 실행 후, 아래 코드 입력

// 관리자 권한 실행
git config --system core.longpaths true

 

|  인텔리j에 깃허브 프로젝트 가져오기

- 현장에서는 보통 기존에 있는 프로젝트를 가져와서 작업하는 일이 많다.

- 오늘은 인텔리j에 깃허브 플젝을 가져오는 걸 배웠는데 한 번 다시 정리해보려고 한다.

 

1. Get from VCS 선택하기

인텔리j를 처음 연 상태라면 [Get from VCS] 를, 아니면 [file]-[new]-[get from version control ~~] 를 선택한다.

나는 예전에 계정을 저장해뒀었는데, 로그인을 하고 필요하면 인증키를 삽입하면 된다.

 

2. 하단에 Clone할 로컬 저장소 위치를 지정하고 [Clone]하면 완료

클론이 잘 되었다. 아래를 보면 알 수 있지만 인텔리j는 마크다운 언어를 이미지로 뷰로 바로 볼 수 있기도 하다.

README.md 파일은 여기서 수정하면 된다.

1. 오류 설명

- 깃으로 원격저장소에 push를 할 때 아래와 같은 오류가 자주 발생한다.

- 오류 메세지 내용은 main 에서 main으로 보낼 때 non-fast-forward 가 발생해서 거절한다는데, 

 ! [rejected]        main -> origin/main (non-fast-forward)
error: failed to push some refs to 'github.com:simDev1234/spring.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and 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.

- 힌트에 이유와 해결방법이 나와있었고, 해석하면 아래와 같았다.

1. 너가 push 하기 전에 원격 저장소에서 누가 수정작업을 했었네.

2. 음, 아님 뭔가 충돌하는게 있어. 브랜치 체크아웃하고, 새 브랜치 만든 다음에 merge 해봐

3. (1)에서 말한 거의 해결 방법 -- pull 해봐

4. pull해도 안되고, 브랜치 만들어서 merge해도 안 되면, git push --help로 git 사이트에 문의해봐

 

2. 해결하기

(1) 첫번째 해결방법 : pull 하고 push 하기

git pull

 

(2) 두번째 해결방법 : branch 새로 생성하고 main으로 체크아웃 후, merge 하기

이 방법을 쓸 때 생각할점

* bash를 쓰면 Merge하기 전에 Conflict가 발생할 부분에 대해 가시적으로 눈으로 확인하기 어려울 수 있으니,

* 현장에서 사용하게 될 땐, 소스트리를 쓰는 편이 나을 것 같다. 

git branch -M newbranch           // 브랜치 생성

git push -v origin newbranch      // push

git checkout main                 // 체크아웃 -> main

git merge newbranch               // merge 
 
git status                        // 상태확인

git log --decorate --graph        // 로그확인

>> 위의 코드를 모두 다 썼다면, 깃허브의 원격저장소로 이동해서 Pull Request를 보내고, Conflict가 없으면 Merge한다.

>> Merge 후에는 안 쓰는 브랜치는 예쁘게 정리하자.

git branch -a            // 브랜치 확인

git branch -d newbranch  // 브랜치 삭제

 

|  버전관리 시스템 이란?

- VCS (version control system) 또는 SCM (Source Code Management) 이라고 한다.

- 과거에는 프로젝트를 압축파일을 통해 관리했으나, 현재는 소스 버전관리 시스템을 사용해 관리한다.

- 다양한 버전 관리 시스템 :

  CVS, SVN(Subversion), git, SourceSafe(MS), TFS

- 다양한 버전 관리 툴 :

  github, bitbucket, gitlab 

 

|  Git 설치 및 GitHub 가입하기

1. git 설치 :  https://git-scm.com/ 에서 Git 설치를 한다. (Mac이나 리눅스는 홈브루 등을 사용)

// 설치 확인하기
git --version

2. github 가입 : https://github.com/ 에서 가입을 한 후, repository를 하나 만들어 준다.

 

|  환경 설정

1. 사용자 설정 및 세팅

// 사용자 설정
// - local : 현재 저장소, global : 한 사용자 전체, system : 모든 사용자 대상
git config --global user.email "you@gmail.com"
git config --global user.name "someone"

// 설정 확인
git config --list

2. SSH 인증키 만들기

https://bit.ly/368zxvR 에서 가이드에 따라 인증키를 만든다. (CMD 쉘을 사용해서 명령어 작성)

// 최상위 경로에서 .ssh로 이동
cd ~/.ssh

// 목록 확인
ls
authorized_keys2  id_dsa       known_hosts
config            id_dsa.pub

// .pub 없으면 ssh-keygen으로 key 생성
ssh-keygen -t rsa -C "[본인의 github 이메일 계정 주소]"

// id_rsa 디렉토리에 id_rsa.pub이 만들어진다.
// 비번입력

// (github settings에서 id_rsa.pub 내용을 ssh key 등록)

// pc에서 확인
ssh -T git@github.com

 

|  작업 플로우

1. 로컬 저장소 <-> 원격 저장소 연결 

 

방법1. 원격 저장소를 로컬로 Clone

git clone [git 저장소 url]

 

방법2. 로컬 저장소에 원격 저장소를 추가

git remote add origin [원격저장소 ssh 주소]

 

2. 깃 생성하기 & gitignore 만들기

git init

 

gitignore 파일 만들기

https://www.toptal.com/developers/gitignore/ 에서 옵션을 달고 gitignore 를 만들어준다.

 

3. staging 영역에 추가

// 현재 목록의 업데이트 파일
git add .

// 수정된 파일 전부
git add *
git add -A

// 추가되지 않은 파일 모두 한번에 올리기
git add -i

// rf. 스테이징에서 파일 내리기
git rm --cached [파일경로]

 

4. 상태 확인

git status

 

5. local repository에 commit

git commit -m "feat : 메세지내용~~"

 

6. remote repository에 push

* 이 과정에서 만약 remote repository가 private이면, 로그인을 하도록 한다.

// 브랜치 생성or체크아웃
// git을 처음 생성하면 master로 브랜치가 되어 있음
git branch -M main

// 원격으로 push *가끔 -v 없으면 push가 안된다.
git push -v origin main

// rf. 원격에서 pull (fetch + merge)
git pull

 

|  로그 확인하기

git log --decorate --graph

 

 

[ 참고 및 출처 ]

- 부트캠프 강의

- https://maliceit.tistory.com/51

https://wordbe.tistory.com/entry/Git-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95-%EC%A0%95%EB%A6%ACcommit-push-pull-request-merge-%EB%93%B1

 

|  소스 트리에서 클론이 안 될 때

- 스터디를 하다가도 한 번 이런 이슈가 있었는데

- 내가 경험한 원인은 gitHub에서 저장소를 private로 등록을 한 상태로 SSH를 통해 클론을 하려고 해서였다.

- 다른 원인으로는 gitHub가 보안을 강화하면서 소스트리로 클론을 할 때 인증을 한 번 더 요구할 때에 이런 이슈가 발생하기도 한다고 한다. 그럴 때엔 plink.exe를 통해 이슈를 해결하라고.. (최하단의 참조 확인하기)

 

|  해결하기

[1] 소스트리의 [도구] - [SSH 키 생성 또는 불러오기] 를 누른다.

 

[2] 아래와 같이 PuttyGen이 나타나는데, 여기서 [Load]를 누른다.

 

[3] 파일 보기를 [All Files]로 바꾼 뒤에 깃허브에 등록한 ssh 인증키(.pub 말고 다른 거) 를 가져온다.

[4] 가져오면 아래와 같이 나타나는데, [Save private key]를 누르면 .ppk 파일로 자동 변환된다.

[5] 이 상태에서 소스트리를 껐다가 다시 키면, 클론할 때 알아서 윈도우창에서 SSH 인증키를 등록하라고 뜨는데,

     이 때, 불러오기로 .ppk 파일을 등록해주면 된다.

 

[ 참조 ]

SSH key 파일로 개인 private key 생성 https://blog.dalso.org/article/ssh-key-to-ppk-convert

소스트리 사용 시 git 주소 인식 인 될 때 https://marobiana.tistory.com/169

'Git,Github' 카테고리의 다른 글

[Git/Github] fail to push to ~~ 해결하기  (0) 2022.09.29
Git, Github 정리  (0) 2022.09.27
[Git/Github] 소스트리로 클론하기  (0) 2022.09.23
[Git/Github] 저장소(Repository)  (0) 2022.09.23
[Git/Github] Git의 기본 동작 원리  (0) 2022.09.23

+ Recent posts