※ [ GITHUB 최초 push하는 방법 & 오류 해결 방법 ]
== 최초 push ==
1. git init (현재 디렉터리에 Git 저장소를 생성한다.)
2. git status (장바구니 상태를 확인한다.)
3. git add . 입력 (현재 folder에 있는 모든 것을 장바구니에 담는다.)
4. git commit -m "commit 내용" 입력
5. git remote add origin https://github.com/아이디/저장소명.git 입력
☆ 혹시라도 저장소 연결을 잘못했다면?
git remote remove origin 입력
-> origin 이라는 변수에 담은 저장소를 삭제한다.
6. git remote -v 입력 ( fetch, push 2개 나오는지 확인, 잘 등록되었는지
확인한다.)
7. git status 입력 ( On branch master nothing to commit,
working tree clean 이 보이는지 확인/보이지 않을 경우 과정이 잘못된 것)
8. git push origin master 입력
9. id, pw 입력
== 오류 해결 방법 ==
repository를 생성할 때, README 파일을 함께 생성할 경우
최초 push를 할 때, 오류가 발생한다.
그럴 경우,
git pull origin 브런치명(master) --allow-unrelated-histories
위의 명령어를 입력하여 최초로 pull을 먼저하고, push를 해준다.
--allow-unrelated-histories
이 명령 옵션은 이미 존재하는 두 프로젝트의 기록(history)을 저장하는 드문 상황에 사용된다고 한다.
즉, git에서는 서로 관련 기록이 없는 이질적인 두 프로젝트를 병합할 때 기본적으로 거부하는데, 이것을 허용해 주는 것이다.
[git, github 데이터 올리는 처리 과정, 순서]
1. github(원격지 server)에 repository 생성
2. 내컴퓨터에 repository 생성(과정을 통하여 .git 숨길파일 자동생성) / 아래 조장 선행 목록 참고
★working directory : 현재 작업중인 디렉토리
-->working directory 안에 저장소를 만드는 것.
3. 저장소 2개 생성(server, 내컴퓨터)
4. 2개의 각 저장소를 만들어주었으므로 데이터를 공유할 수 있다(주고 받을 수 있음)
5. 물건을 주문할 때, 장바구니에 담고(1) 결제(2)를 한다.
6. git status(장바구니 상태 확인, 담는 과정)
7. git commit -m "java github practice creation"
--> 내컴퓨터 repository에 저장하는 행위(아직 server에 저장되지 않음/ 이대로 컴퓨터 종료하면 github에서 데이터를 받을 수가 없음)
8. github에 저장해주어야 한다. (github 안에는 저장소가 수백만개가 있음)
9. working directory 의 repository와 server의 저장소를 먼저 연결해주어야 한다.
10. git remote add origin https://github.com/아이디/저장소명.git 입력 --> 2개의 저장소를 서로 연결해주는 행위.
[git, github 데이터 받아오는 처리 과정, 순서]
1. properties에 데이터를 받아올 working directory 만들기 (절대 한번에 받아올 수 없다)
2. git init 을 입력하여 데이터를 받아올 저장소를 생성해준다(하단의 상세 절차 참고)
3. 저장소를 만들어 준 후, git remote add origin ~~~~ 입력을 통하여 연결을 해주어야 한다.
4. pull
- 최초에 가져오기(꼭 워크스페이스 폴더에서 실행)
- git clone https://github.com/****/****.git
- repository 내 모든 수정 되돌리기
- git checkout .
- 내 소스코드를 조장의 리포지터리의 최신 버전으로 만들기
- git checkout .
- git pull origin master
- 특정 폴더 아래의 모든 수정 되돌리기
- git checkout {dir}
- 특정 파일의 수정 되돌리기
- git checkout {file_name}
- git add 명령으로 stage에 올린 경우 되돌리기(장바구니되돌리기)
- git reset ( 이미 장바구니에 올린 것들 제거, 다시 장바구니에 담기 위해)
- 과거로 돌아가기
- git checkout {커밋번호}
- 현재로 돌아오기
- git checkout .
- git checkout master
- git checkout .
- commit 입력한 내용 수정하기
- git commit --amend
- 명령어를 입력하고 수정, 저장하고 git push origin master 라고하면 된다.
- git 로그인 정보 없애기
- git config --global credential.helper manager
- git credential-manager delete https://github.com
-------------------------------------------------------------------------------------------------------------------------------
[ 용어, 명령어 설명 ]
* repository : 하나의 저장소
==> project를 5개 만들고자 한다면 repository를 5개 만들면 된다.
--> project 1개당 repository 1개.
* 저장소 이름 예시 : java-ssg
★저장소 ↓
https://github.com/본인아이디/저장소 이름(java-ssg) --> 이것을 외워서 사용한다.
--> project를 하는 사람이 5명이어도 저장소는 위의 1개를 함께 사용한다.
* git은 ctrl + c / ctrl + v 가 입력되지 않는다.
* 방향키 ↑ 누르면 명령어를 직접 입력하지 않고 전에 입력했던 명령어들을 사용할 수 있다.
* 입력된 명령어들 지우기. 청소하기 --> clear 또는 ctrl + l
* whoami : 현재 git 사용자 확인
[ 컴퓨터를 format하지 않는 이상 딱 1번만 하면 되는 작업 ]
* config : 환경을 설정하다.
* git config --global user.name
의미 : git의 설정에서 user.name 이 있는지 보겠다.
* git confit --global user.email
==> 본인이 사용하기 위한 setting을 하고 사용해야 한다.
* git config --global user.name"사용자아이디(대소문자 구별)"
-->사용자 아이디 새로 setting
* git config --global user.email"사용자이메일(@~~~~~~)"
-->git사용자 이메일 새로 setting
*
git remote -v : 연결되어 있는지 확인
eclipse에서 .gitignore file을 만들고 무시할 항목을 적고 git status 확인해도 장바구니에서 빠진다.
--> git에서 code . 하지 않아도 된다.
* git clone https://github.com/*****/JDBC-TEXT-BOARD.git {임의 폴더명 입력}
--> eclipse -> properties 접속해서 어떤 폴더에도 들어가지 않고 Git Bash Here 접속해서 입력!
--> 폴더, git init, pull 하지 않아도 위에 코드만 입력하면 자동으로 내려 받아진다.
그리고 나서 -> cd {폴더명} -> git log 입력 -> 생성자(조장)의 작업 리스트를 한눈에 확인할 수 있다.
내려받기 끝!
* 최신 코드가 아닌 이전 코드를 내려 받고 싶으면 해당 페이지 접속 -> commit 복사 ->
git checkout {commit 복사한거 붙여넣기} --> 이렇게하면 소스코드가 자동으로 바뀐다. 그 상태로 변한다.
* 과거로 돌아가기 (시간여행) -> git checkout{commit 번호}
* 현재로 돌아오기(내려 받았던 최신코드)
[순서] 1. git checkout .
2. git checkout master
3. git checkout . 순서대로 3가지를 입력해주어야 한다.
[ repository 생성 ]
* repository 새로 만들기 --> https://github.com/new 접속
* repository name 작성
* Description : 서술, 기술, 설명
==> 해당 repository의 간단한 설명 정도.
* public (기본 선택값)
* 이 사이에 선택사항 일단 무시
* "Create repository" click !
● 선택사항 : 협력자를 초대할 경우
* settings -> Manage access -> invite a collaborator click! -> 협력자 정보로 초대
( ID or Email 입력 -> 협력자는 email 접속 후, 수락)
* 하단에 Pending Invite --> 초대 미수락 상태
[ github를 사용하기 위한 Git 설치 ]
https://git-scm.com/ 접속 -> download
[ 조장 선행 사항 : repository 생성자 ]
* eclipse 실행 -> project 열기
* 공유하고 싶은 project 우클릭 -> properties(성질, 특징) -> Location(show in system explorer) ->
공유하려는 project folder click -> 우클릭 -> Git Bash Here click -> user.name && user.email Check!
* project 우클릭 -> properties -> show in system explorer -> project folder 접속(꼭 폴더 안으로 들어가야 함)
-> 우클릭 Gib Bash Here -> pwd 입력 (내가 공유하고 싶은 folder가 나오는지 확인한다) -> git init 입력(현재 디렉터리에 Git 저장소를 생성한다) -> .git(숨김folder) 자동 생성 -> 공유할 folder, file 둘러보기 -> 우클릭 git bash here click -> git status 입력(지금 관리되고 있는 녀석들이 확인된다)
-> code . 입력(visual studio가 실행된다) -> .gitignore 생성(new file 생성) : git한테 무시해야될 리스트를 알려주는 행위 -> 생성한 file에 필요없는 항목을 모두 적는다(visual code in the file) -> git status를 참고해서 공유하지 않아도 되는 folder, file명 그대로 visual studio(.gitignore file)에 입력, 저장 해준다. 임의로 한개를 입력하고 git에서 git status(상태, 상황) 를 입력해보면 무시할 파일, 폴더는 제외된 것을 확인할 수 있다. -> .gitignore에 무시할 데이터를 모두 입력 후 git에서 git status 입력(장바구니 상태 확인) -> git add .gitignore 입력(장바구니에 담는 행위) -> git status 입력 -> 초록색으로 보이는 new file: .gitignore가 장바구니에 담긴 것을 의미(빨간색은 아직 담지 않은 상태를 보여준다/장바구니 상태) -> git add . 입력(현재 folder에 있는 것을 모두 담는다는 명령어/1개씩 담기 번거로움) -> git status 입력 -> 초록색으로 보이는 것들이 모두 장바구니에 담긴것 을 의미 -> git commit -m "java github practice creation" 입력 (임의 이름 입력)_해당 데이터의 이름을 명시적으로 적어준다. 몇년 후에라도 알아볼 수 있도록(나, 팀원을 위해서) ->
-> git remote add origin https://github.com/아이디/저장소명.git 입력 (origin은 변수명 같은 것으로 임의로 지정하여 사용할 수 있지만 실무에서 보통 origin을 많이 사용한다/ 해당 저장소에 연결, 저장하겠다는 행위/즐겨찾기) -> ★혹시나 저장소 연결을 잘못한 경우에는 git remote remove origin 입력(해당 변수명의 주소값을 삭제하겠다는 의미) ->
git remote -v 입력(fetch, push 2개 나오는지, 잘 등록되었는지 확인한다) -> git status 입력( On branch master nothing to commit, working tree clean 이 보이는지 확인/ 보이지 않을 경우 과정이 잘못된 것) -> git push origin master 입력(올리는 행위) -> id, pw 입력 -> ★ 만약 id, pw 입력했는데도 되지 않을 경우 ->
git config --system --unset-all credential.helper 입력 후 다시 git push origin master 입력 -> 올리기 끝!
[ 조원(협력자)이 받아오는 방법 ]
방법 2가지 (최초, 그 이후)
= 최초 =
eclipse에 아무 project 우클릭, properties click -> show in system explorer -> project들이 있는 창에 저장소명(java-practice)으로 folder 생성(어떤 project에도 들어가지 않은 채로, 그리고 절대 new project를 만드는 행위를 하면 안된다) -> 생성한 folder(java-practice)로 접속 -> 우클릭, Git Bash Here 열기 -> pwd 입력(접속한 folder 경로가 나오는지 확인해야 한다/Git Bash Here 를 연 폴더 경로) -> git init 입력(저장소 생성하는 행위)/ folder가 숨김파일되어 있을 수 있음
-> git remote 입력 -> 아무것도 출력되지 않는 것을 확인 할 수 있음 -> git remote add origin https://github.com/아이디(이름_repository생성자의)/java-practice.git 입력(remote repository는 팀원당 1개이다) _저장소를 만들어주고 연결해주는 행위 -> git pull origin master 입력 -> ls 입력(listing이라는 의미로 모든 file을 보여준다) -> 복사(내려받기) 완료 -> java-practice folder 안에 없던 데이터가 생성된다(내려받은 데이터들). 그렇지만 eclipse는 이 데이터들을 내려받았는지 알아차리지 못한다. -> eclipse 열기 -> File -> import click!(new project를 만드는 행위가 아닌 있는 데이터를 불러오기 위함으로) -> General -> Projects from Folder or Archive -> Directory(import source를 수정하거나) click! -> 불러오려는 folder 선택 -> finish -> 불러와진 데이터를 확인한다 -> 끝!
[ 시나리오 ]
1. 조장(repository 주인)이 먼저 Main.java에 //화이팅 입력해보기. (push했던 project Main.java를 의미)
2. git status 입력 / modified 빨간색은 아직 장바구니에 담기기 전 상태를 의미.
3. 다시 1번 줄에 //화이팅을 지우고 properties - show in system explorer 접속 - 해당 project folder 접속 - 우클릭 Git Bash Here - git status 입력 -> On branch master nothing to commit, working tree clean (아무것도 할 게 없다, puch한 내용이랑 다를게 없다)
4. 다시 //화이팅 입력 후 -> git add . 입력 ( 장바구니에 모든 데이터를 담는 행위) -> git status 입력(장바구니 확인)
-> ★ 변경된 사항의 데이터만 골라서 담는것 같음...
5. git reset : 장바구니 담는 것을 취소하는 행위
6. git reset 해본 후, 다시 //주석달고 임의의 단어 입력해서 다시 git add . 입력 -> git status 입력 -> 장바구니 상태를 확인한다.
7. git commit -m "화이팅 메세지 추가" -> enter
8. 내 컴퓨터 저장소에 저장된 것 뿐. server repository에 올려야 한다.
9. git push origin master 입력
[ ★ git, github 사용하면서 필수 작업 과정 ★ 반복 행위 ]
== 조장(repository 생성자) ==
1. 작업
2. git add . (장바구니에 담고)
3. git commit -m "" (로컬 저장소에 추가하고)
4. git push origin master (로컬 저장소에 있는 데이터를 서버에 올리고)
5. ★commit 충돌로 pull이 제대로 되지 않는 경우,
--> git stash 입력 후 git pull origin master를 다시 입력해본다.
그리고 가장 최신의 자료를 불러오지 않는 경우,,,
== 조원(협력자) ==
1. git pull origin master (처음이 아닌 그 이후 내려 받을 때)
[ ★ 강사쌤 tip (project folder 내의 folder 설명) / 무시하거나 꼭 공유해야하는 데이터 선택 요령 ]
1. bin -> src(소스 코드)를 실행하면 생성되는 "실행 파일"
2. 소스코드는 공유해야한다.
3. bin은 소스코드를 공유하면 실행하는 순간 bin(실행파일) 생성되므로 공유하지 않아도 된다.
4. .settings : 조원(협력자가)이 한 설정 : 공유하지 않아도 된다.
5. .classpath, .project
6. site(게시판 구현하면서 자동 생성되는 folder) --> 공유하지 않아도 된다. / db도 완전 필수는 아님.
7. lib (jackson) 공유
★★ 협업 3차 5분부터 이어서 정리하기
* git clone https://github.com/****/****.git {임의 폴더명 입력}
내가 입력한 프로젝트명의 폴더가 이미 존재하는 경우, .git 뒤에 띄어쓰기하고 새로 만들 폴더명을 입력해주면
그 폴더에 pull 데이터가 저장된다.
'GIT, github, gitlab' 카테고리의 다른 글
전체적으로 git을 사용하는 방법을 원숭이를 그려가며 잘 설명해놓은 사이트 (0) | 2020.12.25 |
---|---|
Git - ( local / remote ) branch 사용법 정리 (0) | 2020.12.25 |
Git, Github 공부(드림코딩 by 엘리) 2편 (0) | 2020.12.13 |
Git, Github 공부(드림코딩 by 엘리) 1편 (0) | 2020.12.13 |
[ github ] 사용자 등록 정보를 한번에 확인하는 명령어 (0) | 2020.12.01 |