Git

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을 사용하기 전 사용자의 정보를 등록해야 합니다.

자세한 내용은 아래 git manual page를 이용하세요.

$ git config --global user.name "Jinhwa Joung"    #사용자 이름을 설정합니다.
$ git config --global user.email "jinhwa.joung@le.com"    #사용자 이메일을 등록합니다. 본인 회사 메일을 기입하시면 됩니다.
$ git config --global core.editor vim    #기본 editor를 설정합니다. 필요 없으시다면 안하셔도 되고 사용하기 편하신 editor를 등록하시면 됩니다.
$ git config --global merge.tool vimdiff    #기본 diff tool를 설정합니다. 필요 없으시다면 안하셔도 무방합니다. 
$ git config --global color.ui true    #CLI 상에서 Git이 알아서 결과에 색칠합니다. 눈에 보기 편함 🙂
$ cat ~/.gitconfig    # 등록된 git config 설정 정보를 확인합니다.
[user]
    email = jinhwa.joung@le.com
    name = Jinhwa Joung
[core]
    editor = vim
[merge]
    tool = vimdiff
[color]
    ui = true

 

git add only modified changes and ignore untracked files:

 

$ git status
# On branch addLocation
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   someProject/path/domain/viewer/LocationDO.java
#       modified:   someProject/path/service/ld/LdService.java
#       modified:   someProject/path/service/ld/LdServiceImpl.java
#       modified:   someProject/path/web/jsf/viewer/LocationFormAction.java
#       modified:   someProject/war/WEB-INF/classes/message/viewer/viewer.properties
#       modified:   someProject/war/page/viewer/searchForm.xhtml
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .metadata/
#       someProject/build/
no changes added to commit (use "git add" and/or "git commit -a")

 

Ideally your .gitignore should prevent the untracked ( and ignored )files from being shown in status, added using git add etc. So I would ask you to correct your .gitignore

You can do git add -u so that it will stage the modified and deleted files.

You can also do git commit -a to commit only the modified and deleted files.

Note that if you have Git of version before 2.0 and used git add ., then you would need to use git add -u . (See “Difference of “git add -A” and “git add .“).

 

OR

This worked for me:

#!/bin/bash

git add `git status | grep modified | sed 's/\(.*modified:\s*\)//'`

Or even better:

$ git ls-files --modified | xargs git add

 

 

 

git create public key for user.

# mkdir ~/.ssh

   # cd .ssh
(해당 경로가 없으면 기존에 생성한 적이 없으므로 폴더를 생성한다. -> # mkdir .ssh )
  #  ssh-keyGen – t rsa -C “YOURNAME@le.com”
(id_rsa.pub 파일이 없는 경우에만 키를 만들고, 이미 있는 경우에는 Skip !!! )
  # cat  id_rsa.pub

 


jiafei427@CKUBU:~/.ssh$ ssh -v -p 29411 chungen.li@mod.le.com
OpenSSH_7.2p2 Ubuntu-4ubuntu2.1, OpenSSL 1.0.2g 1 Mar 2016
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to mod.le.com [10.185.152.54] port 29411.
debug1: Connection established.
debug1: identity file /home/jiafei427/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /home/jiafei427/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/jiafei427/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/jiafei427/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/jiafei427/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/jiafei427/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/jiafei427/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/jiafei427/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
debug1: Remote protocol version 2.0, remote software version GerritCodeReview_2.13.7 (SSHD-CORE-1.2.0)
debug1: no match: GerritCodeReview_2.13.7 (SSHD-CORE-1.2.0)
debug1: Authenticating to mod.le.com:29411 as 'chungen.li'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: ecdh-sha2-nistp256
debug1: kex: host key algorithm: ssh-rsa
debug1: kex: server->client cipher: aes128-ctr MAC: hmac-sha2-256 compression: none
debug1: kex: client->server cipher: aes128-ctr MAC: hmac-sha2-256 compression: none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ssh-rsa SHA256:glMIov5bNTU3v6iQDSoXvXvVaQBlzNDftxH+vw2/xX4
debug1: Host '[mod.le.com]:29411' is known and matches the RSA host key.
debug1: Found key in /home/jiafei427/.ssh/known_hosts:2
debug1: rekey after 4294967296 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: rekey after 4294967296 blocks
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/jiafei427/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
<strong>sign_and_send_pubkey: signing failed: agent refused operation</strong>
debug1: Trying private key: /home/jiafei427/.ssh/id_dsa
debug1: Trying private key: /home/jiafei427/.ssh/id_ecdsa
debug1: Trying private key: /home/jiafei427/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).

Looks like an ssh-agent is running already but it can not find any keys attached. To solve this add the private key identities to the authentication agent like so:

ssh-add

Then you can ssh into your server.

in addition, you can see the list of fingerprints of all identities currently added by:

ssh-add -l

2048 SHA256:41qw4RPVCoG3d2w4MY1RirLgN6XHdr5p8+RqnZ8Swak /home/jiafei427/.ssh/id_rsa (RSA)
2048 SHA256:41qw4RPVCoG3d2w4MY1RirLgN6XHdr5p8+RqnZ8Swak chungen.li@le.com (RSA)

 

 

Ref.

https://askubuntu.com/questions/762541/ubuntu-16-04-ssh-sign-and-send-pubkey-signing-failed-agent-refused-operation

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s