티스토리 뷰

Project/Git

GIT 마무리

Mr.Kang 2020. 9. 3. 16:02

☞ 기본조작

저장소를 만들고 싶다

$ git init

저장소를 작성하려는 폴더 내에서 init 명령어를 실행합니다.

파일과 폴더를 인덱스에 등록하고 싶다.

$ git add <filepattern>

filepattern에는 파일명을 직접 지정하는 것 외에도 “*.txt”와 같은 와일드카드가 붙은 지정도 가능합니다. ”.”를 지정하면, 하위 폴더 내의 모든 파일을 인덱스에 등록할 수 있습니다.
-p 옵션를 붙이면, 파일 변경 부분의 일부만을 등록할 수 있습니다. 또한, -i 옵션을 붙이면, 인덱스에 등록하는 파일을 대화식으로 선택할 수 있습니다.

인덱스에 추가된 파일을 커밋하고 싶다.

$ git commit

-a 옵션을 붙이면 변경된 파일(신규로 추가된 파일을 제외)을 검출하여 인덱스에 추가하고, 그것들을 커밋하는 동작을 명령어로 실행할 수 있습니다. -m 옵션을 붙이면 커밋 메시지를 지정하여 커밋할 수 있습니다. -m 옵션을 붙이지 않은 경우 커밋 메시지를 편집하기 위한 에디터가 실행됩니다.

변경된 파일의 목록을 확인하고 싶다.

$ git status

-s 옵션을 붙이면 설명문을 표시하지 않을 수 있습니다. -b 옵션을 붙이면, 설명문은 표시하지 않으면서 브랜치명을 표시할 수 있습니다.

파일의 변경 내용을 확인하고 싶다.

$ git diff

옵션을 지정하지 않은 상태에서는 작업 트리와 인덱스의 변경 사항을 표시합니다. -cached 옵션을 붙이면, 인덱스와 HEAD의 변경 사항을 표시합니다. 또한, HEAD나 커밋을 지정하면 작업 트리와 지정된 HEAD 와의 변경 사항을 표시합니다.

커밋 로그를 보고 싶다.

$ git log

특정 파일의 커밋 로그를 참조하려면 파일명을 지정합니다.

커밋의 상세 로그를 확인

$ git show <commit>

show 명령어의 인수에는 log 명령어에서 참조한 커밋이나 HEAD 를 지정할 수 있습니다.

파일과 폴더명을 변경하거나 이동

$ git mv <oldfilename> <newfilename>

파일 삭제

$ git rm <file>

관리대상이 아닌 파일 삭제

$ git clean

-n 옵션을 붙이면 삭제되는 파일을 확인할 수 있습니다. -f 옵션을 붙이면 실제로 파일을 삭제합니다.
기본적으로 .gitignore에 지정된 파일은 삭제 대상이 아니지만, -x 옵션을 붙이면 .gitignore에 지정된 파일도 삭제 대상이 됩니다.

변경한 인덱스에 등록되지 않은 파일 되돌리기

$ git checkout -- <file>

인덱스에 등록한 파일을 취소

$ git reset HEAD -- <file>

이전에 커밋한 적이 있는 파일만을 모두 인덱스에 등록

$ git add -u

☞ 태그조작

브랜치 목록 확인

$ git branch

브랜치 생성

$ git branch <branchname>

브랜치명 변경

$ git branch -m <oldbranch> <newbranch>

브랜치 삭제

$ git branch -d <branchname>

HEAD에 병합되어 있지 않은 커밋이 있는 경우, 브랜치를 삭제할 수 없습니다. 병합되어 있지 않은 커밋이 있는 브랜치를 강제로 삭제하려면, -D 옵션을 붙여 실행합니다.

브랜치 전환

$ git checkout <branch>

-b 옵션을 붙이면, 브랜치의 작성과 작성한 브랜치로의 전환을 명령어로 실행 할 수 있습니다.

브랜치 병합

$ git merge <branch>

--no-ff 옵션을 붙이면, fast-forward의 병합인 경우라도 병합 명령어를 작성합니다. 이는, 브랜치가 존재한다는 정보를 남기고 싶을 때 유용한 옵션입니다.

☞ 태그조작

태그목록 확인

$ git tag

-n 옵션을 붙이면, 태크에 붙은 주석을 확인할 수 있습니다.

태그 생성

$ git tag <tagname>

주석이 달린 태그생성

$ git tag -a <tagname>

태그삭제

$ git tag -d <tagname>

☞ SSH접속설정

Windows SSH 접속 설정

시작 메뉴의 모든 프로그램에서 TortoiseGit 항목을 열어, Puttygen을 실행합니다.

Generate 버튼을 클릭하고, 프로그레스 바가 오른쪽 끝으로 갈 때까지 빨간 선으로 표시된 영역 안에서 마우스를 움직입니다.

키 생성이 완료되면, 다음과 같은 화면으로 전환됩니다. Save private key 버튼을 클릭하여, ppk 파일을 저장해둡니다.

또한, Public key에 표시되어 있는 텍스트가 공개 키의 내용이 됩니다. 공개 키는 Load 버튼으로 ppk 파일을 읽어옴으로써 다시 표시할 수 있습니다.

push 시에 SSH 접속을 설정할 경우, 오른쪽 클릭 메뉴의 TortoiseGit>push 를 클릭해 다음과 같은 화면이 표시되면 관리 버튼을 클릭합니다.

다음 화면이 표시되므로, 원격에 origin, URL에 SSH 경로, Putty 인증에 방금 저장한 ppk 파일을 지정하여 Add New/Save 버튼을 클릭합니다. 원격 목록에 origin이 추가되면, OK 버튼을 클릭합니다.

MAC SSH접속 설정

애플리케이션/유틸리티 폴더 내에 있는 터미널을 실행하여, 다음 명령어를 실행하십시오.
$ ssh-keygen

그러면 아래와 같은 출력이 표시되므로, 필요한 부분에서 Enter 키와 패스프레이즈로 설정하는 문자열을 입력하십시오.
패스프레이즈를 설정하지 않을 경우에는, 패스프레이즈 입력에는 아무것도 입력하지 않고 Enter 키를 입력합니다.

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/eguchi/.ssh/id_rsa): <Enter 키를 입력>
Created directory '/Users/eguchi/.ssh'.
Enter passphrase (empty for no passphrase): <패스프레이즈를 입력>
Enter same passphrase again: <다시 한 번 같은 패스프레이즈를 입력>
Your identification has been saved in /Users/eguchi/.ssh/id_rsa.
Your public key has been saved in /Users/eguchi/.ssh/id_rsa.pub.
The key fingerprint is:
57:15:3c:ca:f2:dc:27:6d:c2:9a:88:d0:70:cf:8d:31 eguchi@eguchi-no-MacBook-Air.local
The key's randomart image is:
+--[ RSA 2048]----+
|             .o. |
|             .o  |
|           ... . |
|      . . E.o    |
|       +So.O o . |
|      . ..+ + = +|
|       . . . o = |
|        . . o    |
|                 |
+-----------------+

생성한 SSH 키의 공개 키의 내용은 다음 명령어를 실행하면 확인할 수 있습니다

$ cat ~/.ssh/id_rsa.pub

# 아래와 같이 출력된다.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDkkJvxyDVh9a+zH1f7ZQq/JEI79dVjDSG
4RzttQwfK+sgWEr0aAgfnxdxQeDKxIxqI1SwyTY8oCcWzvpORuPqwbc7UWWPcCvbQ3jlEdN
5jvwKM82hincEWwI3wzcnVg2Mn8dH86b5m6REDzwRgozQ3lqrgwGVlTvkHDFs6H0b/1PSrM
XGppOP/QXGEVhZ6Hy4m3b1wMjjrbYwmWIeYklgoGHyrldhAaDYc33y7aUcRyFyq5DubtsLn
2oj4K+1q36iviCHxCOri0FDmn2dzylRCI4S+A2/P7Y7rVfdT+8OWYKCBUs8lfjujghEtejq
Qmj9ikyGTEAW1zQCN7hVwYdjL hoge@hoge.local

콘솔에서 SSH접속 설정

# 아래와 같이 명령어 입력

$ ssh-keygen

그러면 아래와 같은 출력이 표시되므로, 필요한 부분에서 Enter 키와 패스프레이즈로 설정하는 문자열을 입력하십시오.패스프레이즈를 설정하지 않을 경우에는, 패스프레이즈 입력에는 아무것도 입력하지 않고 Enter 키를 입력합니다.

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/eguchi/.ssh/id_rsa): <Enter 키를 입력>
Created directory '/Users/eguchi/.ssh'.
Enter passphrase (empty for no passphrase): <패스프레이즈를 입력>
Enter same passphrase again: <다시 한 번 같은 패스프레이즈를 입력>
Your identification has been saved in /Users/eguchi/.ssh/id_rsa.
Your public key has been saved in /Users/eguchi/.ssh/id_rsa.pub.
The key fingerprint is:
57:15:3c:ca:f2:dc:27:6d:c2:9a:88:d0:70:cf:8d:31 eguchi@eguchi-no-MacBook-Air.local
The key's randomart image is:
+--[ RSA 2048]----+
|             .o. |
|             .o  |
|           ... . |
|      . . E.o    |
|       +So.O o . |
|      . ..+ + = +|
|       . . . o = |
|        . . o    |
|                 |
+-----------------+

생성한 SSH 키의 공개 키의 내용은 다음 명령어를 실행하면 확인할 수 있습니다

$ cat ~/.ssh/id_rsa.pub

# 아래와 같이 확인
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDkkJvxyDVh9a+zH1f7ZQq/JEI79dVjDSG
4RzttQwfK+sgWEr0aAgfnxdxQeDKxIxqI1SwyTY8oCcWzvpORuPqwbc7UWWPcCvbQ3jlEdN
5jvwKM82hincEWwI3wzcnVg2Mn8dH86b5m6REDzwRgozQ3lqrgwGVlTvkHDFs6H0b/1PSrM
XGppOP/QXGEVhZ6Hy4m3b1wMjjrbYwmWIeYklgoGHyrldhAaDYc33y7aUcRyFyq5DubtsLn
2oj4K+1q36iviCHxCOri0FDmn2dzylRCI4S+A2/P7Y7rVfdT+8OWYKCBUs8lfjujghEtejq
Qmj9ikyGTEAW1zQCN7hVwYdjL hoge@hoge.local

☞ 커밋로그 조작

이전 작성한 커밋의 내용을 수정

$ git commit --amend

--amend 옵션을 지정해서 커밋하면, 현재 브랜치의 선두를 커밋에 덮어쓸 수 있습니다.

직전 커밋의 메세지만 수정

$ git commit --amend

인덱스에 파일을 등록하지 않은 상태에서 --amend 옵션을 지정하고 다시 커밋합니다. 댓글 입력화면이 표시되므로 코멘트를 수정합니다.

과거 커밋의 내용을 수정

$ git rebase -i <commit>

지정 한 커밋 이후의 커밋을 지정하면 커밋의 목록이 표시됩니다. 그 중에서 수정하려는 커밋을 찾아 그 행의 pick 문자를 edit 으로 변경하고 저장 · 종료합니다.

다음으로 수정하고 싶은 파일을 편집, 보존한 뒤에 --amend옵션을 지정하여 커밋을 실행합니다.

$ git commit --amend

마지막으로 --continue옵션을 지정하여 rebase를 실행합니다.

$ git rebase --continue

과거의 커밋 메시지만 수정

$ git rebase -i <commit>

지정한 커밋보다 이후의 커밋을 지정하면, 커밋의 목록이 표시됩니다. 그 중에서 코멘트을 수정하려고 하는 커밋을 찾아 그 행 pick 문자를 edit로 변경하고 저장 · 종료합니다.

다음 --amend 옵션을 지정하여 커밋을 실행합니다. 코멘트 입력 화면이 표시되므로 코멘트를 수정합니다.

$ git commit --amend

마지막으로 --continue옵션을 지정하여 rebase를 실행합니다.

$ git rebase --continue

REBASE 실행중 중지

$ git rebase --abort

--abort 옵션을 지정하여 rebase 명령어를 실행하면 rebase 를 중지할 수 있습니다.

HEAD의 이동 이력 확인

$ git reflog

reflog 명령을 실행하는 것으로 과거에 HEAD가 가리킨 커밋의 목록을 볼 수 있습니다.

08084a5 HEAD@{0}: commit: pull 설명을 추가
99daed2 HEAD@{1}: commit: commit의 설명 추가
48eec1d HEAD@{2}: checkout: moving from master to issue1
326fc9f HEAD@{3}: commit: add 설명을 추가
48eec1d HEAD@{4}: commit (initial): first commit

이 목록에는 삭제한 커밋 및 rebase 등에 의해 정리된 커밋도 표시됩니다.

브랜치 앞부분의 이동 이력 확인

$ git reflog <ref>

<ref>에 브랜치명을 지정하여 reflog 명령을 실행하면 과거에 그 브랜치의 선두가 가리키는 커밋의 목록을 다음과 같은 형식으로 볼 수 있습니다.

445e0ae issue1@{0}: commit (merge): Merge branch 'master' into issue1
1c904bd issue1@{1}: commit (amend): pull의 설명을 수정
08084a5 issue1@{2}: commit: pull 설명을 추가
99daed2 issue1@{3}: commit: commit의 설명 추가
48eec1d issue1@{4}: branch: Created from 48eec1ddf73a7fb508ef664efd6b3d873631742f

# 이 목록에는 삭제한 커밋 및 rebase 등에 의해 정리된 커밋도 표시됩니다.

이전 커밋을 취소

$ git reset --hard HEAD~

REBASE 취소

$ git reset --hard <commit>

먼저 reflog 명령어를 사용하여 rebase하기 직전의 커밋을 찾아, 해당 커밋의 해시 값 또는 「HEAD@{숫자}」 값을 확인합니다. . 이하의 기록은 update 2의 커밋을 한 후에 rebase 명령어로 2개의 커밋을 통합한 후의 이력인데, 71bdfbd 및 HEAD@{4}가 적당한 커밋입니다.

a51f8d2 HEAD@{0}: rebase -i (finish): returning to refs/heads/dev
a51f8d2 HEAD@{1}: rebase -i (squash): update 1
3a273e1 HEAD@{2}: rebase -i (squash): updating HEAD
f55ef69 HEAD@{3}: checkout: moving from dev to f55ef69
71bdfbd HEAD@{4}: commit: update 2
f55ef69 HEAD@{5}: commit (amend): update 1

찾아낸 해시 값 또는「HEAD@{숫자}」값을 <commit>에 지정하여 reset 명령을 실행합니다.

이는 rebase에 의해 이동한 브랜치 앞부분의 위치를 rebase하기 전의 커밋의 위치로 되돌림으로써, rebase를 없었던 것으로 하고 있습니다.

이전에 실행된 RESET를 취소

$ git reset --hard ORIG_HEAD

reset 전의 커밋은 ORIG_HEAD라는 이름으로 참조할 수 있으므로, 이를 지정하여 reset합니다.

다른 브랜치로부터 특정 커밋을 가져와 내 브랜치에 커밋

$ git cherry-pick "<commit>"

# <commit>에 지정한 커밋을 현재 브랜치에 복사합니다.

특정 커멘트를 포함한 커밋 찾기

$ git log --grep "<pattern>"

# <pattern>에 지정한 문자가 커밋 로그에 포함되는 커밋만을 표시합니다.

☞ 원격조작

원격 저장소 복제

$ git clone <url>

clone 명령으로 복제하면 원격 저장소를 추적하도록 자동으로 설정됩니다. 따라서 이후의 push 및 fetch / pull 명령으로 저장소를 생략 한 경우에도 제대로 변경 내용을 반영하고 검색 할 수 있습니다.

원격 저장소 추가

$ git remote add <name> <url>

원격 저장소 목록 확인

$ git remote

# -v 옵션을 붙이면, 원격 저장소의 상세정보를 표시할 수 있습니다

원격 저장소 브랜치로부터 로컬 저장소 브랜치를 생성

$ git checkout <branch>

Git 최신 버전이라면, chekcout 명령어의 인수에 원격 저장소에 존재하는 브랜치를 지정하면, 원격 저장소의 브랜치로부터 로컬 저장소 상에 브랜치를 작성할 수 있습니다. 옛 버전이라 작성할 수 없는 경우에는, 아래와 같이 branch 명령어로 브랜치를 작성하십시오.

$ git branch <branchname> origin/<branch>

원격 저장소에 브랜치를 만들거나 브랜치에 변경 내용을 반영

$ git push <repository> <refspec>

-u 옵션을 붙이면, 대상의 브랜치를 원격 저장소에 추적시킬 수 있습니다. 이로 인해, 이후의 push 또는 fetch / pull 명령어로 저장소를 생략한 경우에도 정확하게 변경내용을 반영/취득하는 것이 가능해 집니다.저장소에는 remote add 명령어로 추가한 저장소명 외에도 URL을 직접 지정할 수도 있습니다. repository를 생략하면, 추적하는 원격 저장소가 지정된 것이 됩니다. refspec에는 브랜치 이름 등을 지정할 수 있습니다. refspec을 생략하면 데폴트에서는 원격 저장소와 로컬 저장소 모두에 존재하는 브랜치가 대상이됩니다.

원격 저장소 브랜치의 변경 내용을 확인

$ git fetch <repository> <refspec>

원격 저장소에서 변경한 내용을 확인하고 싶지만, 로컬 저장소에 반영시키고 싶지 않은 경우에는 fetch 명령을 사용합니다. fetch 명령은 로컬 저장소의 브랜치는 변경되지 않습니다.저장소및 refspec은 생략 할 수 있습니다. repository를 생략했을 경우의 동작은 push했을 때와 비슷합니다. refspec을 생략하면 데폴트에서는 모든 브랜치가 대상이 됩니다.

원격 저장소 브랜치의 변경 내용을 가져온다

$ git pull <repository> <refspec>

pull 명령어에 의해, 원격 저장소의 변경 내용이 로컬 저장소의 브랜치에 반영됩니다. 「pull = fetch + merge」로 이해 해하면 좋을 것입니다. 저장소와 refspec은 생략 할 수 있습니다. 저장소를 생략했을 경우의 동작은 push의 경우와 비슷합니다. refspec를 생략하면 현재 브랜치가 대상이 됩니다.

원격 저장소의 브랜치를 삭제

$ git push --delete <repository> <branchname>

push 명령어에 --delete 옵션과 <원격 저장소명> <삭제하려고 하는 브랜치명>을 지정하여 실행합니다.
1.7 보다 이전 버전의 git에서는 --delete 옵션은 사용할 수 없으므로 아래와 같이 지정합니다.

$ git push <repository> :<branchname>

원격 저장소에 태그를 생성

$ git push <repository> <tagname>

# –tags 옵션을 붙이면, 로컬 저장소에 존재하는 모든 태그를 원격 저장소에 작성할 수 있습니다.

원격 저장소의 태그를 삭제

$ git push --delete <repository> <tagname>

push 명령어에 --delete 옵션과 <원격 저장소명> <삭제하려고 하는 브랜치명>을 지정하여 실행합니다.
1.7 보다 이전 버전의 git에서는 --delete 옵션은 사용할 수 없으므로 아래와 같이 지정합니다.

$ git push <repository> :<tagname>

등록된 원격 저장소의 주소를 변경

$ git remote set-url <name> <newurl>

지정된 이름으로 등록되어 있는 원격 저장소의 주소를 <newurl>의 주소로 변경합니다.

등록된 원격 저장소의 이름을 변경

$ git remote rename <old> <new>

<old>로 지정한 이름에 등록되어있는 원격 저장소의 이름을 <new>로 변경합니다.

☞ Git설정

사용자 이름 / 메일주소를 설정

$ git config --global user.name <username>
$ git config --global user.email <mailaddress>

--global 옵션을 사용하지 않으면 해당 저장소만 유효한 설정이 됩니다.

출력 색상을 변경

$ git config --global color.ui auto

명령어 Alias[단축키] 설정

$ git config --global alias.<aliasname> <commandname>

필요없는 파일을 관리 대상에서 제외

$ echo <filename> >> .gitignore

.gitignore에 기재된 파일명은 Git 관리 대상에서 제외됩니다. 이 때 .gitignore 파일을 커밋 해놓을 필요가 있습니다.

빈 폴더를 관리 대상에 추가

$ cd <dirname>
$ touch .gitkeep

Git에서는 빈 폴더는 관리 대상이 되지 않습니다. 따라서 적당한 파일을 폴더에 넣어둘 필요가 있습니다. 파일명은 무엇이든 상관없지만 관례적으로 .gitkeep 이라는 파일명이 사용되는 경우가 많습니다.

설정 목록을 확인

$ git config --global --list

프록시 서버를 경유하여 http접속

.gitconfig 파일의 http 항목에 다음 설정을 추가합니다.

[http]
proxy = <프록시 서버의 주소>:<프록시 서버의 포트 번호>

config 명령어로 다음과 같이 설정할 수도 있습니다.

$ git config --global http.proxy <프록시 서버의 주소>:<프록시 서버의 포트 번호>

사용자 인증이 필요한 프록시 서버를 경우하여 http접속

.gitconfig 파일의 http 항목에 다음 설정을 추가합니다.

[http]
proxy = http://<사용자이름>:<비밀번호>@<프록시 서버의 주소>:<프록시 서버의 포트 번호>

config 명령어로 다음과 같이 설정할 수도 있습니다.

$ git config --global http.proxy http://<사용자이름>:<비밀번호>@<프록시 서버의 주소>:<프록시 서버의 포트 번호>

☞ Stash

현재 작업을 일시적으로 저장

$ git stash save

save는 생략할 수 있습니다. 또한, save 뒤에 내용을 나타내는 메시지를 지정할 수 있습니다.

일시적으로 저장한 작업 목록 확인

$ git stash list

일시적으로 저장한 작업 되돌리기

$ git stash pop

인수를 지정하지 않으면 저장된 작업 목록 중 가장 최신으로 저장된 작업을 복원합니다. stash@{1}과 같이 인수를 지정하면 특정 작업을 선택하여 복원할 수 있습니다.

일시적으로 저장한 작업 삭제

$ git stash drop

인수를 지정하지 않으면 저장도니 작업 목록 중 가장 최신으로 저장된 작업을 삭제합니다. stash@{1}과 같이 인수를 지정하면 특정 작업을 선택하여 삭제할 수 있습니다.

일시적으로 저장한 작업을 모두 삭제

$ git stash clear

☞ 문제해결

SSH에서 원격저장소 접속시 Permission denied(publickey) 오류

  • URL 설정이 잘못되어 있지는 않나요?
  • 로컬 기기에 비밀키(Private Key)가 제대로 설치되어 있는지 확인해 보았나요?
  • 원격에 공개키(Public Key)가 제대로 설치되어 있나요?

Backlog 상의 저장소에 비밀키/공개키가 바르게 설정되어 있는지 확인하기 위해 명령어를 실행합니다.

$ ssh <space>@<space>.git.backlogtool.com

<space>는 적절히 이용하는 스페이스로 바꾸십시오. 예를 들어, "demo.backlogtool.com"라면, "demo@demo.git.backlogtool.com"가 됩니다.

제대로 설정되어 있는 경우에는 아래와 같은 로그가 출력됩니다. 오류 메시지가 표시된 경우 위의 설정을 다시 확인해 보세요.

Hi yourname! You've successfully authenticated, 
but Backlog does not provide shell access.
Connection to git.backlogtool.com closed.

HTTPS에서 CLONE를 할 수 없습니다.

Git의 오래된 버전에서는, 'push' 및 'pull'이 원활하게 되지 않는 경우가 있다고 합니다. '1.7.10' 이후의 버전을 사용하십시오. SourceTree 및 TortoiseGit를 사용하시는 분은, 각 클라이언트에서 사용하고 있는 Git 버전을 확인해 주세요.

HTTPS에서 push/pull 명령시 매번 비밀번호를 입력

Git '1.7.10' 이후 버전을 설치하면 매번 비밀번호를 입력하지 않아도 됩니다.

Windows

git-credential-winstore이 툴을 이용하면 비밀번호를 한 번만 입력해도 됩니다.

 

anurse/git-credential-winstore

Little app for use as a HTTPS Credential Cache helper that uses the Windows Credential Store. - anurse/git-credential-winstore

github.com

 

Mac

입문 편이나 발전 편에서 Mac의 GUI 클라이언트로 다루고 있는 SourceTree에서는, Mac의 키 체인과 연동하는 기능이 표준으로 제공되고 있습니다. 이 기능을 사용하면 Pull 이나 Push 때마다 비밀번호 입력이 필요 없게 됩니다.

 

콘솔

Mac에서는, 키 체인과 연동하기 위한 인증 도우미를 사용할 수 있습니다. Homebrew를 사용하시는 분은, Git을 설치할 때 인증 도우미도 자동으로 설치됩니다. 그 외의 경우에는 인증 도우미를 수동으로 설치해야 합니다.

인증 도우미가 설치되어 있는지 여부는 아래와 같은 명령어로 확인할 수 있습니다.

$ git credential-osxkeychain
Usage: git credential-osxkeychain <get|store|erase>

인증 도우미가 설치되어 있지 않은 경우 아래와 같은 출력이 표시됩니다.

$ git credential-osxkeychain
git: 'credential-osxkeychain' is not a git command. See 'git --help'.

그러한 경우 인증 도우미를 직접 다운로드하여 적절한 경로에 가져다 놓으면 해당 기능을 이용할 수 있습니다.

curl -s -O http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain
chmod u+x git-credential-osxkeychain
mv git-credential-osxkeychain /usr/local/bin

설치 후 인증 도우미를 활성화하는 설정을 해야합니다.

git config --global credential.helper osxkeychain

push 명령 실행시 원격저장소에 미적용 문제

신규로 작성한 저장소를 clone 하여 로컬 저장소를 만들고, 그 로컬 저장소 상에 push 하면 아래와 같은 로그가 출력될 수 있습니다.

$ git push
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
Everything up-to-date

이는 원격 저장소 상에 아직 master 브랜치가 작성되지 않았기 때문입니다. push 할 때의 인수가 생략된 경우 기본적으로 원격 저장소와 로컬 저장소 양쪽에 모두 존재하는 브랜치가 push의 대상이 됩니다. 따라서 원격 저장소에 존재하지 않는 브랜치를 push하는 경우에는 저장소와 브랜치를 명시적으로 지정할 필요가 있습니다.

$ git push -u origin master

한 번 push를 실행하면 master 브랜치가 만들어지므로, 이후의 push에서는 저장소와 브랜치의 지정을 생략할 수 있습니다.

출처

backlog.com/git-tutorial/kr/reference/backlog.com/git-tutorial/kr/reference/

'Project > Git' 카테고리의 다른 글

[Git Flow] Git Flow 개요 및 설치 사용법  (0) 2022.03.23
GIT 심화편  (0) 2020.09.03
GIT 입문편  (0) 2020.09.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함