Git을 사용하다보면 수정한 내용을 되돌리고 싶을 경우가 간혹있다. GUI가 있는 Git 클라이언트의 경우엔 discard를 하면 되지만 command line interface에서는 어떻게 해야 할지 잘 모를때가 많다. 각 상황별로 수정 내역을 되돌리는 법을 알아보자.

1. git add 명령을 하기 이전(stage에 올리지 않은 경우)

1.1 repository 내 모든 수정 되돌리기

$ cd {repository_root_dir}
$ git checkout .

1.2 특정 폴더 아래의 모든 수정 되돌리기

$ git checkout {dir}

1.3 특정 파일의 수정 되돌리기

$ git checkout {file_name}

2. git add 명령으로 stage에 올린 경우

$ git reset

3. git commit을 한 경우

3.1 commit 내용을 없애고 이전 상태로 원복

master 브랜치의 마지막 커밋을 가리키던 HEAD를 그 이전으로 이동시켜서 commit 내용을 없앰

$ git reset --hard HEAD^

3.2 commit은 취소하고 commit 했던 내용은 남기고 unstaged 상태로 만들기

$ git reset HEAD^

3.3 commit은 취소하고 commit 했던 내용은 남기고 staged 상태로 만들기

$ git reset --soft HEAD^

4. 모든 untracked 파일들을 지우기

git clean -fdx

5. git push를 한 경우 remote repository도 이전으로 되돌리기

$ git reset HEAD^  #local repository에서 commit을 하나 되돌림
$ git commit -m "..."  #되돌린 것으로 commit
$ git push origin +master #remote repository를 강제로 revert


'GitLab' 카테고리의 다른 글

GitLab 공개키 등록하기  (0) 2017.11.02
SVN 저장소를 Git으로 옮기는 방법  (0) 2017.11.02
Git Bash로 SSH 공개키 발급하기  (0) 2017.11.02
Git 최초 설정  (0) 2017.11.02
git 초기 환경설정  (0) 2017.10.17
Posted by 모래반지빵냐빵냐
,

이 문서는 GitLab에서 발급받은 SSH 공개키를 등록하는 절차에 대해서 가이드합니다. 물론 GitLab은 HTTP를 통한 Clone을 제공하고 있지만, 지속적인 로그인이 귀찮으신 분들은 SSH 공개키 등록을 통해 이를 방지할 수 있습니다.


SSH 공개키 발급은 다음 문서를 통해 확인하시기 바랍니다. 



SSH 공개키와 개인키가 준비되었다면, 아래를 읽어보시고 GitLab 자신의 계정에 등록하시기 바랍니다. 


먼저 GitLab으로 로그인을 수행합니다. 

프로젝트 화면이 나오는데 좌측 메뉴의 아랫부분의 Profile Setting 메뉴를 클릭합니다. 


gitlab01.png


Profile Setting화면이 나타나면, 아래 그림처럼 좌측의 SSH Keys 버튼을 클릭하고 ADD SSH KEY 버튼을 클릭해줍니다. 


gitlab02.png


이제 Add an SSH Key 화면이 나타나면, Key Text Area 영역에 발급받은 SSH 공개키를 입력합니다. 이때 주의할 점은 키는 엔터없이 한줄로 붙어있어야 합니다. 붙여넣기가 완료되었으면, Title을 입력하고 ADD KEY 버튼을 클릭합니다. 


gitlab03.png


이렇게 작업 PC에 따라 SSH를 발급하고 여기에서 추가합니다. 


http://pseg.or.kr/pseg/?mid=infouse&search_target=tag&search_keyword=SSH&document_srl=5966

'GitLab' 카테고리의 다른 글

Git - 수정한 것 되돌리기  (0) 2018.01.26
SVN 저장소를 Git으로 옮기는 방법  (0) 2017.11.02
Git Bash로 SSH 공개키 발급하기  (0) 2017.11.02
Git 최초 설정  (0) 2017.11.02
git 초기 환경설정  (0) 2017.10.17
Posted by 모래반지빵냐빵냐
,

기존 Subversion으로 관리하던 소스코드를 Git으로 관리하는 것이 대세이다. 이 게시물은 svn으로 관리하던 소스코드를 Git으로 옮기는 방법을 정리 한다.

02-2.svg 

사전 준비:

- Subversion client 설치

- Git 설치

- SVN 사용자 목록 파일 생성 (예: authors.txt)

  Terry Hwang<terry.hwang@curvc.com> 

          .

          .

          .

Step 1) SVN 저장소 클론

SVN repository가  /trunk, /branches, /tags 로만 구성되었을 경우:

1
git svn clone --stdlayout --authors-file=authors.txt  <svn-repo>/<project> <git-repo-name>


예)

1
git svn clone --stdlayout --authors-file=authors.txt https://svn.atlassian.com/Confluence ConfluenceAsGit


SVN repository가  특별한 branch로 구성되었을 경우:

1
git svn clone --trunk=/trunk --branches=/branches --branches=/bugfixes --authors-file=authors.txt  <svn-repo>/<project> <git-repo-name>


예)

1
git svn clone --trunk=/trunk --branches=/branches --branches=/bugfixes --authors-file=authors.txt https://svn.atlassian.com/Confluence ConfluenceAsGit


참고 사이트 = https://www.atlassian.com/git/tutorials/migrating-convert

'GitLab' 카테고리의 다른 글

Git - 수정한 것 되돌리기  (0) 2018.01.26
GitLab 공개키 등록하기  (0) 2017.11.02
Git Bash로 SSH 공개키 발급하기  (0) 2017.11.02
Git 최초 설정  (0) 2017.11.02
git 초기 환경설정  (0) 2017.10.17
Posted by 모래반지빵냐빵냐
,

Git 서버는 SSH 공개키로 인증을 합니다. 이러한 SSH를 발급하는 방식은 다양한데, 이 문서에서는 Git Bash를 이용하여 공개키를 발급하는 방법에 대해 설명합니다. 


먼저 Git Bash를 실행합니다. 저는 Win8.1을 사용하고 있어, 앱에서 Git을 검색하였습니다.  Win7이하는 프로그램 파일에서 Git Bash를 선택합니다. 


git01.png


Git Bash화면이 아래와 같이 나타납니다.


git02.png


먼저 ssh-kegen 명령을 통해 Public 키와 Private 키 한쌍을 생성합니다.


1
$ ssh-keygen


상위 명령어를 수행하면, 처음 저장할 위치를 묻습니다. Enter를 치면 .ssh에 저장됩니다. 

다음은 Password(passphrase) 이때 패스워드를 입력하지 않으면, Git 서버에 Push할때, 패스워드를 묻지 않습니다. 

그럼 아래 그림과 같이 SSH 키가 생성됩니다.


git03.png


아래와 같이 해당 위치에 Public 키와 Private 키가 생성되었는지 확인합니다. 


git04.png


생성이 확인되었다면, cat 명령을 통해 공개키 내용을 확인하고 해당 키를 Git Server 관리자에게 알려줍니다. 

혹은 사용하고있는 Gerrit 혹은 Gitlab에 등록합니다. 


1
$ cat id_rsa.pub



git05.png


이상으로 Git Bash를 통해 SSH Public 키와 Private 키를 생성하는 방법을 알아보았습니다.


http://pseg.or.kr/pseg/infouse/5955

'GitLab' 카테고리의 다른 글

GitLab 공개키 등록하기  (0) 2017.11.02
SVN 저장소를 Git으로 옮기는 방법  (0) 2017.11.02
Git 최초 설정  (0) 2017.11.02
git 초기 환경설정  (0) 2017.10.17
git 관련 한글레퍼런스  (0) 2017.10.17
Posted by 모래반지빵냐빵냐
,

Git 최초 설정

GitLab 2017. 11. 2. 15:10

Git 최초 설정

Git을 설치하고 나면 Git의 사용 환경을 적절하게 설정해 주어야 한다. 한 번만 설정하면 된다. 설정한 내용은 Git을 업그레이드해도 유지된다. 언제든지 다시 바꿀 수 있는 명령어가 있다.

'git config'라는 도구로 설정 내용을 확인하고 변경할 수 있다. Git은 이 설정에 따라 동작한다. 이때 사용하는 설정 파일은 세 가지나 된다.

  • /etc/gitconfig 파일: 시스템의 모든 사용자와 모든 저장소에 적용되는 설정이다. git config --system 옵션으로 이 파일을 읽고 쓸 수 있다.
  • ~/.gitconfig 파일: 특정 사용자에게만 적용되는 설정이다. git config --global 옵션으로 이 파일을 읽고 쓸 수 있다.
  • .git/config: 이 파일은 Git 디렉토리에 있고 특정 저장소(혹은 현재 작업 중인 프로젝트)에만 적용된다. 각 설정은 역순으로 우선시 된다. 그래서 .git/config가 /etc/gitconfig보다 우선한다.

윈도용 Git은 $HOME 디렉토리(%USERPROFILE% 환경변수)에 있는 .gitconfig 파일을 찾는다. 보통 C:\Documents and Settings\$USER 또는 C:\Users\$USER 이다(윈도우에서는 $USER 대신 %USERNAME%를 사용한다). 그리고 msysGit도 /etc/gitconfig를 가지고 있다. 경로는 MSys 루트에 따른 상대 경로다. 인스톨러로 msysGit을 설치할 때 설치 경로를 선택할 수 있다.

사용자 정보

Git을 설치하고 나서 가장 먼저 해야 하는 것은 사용자 이름과 이메일 주소를 설정하는 것이다. Git은 커밋할 때마다 이 정보를 사용한다. 한 번 커밋한 후에는 정보를 변경할 수 없다:

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

다시 말하자면 --global 옵션으로 설정한 것은 딱 한 번만 하면 된다. 해당 시스템에서 해당 사용자가 사용할 때에는 이 정보를 사용한다. 만약 프로젝트마다 다른 이름과 이메일 주소를 사용하고 싶으면 --global 옵션을 빼고 명령을 실행한다.

편집기

사용자 정보를 설정하고 나면 Git에서 사용할 텍스트 편집기를 고른다. 기본적으로 Git은 시스템의 기본 편집기를 사용하고 보통 Vi나 Vim이다. 하지만, Emacs 같은 다른 텍스트 편집기를 사용할 수 있고 아래와 같이 실행하면 된다:

$ git config --global core.editor emacs

Diff 도구

Merge 충돌을 해결하기 위해 사용하는 Diff 도구를 설정할 수 있다. vimdiff를 사용하고 싶으면 아래와 같이 실행한다:

$ git config --global merge.tool vimdiff

이렇게 kdiff3, tkdiff, meld, xxdif, emerge, vimdiff, gvimdiff, ecmerge, opendiff를 사용할 수 있다. 물론 다른 도구도 사용할 수 있다. 자세한 내용은 7장에서 다룬다.

설정 확인

git config --list 명령을 실행하면 설정한 모든 것을 보여준다:

$ git config --list
user.name=Scott Chacon
user.email=schacon@gmail.com
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...

Git은 같은 키를 여러 파일(/etc/gitconfig와 ~/.gitconfig 같은)에서 읽기 때문에 같은 키가 여러개 있을 수도 있다. 이러면 Git은 나중 값을 사용한다.

git config {key} 명령으로 Git이 특정 Key에 대해 어떤 값을 사용하는지 확인할 수 있다:

$ git config user.name
Scott Chacon


https://git-scm.com/book/ko/v1/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Git-%EC%B5%9C%EC%B4%88-%EC%84%A4%EC%A0%95

'GitLab' 카테고리의 다른 글

SVN 저장소를 Git으로 옮기는 방법  (0) 2017.11.02
Git Bash로 SSH 공개키 발급하기  (0) 2017.11.02
git 초기 환경설정  (0) 2017.10.17
git 관련 한글레퍼런스  (0) 2017.10.17
Failed Attempts to Delete Remote Branch  (0) 2017.09.21
Posted by 모래반지빵냐빵냐
,

git 초기 환경설정

GitLab 2017. 10. 17. 10:28

- Git 환경 설정하기

git config --global user.email "이메일주소"
git config --global user.name "이름"

git remote -v

push origin 경로 확인


origin 삭제

git remote rm origin 

2.1 Git의 기초 - Git 저장소 만들기

Git 저장소 만들기

Git 저장소를 만드는 방법은 두 가지다. 기존 프로젝트를 Git 저장소로 만드는 방법이 있고 다른 서버에 있는 저장소를 Clone하는 방법이 있다.

기존 디렉토리를 Git 저장소로 만들기

기존 프로젝트를 Git으로 관리하고 싶을 때, 프로젝트의 디렉토리로 이동해서 아래과 같은 명령을 실행한다.

$ git init

이 명령은 .git이라는 하위 디렉토리를 만든다. .git 디렉토리에는 저장소에 필요한 뼈대 파일(Skeleton)이 들어 있다(.git 디렉토리가 막 만들어진 직후에 어떤 파일이 있는지에 대한 내용은 9장에서 다룬다). 이 명령만으로는 아직 프로젝트의 어떤 파일도 관리하지 않는다.

Git이 파일을 관리하게 하려면 저장소에 파일을 추가하고 커밋해야 한다. git add 명령으로 파일을 추가하고 커밋한다:

$ git add *.c
$ git add README
$ git commit -m 'initial project version'

매우 짧은 시간에 명령어를 몇개 실행해서 Git 저장소를 만들고 파일이 관리되게 했다.

기존 저장소를 Clone하기

다른 프로젝트에 참여하거나(Contribute) Git 저장소를 복사하고 싶을 때 git clone 명령을 사용한다. 이미 Subversion 같은 VCS에 익숙한 사용자에게는 checkout이 아니라 clone이라는 점이 도드라져 보일 것이다. Git이 Subversion과 다른 가장 큰 차이점은 서버에 있는 모든 데이터를 복사한다는 것이다. git clone을 실행하면 프로젝트 히스토리를 전부 받아온다. 실제로 서버의 디스크가 망가져도 클라이언트 저장소 중에서 아무거나 하나 가져다가 복구하면 된다(서버에만 적용했던 설정은 복구하지 못하지만 모든 데이터는 복구된다 - 4장에서 좀 더 자세히 다룬다).

git clone [url] 명령으로 저장소를 Clone한다. Ruby용 Git 라이브러리인 Grit을 Clone하려면 아래과 같이 실행한다:

$ git clone git://github.com/schacon/grit.git

이 명령은 "grit"이라는 디렉토리를 만들고 그 안에 .git 디렉토리를 만든다. 그리고 저장소의 데이터를 모두 가져와서 자동으로 가장 최신 버전을 Checkout해 놓는다. grit 디렉토리로 이동하면 Checkout으로 생성한 파일을 볼 수 있고 당장 하고자 하는 일을 시작할 수 있다. 아래과 같은 명령을 사용하여 저장소를 Clone하면 "grit"이 아니라 다른 디렉토리 이름으로 Clone할 수 있다:

$ git clone git://github.com/schacon/grit.git mygrit

디렉토리 이름이 mygrit이라는 것만 빼면 이 명령의 결과와 앞선 명령의 결과는 같다.

Git은 다양한 프로토콜을 지원한다. 이제까지는 git:// 프로토콜을 사용했지만 http(s)://를 사용할 수도 있고 user@server:/path.git처럼 SSH 프로토콜을 사용할 수도 있다. 자세한 내용은 4장에서 다룬다. 4장에서는 각 프로토콜의 장단점과 Git 저장소에 접근하는 방법을 설명한다.

출처: http://newsight.tistory.com/25 [New Sight]

https://git-scm.com/book/ko/v1/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-Git-%EC%A0%80%EC%9E%A5%EC%86%8C-%EB%A7%8C%EB%93%A4%EA%B8%B0

'GitLab' 카테고리의 다른 글

SVN 저장소를 Git으로 옮기는 방법  (0) 2017.11.02
Git Bash로 SSH 공개키 발급하기  (0) 2017.11.02
Git 최초 설정  (0) 2017.11.02
git 관련 한글레퍼런스  (0) 2017.10.17
Failed Attempts to Delete Remote Branch  (0) 2017.09.21
Posted by 모래반지빵냐빵냐
,

꼭 읽어볼것


https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-%EB%B2%84%EC%A0%84-%EA%B4%80%EB%A6%AC%EB%9E%80%3F

'GitLab' 카테고리의 다른 글

SVN 저장소를 Git으로 옮기는 방법  (0) 2017.11.02
Git Bash로 SSH 공개키 발급하기  (0) 2017.11.02
Git 최초 설정  (0) 2017.11.02
git 초기 환경설정  (0) 2017.10.17
Failed Attempts to Delete Remote Branch  (0) 2017.09.21
Posted by 모래반지빵냐빵냐
,

https://stackoverflow.com/questions/2003505/how-do-i-delete-a-git-branch-both-locally-and-remotely


$ git branch -d remotes/origin/bugfix
error: branch 'remotes/origin/bugfix' not found.

$ git branch -d origin/bugfix
error: branch 'origin/bugfix' not found.

$ git branch -rd origin/bugfix
Deleted remote branch origin/bugfix (was 2a14ef7).

$ git push
Everything up-to-date

$ git pull
From github.com:gituser/gitproject
* [new branch] bugfix -> origin/bugfix
Already up-to-date.


Executive Summary

$ git push -d origin <branch_name>
$ git branch -d <branch_name>

Delete Local Branch

To delete the local branch use one of the following:

$ git branch -d branch_name
$ git branch -D branch_name

Note: The -d option is an alias for --delete, which only deletes the branch if it has already been fully merged in its upstream branch. You could also use -D, which is an alias for --delete --force, which deletes the branch "irrespective of its merged status." [Source: man git-branch]

Delete Remote Branch [Updated on 8-Sep-2017]

As of Git v1.7.0, you can delete a remote branch using

$ git push origin --delete <branch_name>

which might be easier to remember than

$ git push origin :<branch_name>

which was added in Git v1.5.0 "to delete a remote branch or a tag."

Starting on Git v2.8.0 you can also use git push with the -d option as an alias for --delete.

Therefore, the version of Git you have installed will dictate whether you need to use the easier or harder syntax.

Delete Remote Branch [Original Answer from 5-Jan-2010]

From Chapter 3 of Pro Git by Scott Chacon:

Deleting Remote Branches

Suppose you’re done with a remote branch — say, you and your collaborators are finished with a feature and have merged it into your remote’s master branch (or whatever branch your stable codeline is in). You can delete a remote branch using the rather obtuse syntax git push [remotename] :[branch]. If you want to delete your serverfix branch from the server, you run the following:

$ git push origin :serverfix
To git@github.com:schacon/simplegit.git
 - [deleted]         serverfix

Boom. No more branch on your server. You may want to dog-ear this page, because you’ll need that command, and you’ll likely forget the syntax. A way to remember this command is by recalling the git push [remotename] [localbranch]:[remotebranch] syntax that we went over a bit earlier. If you leave off the [localbranch] portion, then you’re basically saying, “Take nothing on my side and make it be [remotebranch].”

I issued git push origin :bugfix and it worked beautifully. Scott Chacon was right—I will want to dog ear that page (or virtually dog ear by answering this on Stack Overflow).

Then you should execute this on other machines

git fetch --all --prune

to propagate changes.



'GitLab' 카테고리의 다른 글

SVN 저장소를 Git으로 옮기는 방법  (0) 2017.11.02
Git Bash로 SSH 공개키 발급하기  (0) 2017.11.02
Git 최초 설정  (0) 2017.11.02
git 초기 환경설정  (0) 2017.10.17
git 관련 한글레퍼런스  (0) 2017.10.17
Posted by 모래반지빵냐빵냐
,