kkamagi's story

IT, 정보보안, 포렌식, 일상 공유

Programming

git 명령어 / github 로컬 저장소 연결

까마기 2020. 10. 26. 14:31
728x90
반응형

git에 대한 기본적인 명령어와 흐름을 알아보자.

 

1. 로컬 저장소 만들기

- 파일들을 버전 관리할 장소(폴더)를 정한다.

- 그 안에서 'git init'이라고 명령어를 친다.

- 이상한 폴더, 파일들이 만들어지는데 git을 쓰기 위한 준비, 새로운 저장소

  (repository)가 만들어진 것이다.

 

2. 원격 저장소 불러오기

- github에서 원격 저장소를 만들었다면 그것을 로컬과 연결시켜야 한다.

- 'git clone 사용자명@호스트:/원격/저장소/경로'라고 치면 된다.

- 사용자명 blabla..에 대해서는 github에서 원격 저장소에 들어가서

  clone or download라는 버튼을 누르면 원격저장소의 주소가 나오니

  그것을 쳐주면 된다!

 

git 저장소 다운로드 (git clone)

# git clone github 주소

 

* git에서 특정 브랜치만 clone하는 방법

git을 사용하다 브랜치 전체를 clone하지 않고 특정 브랜치 하나만 clone하는 것이 가능하다. 특히 브랜치가 많은 경우 이 방법을 사용할 수 있다.

git clone -b {branch_name} --single-branch {저장소 URL}

ex) git clone -b javajigi --single-branch https://github.com/javajigi/java-racingcar

위와 같이 실행하면 java-racingcar의 javajigi branch만 clone할 수 있다.

3. 작업한 내용 업로드하기

- 작업을 완료했다면 git과 원격 저장소에 반영해야 한다.

- 'git add 파일 이름' 혹은 'git add *'로 인덱스(staged state)에 추가시킨다.

- 이것은 일단 추가 대기 상태에 등록해놓은 것이고 실제로 추가시키려면

  'git commit -m "이번 확정본에 대한 설명"'으로 커밋!한다

- 원격 저장소에 저장할 때는 'git push origin 가지이름'으로 푸쉬!해준다

* 그 전에 원격 저장소와 로컬 저장소의 폴더 구성이 다르다면, 즉 갱신 

  상태가 다르다면 먼저 pull, 그러니까 둘의 상태를 같게 해줘야 한다.

- 'git pull'로 하면 된다!

 

* error: failed to push some refs to 'https://github.com/pj6563/Online-Glasses.git'

hint: Updates were rejected because the tip of your current branch is behind

hint: its remote counterpart. Integrate the remote changes (e.g.

hint: 'git pull ...') before pushing again.

hint: See the 'Note about fast-forwards' in 'git push --help' for details.

 

혹시 push할 때  다음과 같은 오류가 났다면 아마 위에서 말한 원격 저장소와 로컬 저장소의 상태가 달라서 나는 오류일 것이다.

그러니 pull을 먼저 해주어 둘의 상태를 같게 한 다음 push를 해준다

 

그리고 'git status'를 통해서 현재 git의 상태를 알 수 있으니 오류 해결에 적극 이용

하기 바란다!

 

 

4. git pull 강제로 하기

 

 

git fetch --all

git reset --hard origin/master

git pull origin master

 

git reset --hard origin/product

git pull origin product

 

2. git pull error 시 대처 방법

 

  • 로컬 파일을 삭제 -> git pull 확인
  • git status 로 확인

            * 변경된 파일들 또는 문제가 되는 파일 리스트 확인

            # git reset HEAD </path/file명>

  • git pull
  • 정상 확인

참고 URL : https://nesoy.github.io/articles/2017-03/Git-Stash

 

Git Pull 충돌 오류시 해결방법

 

nesoy.github.io

 

로컬 저장소에 있는 프로젝트를 깃허브 사이트를 통해 만든 저장소로 push 하는 경우에 이런 메세지가 뜨는 경우가 있다.

 

1
2
3
4
5
6
7
8
C:\Users\gitProject>git push origin master
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/userId/userProject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
cs

 

push 전에 먼저 pull을 해서 프로젝트를 병합해 주어야 한다. 

1
 refusing to merge unrelated histories
cs

pull 명령 실행시 이런 문구와 함께 진행되지 않는다면, 다음의 명령으로 실행한다.

1
git pull origin 브런치명 --allow-unrelated-histories
cs

--allow-unrelated-histories   이 명령 옵션은 이미 존재하는 두 프로젝트의 기록(history)을 저장하는 드문 상황에 사용된다고 한다. 즉, git에서는 서로 관련 기록이 없는 이질적인 두 프로젝트를 병합할 때 기본적으로 거부하는데, 이것을 허용해 주는 것이다.

5. git 저장소 변경

 

git remote set-url origin [git 저장소 주소]

 

6. Git 에서 비밀번호 물어보지 않게 하기

Git 를 사용할 때 git pull 등의 명령어를 실행할 때 비밀번호를 물어보게 될 때 매번 물어보지 않게 하는 방법을 안내한다.

두가지 방법이 있는데

 

1. repository url 에서 비밀번호는 입력하는 방법

2. 캐시를 설정하는 방법

이 있다.

git clone 을 할 때 다음과 같이 비밀번호를 미리 입력한다면 비밀번호를 물어보지 않는다. 이렇게 이용할 수도 있으나 추천 하지는 않는다.

git clone https://myid:mypassword@bitbucket.org/myid/myapp.git

캐시를 설정하여 특정시간동안 비밀번호를 다시 물어보지 않게끔 할 수 있다.

여기서 –global 옵션과 함께 명령어를 실행한다면 모든 계정에 대해서 캐싱을 한다는 의미이다. 만약 특정 git 디렉토리만 설정한다면 –global 옵션을 제거해 주면 된다.

git config --global credential.helper cache

디폴트는 900초(15분) 동안 캐시를 저장하므로 15분이 지나고 다시 시도하면 비밀번호를 다시 물어보게 된다.

넉넉하게 타임아웃을 설정할 수 있는데 만약 10일간 캐시를 설정한다고 한다면 다음과 같이 입력하면 된다.

git config --global credential.helper 'cache --timeout=864000'

 

7. git branch 변경

 

# git checkout [브랜치명]

 

ex)

 

# git checkout product

 

8. github 소스 다운 및 로컬 저장소 연결하기

[github] python_study 저장소 연결 (로컬에서)

 

echo "# python_study" >> README.mdgit init

git add README.md

git commit -m "first commit"

git remote add origin https://github.com/karas639/python_study.git

git push -u origin master

…or push an existing repository from the command line

git remote add origin https://github.com/karas639/python_study.git

git push -u origin master

…or import code from another repository

You can initialize this repository with code from a Subversion, Mercurial, or TFS project.

 

 

참고 :  https://emflant.tistory.com/123

 

* 추후 계속하여 github 저장소로 push가 필요한 경우 해당 폴더로 이동 및 파일, 폴더 복사 후 아래 명령 실행

# git add 파일, 폴더명

ex) git add 01.\ 파이썬\ 기초\(딥러닝\ 및\ 인공지능\ 부록\)/

# git commit -m "메모"

# git push -u origin master

 

9. git 초기화

.git 폴더를 삭제

git init

git add .

git commit -m "test"

git push -u origin main or master

 

참고 URL :

http://emflant.tistory.com/135

http://thdev.tech/web/2016/08/14/Github-Page-CName-Setting.html

https://backlogtool.com/git-guide/kr/stepup/stepup1_1.html

 

 

반응형