your programing

초보자를위한 Git : 확실한 실용 가이드

lovepro 2020. 9. 28. 09:49
반응형

초보자를위한 Git : 확실한 실용 가이드


좋아, PJ Hyett의이 게시물을 보고 끝으로 건너 뛰고 Git 을 사용하기로 결정했습니다 .

그래서 제가 필요한 것은 Git에 대한 초보자를위한 실용적인 가이드입니다. "초보자"는 컴파일러를 처리하는 방법을 알고 Makefile무엇인지 어느 정도 이해하고 소스 제어를 잘 이해하지 못한 채 소스 제어에 손을 사람으로 정의됩니다 .

"실용적"이라는 것은이 사람이 Git이 백그라운드에서 수행하는 작업에 대해 자세히 알아보고 싶지 않으며 배포되는 것을 신경 쓰지 않습니다 (또는 알지 못함). 귀하의 답변은 가능성을 암시 할 수 있지만 백업되고 안전한 '서버'에 '주'저장소를 유지하고 로컬 저장소를 단순히 '클라이언트'리소스로 취급하려는 초보자를 목표로하십시오.

그래서:

설치 / 설정

코드 작업

태그 지정, 분기, 릴리스, 기준

다른

  • Git을 명령 줄이 아닌 리소스로 만드는 좋은 GUI, IDE 플러그인 등을 설명하고 연결합니다. 그러나 그 제한 사항과 장점을 나열하십시오.
    • msysgit -Git에 포함 된 크로스 플랫폼
    • gitk -Git에 포함 된 크로스 플랫폼 기록 뷰어
    • gitnub -Mac OS X
    • gitx -Mac OS X 히스토리 뷰어
    • smartgit- 크로스 플랫폼, 상용, 베타
    • tig -Linux 용 콘솔 GUI
    • qgit -Windows, Linux 용 GUI
    • Git 확장 -Windows 용 패키지, 친숙한 GUI 포함
  • 초보자가 알아야 할 다른 일반적인 작업이 있습니까?
  • 소스 제어 소스로 설정된 Subversion 저장소를 어떻게 효과적으로 사용합니까?

다른 Git 초보자를위한 참고 자료

Git 탐구

나는 수시로 항목을 살펴보고 일관된 모양 / 느낌을 갖도록 '정리'할 것입니다. 목록을 쉽게 스캔 할 수 있습니다.-간단한 "머리글-간단한 설명-지침 목록-문제 및 추가 정보 "템플릿. 또한 나중에 쉽게 찾을 수 있도록 위의 글 머리 기호 목록의 항목에 링크 할 것입니다.


새 프로젝트 / 저장소는 어떻게 생성합니까?

git 저장소는 단순히 특별한 .git디렉토리를 포함하는 디렉토리입니다.

이것은 "저장소"가 checkout"작업 복사본"디렉토리 에있는 원격 서버에서 호스팅되는 "중앙 집중식"버전 제어 시스템 (예 : 하위 버전)과 다릅니다 . git을 사용하면 작업 복사본 저장소입니다.

git init추적하려는 파일이 포함 된 디렉토리에서 실행하기 만하면 됩니다.

예를 들면

cd ~/code/project001/
git init

그러면 .git현재 디렉터리에 (숨겨진) 폴더가 생성 됩니다.

새 프로젝트를 만들려면 git init추가 인수 (생성 할 디렉터리 이름)를 사용하여 실행합니다 .

git init project002

(This is equivalent to: mkdir project002 && cd project002 && git init)

현재 경로가 git 저장소 내에 있는지 확인하려면 실행 git status하면됩니다. 저장소가 아닌 경우 "심각한 : git 저장소가 아님"을보고합니다.

.git디렉토리를 나열 하고 다음과 유사한 파일 / 디렉토리가 포함되어 있는지 확인할 수도 있습니다.

$ ls .git
HEAD         config       hooks/       objects/
branches/    description  info/        refs/

어떤 이유로 든 저장소를 "de-git"하려는 경우 (해당 프로젝트를 추적하기 위해 git 사용을 중지하려는 경우). .git저장소의 기본 수준에서 디렉토리를 제거하기 만하면 됩니다.

cd ~/code/project001/
rm -rf .git/

주의 : 이것은 모든 개정 기록, 모든 태그, git이 수행 한 모든 것을 파괴 합니다 . "현재"파일 (현재 볼 수있는 파일)은 건드리지 않지만 이전 변경 사항, 삭제 된 파일 등은 복구 할 수 없습니다!


Git 용 GUI


Git GUI

git에 포함 — git gui명령 줄에서 실행 하면 Windows msysgit 설치 프로그램이 시작 메뉴에 추가합니다.

Git GUI는 git로해야 할 일의 대부분을 수행 할 수 있습니다. 단계 변경 포함, git 및 리포지토리 구성, 변경 사항 푸시, 분기 생성 / 체크 아웃 / 삭제, 병합 및 기타 여러 가지.

내가 가장 좋아하는 기능 중 하나는 파일의 특정 부분을 커밋 할 수있는 오른쪽 클릭 메뉴의 "스테이지 라인"및 "스테이지 덩어리"바로 가기입니다. 을 통해 동일한 결과를 얻을 수 git add -i있지만 사용하기가 더 쉽습니다.

가장 예쁜 응용 프로그램은 아니지만 거의 모든 플랫폼에서 작동합니다 (Tcl / Tk 기반).

스크린 샷 | 스크린 캐스트


GitK

git에도 포함됩니다. git 히스토리 뷰어이며 저장소의 히스토리 (브랜치가 생성되고 병합 될 때 포함)를 시각화 할 수 있습니다. 커밋을보고 검색 할 수 있습니다.

git-gui와 잘 어울립니다.


Gitnub

Mac OS X 응용 프로그램. 주로와 동일 git log하지만 github (예 : "네트워크보기") 와 일부 통합됩니다 .

예쁘고 Mac OS X에 적합합니다. 저장소를 검색 할 수 있습니다. Gitnub의 가장 큰 비판은 선형 방식 (한 번에 하나의 분기)으로 역사를 보여준다는 것입니다. 이는 계획된 개선이긴하지만 git에서 중요 할 수있는 분기 및 병합을 시각화하지 않습니다.

링크 다운로드, 변경 로그 및 스크린 샷 | Git 저장소


GitX

"OS X 용 gitk 클론"을 의도합니다.

비선형 분기 히스토리를 시각화하고, 커밋을 수행하고, 커밋을보고 검색 할 수 있으며, 모든 개정판의 모든 파일을 "빠른보기"(파일 목록보기에서 공백 누르기), 모든 파일 내보내기와 같은 다른 멋진 기능이 있습니다. (드래그 앤 드롭을 통해).

git-gui/ 보다 OS X에 훨씬 더 잘 통합되며 gitk매우 큰 저장소에서도 빠르고 안정적입니다.

원래 git 저장소 pieter 는 최근에 업데이트되지 않았습니다 (작성 당시 1 년 이상). 더 활발하게 관리되는 브랜치는 brotherbard / gitx 에서 사용할 수 있습니다. "사이드 바, 가져 오기, 가져 오기, 푸시, 원격 추가, 병합, 체리 선택, 리베이스, 복제, 복제 대상"을 추가합니다.

다운로드 | 스크린 샷 | 자식 저장소 | 브라더 바드 포크 | laullon 포크


SmartGit

홈페이지에서 :

SmartGit은 분산 버전 제어 시스템 Git의 프런트 엔드이며 Windows, Mac OS X 및 Linux에서 실행됩니다. SmartGit은 명령 줄 클라이언트보다 그래픽 사용자 인터페이스를 선호하는 개발자를 위해 현재 가장 강력한 DVCS 인 Git을 사용하여 생산성을 더욱 높일 수 있습니다.

웹 사이트 에서 다운로드 할 수 있습니다 .

다운로드


TortoiseGit

Windows 사용자를위한 TortoiseSVN Git 버전.

TortoiseSVN을 TortoiseGit으로 포팅합니다. 최신 릴리스 1.2.1.0이 릴리스는 커밋, 로그 표시, 두 버전 비교, 브랜치 및 태그 생성, 패치 생성 등과 같은 일반 작업을 완료 할 수 있습니다. 자세한 내용은 릴리스 노트참조하십시오 . 이 프로젝트에 기여해 주셔서 감사합니다.

다운로드


QGit

QGit은 Qt / C ++에 구축 된 git GUI 뷰어입니다.

qgit을 사용하면 수정 내역을 찾아보고, 패치 내용과 변경된 파일을 볼 수 있으며, 다른 개발 분기를 그래픽으로 따라갈 수 있습니다.

다운로드


gitg

gitg는 gtk + / GNOME을 대상으로하는 git 저장소 뷰어입니다. 주요 목표 중 하나는 여러 데스크톱에서 git 프런트 엔드에 더 통합 된 사용자 경험을 제공하는 것입니다. 이것은 크로스 플랫폼 애플리케이션을 작성하는 것이 아니라 다른 운영 체제 (OS X 용 GitX와 같은)의 유사한 클라이언트와 긴밀한 협력을 통해 이루어집니다.

풍모

  • 개정 내역을 찾아보십시오.
  • 대규모 리포지토리를 처리합니다 (Linux 리포지토리, 17000 개 이상의 개정판로드, 1 초 미만).
  • 변경 사항을 커밋합니다.
  • 개별 심술쟁이 무대 / 언 스테이지.
  • 변경 사항을 되돌립니다.
  • 개정판 변경 사항의 색상 차이를 표시합니다.
  • 주어진 개정에 대한 찾아보기 트리.
  • 주어진 개정판 트리의 일부를 내 보냅니다.
  • 히스토리를 빌드하기 위해 'git log'와 같은 명령이 이해할 수있는 모든 refspec을 제공하십시오.
  • 내역보기에서 분기를 표시하고 전환합니다.

다운로드 : 릴리스 또는 소스


Gitbox

Gitbox는 Git 버전 제어 시스템을위한 Mac OS X 그래픽 인터페이스입니다. 단일 창에서 분기, 기록 및 작업 디렉토리 상태를 볼 수 있습니다.

일상적인 작업은 간단합니다. 확인란을 사용하여 변경 사항을 준비 및 해제합니다. 한 번의 클릭으로 커밋, 당기기, 병합 및 밀기. 변경 사항을 두 번 클릭하여 FileMerge.app과의 차이점을 표시하십시오.

다운로드


Gity

Gity 웹 사이트에는 정보가 많지 않지만 스크린 샷을 보면 기능이 풍부한 오픈 소스 OS X git gui 인 것으로 보입니다.

다운로드 또는 소스


멜드

Meld는 시각적 비교 및 ​​병합 도구입니다. 두 개 또는 세 개의 파일을 비교하고 제자리에서 편집 할 수 있습니다 (diff는 동적으로 업데이트 됨). 두 개 또는 세 개의 폴더를 비교하고 파일 비교를 시작할 수 있습니다. CVS, Subversion, Bazaar-ng 및 Mercurial [ 및 Git ] 과 같은 널리 사용되는 버전 제어 시스템에서 작업 사본을 찾아보고 볼 수 있습니다 .

다운로드


카타나

Steve Dekorte의 OSX 용 Git GUI.

한눈에 어떤 원격 브랜치가 가져 오기를 변경하고 로컬 리포지토리에 푸시가 변경되었는지 확인합니다. 추가, 커밋, 푸시, 풀, 태그 및 재설정의 git ops는 물론 로컬 변경 사항 및 추가 사항을 강조하는 프로젝트 계층 구조의 시각적 차이 및 시각적 검색이 지원됩니다.

저장소 1 개는 무료, 추가 비용은 $ 25입니다.

다운로드


Sprout (이전의 GitMac)

Git을 사용하기 쉽게 만드는 데 중점을 둡니다. 기본 Cocoa (mac과 유사한) UI, 빠른 저장소 검색, 복제, 푸시 / 풀, 분기 / 병합, 시각적 차이, 원격 분기, 터미널에 대한 쉬운 액세스 등을 제공합니다.

가장 일반적으로 사용되는 Git 작업을 직관적이고 쉽게 수행 할 수 있도록함으로써 Sprout (이전의 GitMac)은 Git을 사용자 친화적으로 만듭니다. 대부분의 Git 워크 플로와 호환되는 Sprout은 디자이너와 개발자, 팀 공동 작업, 고급 및 초보 사용자 모두에게 적합합니다.

다운로드 | 웹 사이트


Mac OSX 용 기능이 풍부한 Git GUI. 30 일 무료 평가판, 단일 사용자 라이선스의 경우 미화 59 달러.

다운로드 | 웹 사이트


EGit

EGit은 Git 버전 제어 시스템을위한 Eclipse Team 공급자입니다. Git은 분산 된 SCM입니다. 즉, 모든 개발자는 코드의 모든 개정 내역에 대한 전체 사본을 가지고 있으므로 내역에 대한 쿼리를 매우 빠르고 다양하게 만듭니다.

EGit 프로젝트는 Git의 JGit Java 구현 위에 Eclipse 도구를 구현하고 있습니다.

다운로드 | 웹 사이트


Git 확장

Windows 용 오픈 소스-Git 작업에 필요한 모든 것을 사용하기 쉬운 단일 패키지로 설치합니다.

Git Extensions는 Windows에서 Git을보다 직관적으로 사용할 수 있도록하는 툴킷입니다. 셸 확장은 Windows 탐색기에 통합되어 파일 및 디렉터리에 대한 컨텍스트 메뉴를 표시합니다. Visual Studio의 git을 사용하는 Visual Studio 플러그인도 있습니다.

다운로드

git gui 항목에 대해 자세히 설명해 주신 dbr 에게 감사드립니다 .


SourceTree

SourceTree는 Git, Mercurial 및 SVN을위한 무료 Mac 클라이언트입니다. BitBucket의 배후 인 Atlassian에 의해 구축되었으며 모든 VC 시스템과 똑같이 잘 작동하는 것으로 보이며 모든 프로젝트에 사용할 단일 도구를 마스터 할 수 있지만 버전은 제어됩니다. 기능이 풍부하고 무료입니다.

초보자와 고급 사용자 모두를위한 전문가 준비 및 기능 팩 :

발신 및 수신 변경 집합을 검토합니다. 가지 사이에서 체리를 선택하십시오. 패치 처리, 리베이스, 숨김 / 보류 등.

다운로드 | 웹 사이트



글쎄요, 우리가 다른 리소스에 "단순히"연결하지 말라고 요청 하셨음에도 불구하고, 커뮤니티에서 성장한 (그리고 성장하는) 리소스가 이미 존재하는 것은 정말 어리석은 일입니다 : Git Community Book . 진지하게, 질문에있는이 20 개 이상의 질문은 간결하고 일관 적이 지 않을 것입니다. Git Community Book은 HTML과 PDF로 제공되며 명확하고 형식이 잘 지정되어 있으며 동료 검토를 거친 답변과 당면한 문제로 바로 이동할 수있는 형식으로 많은 질문에 답변합니다.

아아, 내 게시물이 정말 화 나면 삭제하겠습니다. 그렇게 말하세요.


파일을 무시하도록 구성하는 방법 :

추적하지 않으려는 파일을 git이 무시하도록하는 기능은 매우 유용합니다.

파일 또는 파일 세트를 무시하려면 패턴을 제공합니다. git의 패턴 구문은 매우 간단하지만 강력합니다. 아래에서 언급 할 세 가지 파일 모두에 적용 할 수 있습니다.

  • 빈 줄은 파일을 무시하지 않으며 일반적으로 구분 기호로 사용됩니다.
  • #으로 표시된 줄 은 주석 역할을합니다.
  • ! 접두사는 선택 사항이며 패턴을 무효화합니다. 일치하는 부정 패턴은 더 낮은 우선 순위 패턴을 재정의합니다.
  • 고급 표현식 및 와일드 카드 지원
    • 예 : 패턴 : *. [oa] 는 저장소의 .o 또는 .a로 끝나는 모든 파일 (오브젝트 및 아카이브 파일)을 무시합니다.
  • 패턴에 슬래시로 끝나는 디렉토리가있는 경우 git은이 디렉토리 및 그 아래의 경로와 만 일치합니다. 이것은 일치에서 일반 파일과 심볼릭 링크를 제외합니다.
  • 선행 슬래시는 해당 경로 이름의 모든 파일과 일치합니다.
    • 예 : /*.c 패턴 foo.c 파일과 일치 하지만 bar / awesome.c 는 일치 하지 않습니다.

gitignore (5) 매뉴얼 페이지 의 훌륭한 예 :

$ git status
[...]
# Untracked files:
[...]
#       Documentation/foo.html
#       Documentation/gitignore.html
#       file.o
#       lib.a
#       src/internal.o
[...]
$ cat .git/info/exclude
  # ignore objects and archives, anywhere in the tree.
  *.[oa]
$ cat Documentation/.gitignore
# ignore generated html files,
*.html
# except foo.html which is maintained by hand
!foo.html
$ git status
[...]
# Untracked files:
[...]
#       Documentation/foo.html
[...]

일반적으로 추적되지 않은 파일을 무시하는 세 가지 방법이 있습니다.

1) 저장소의 모든 사용자에 대해 무시 :

.gitignore 라는 파일을 작업 복사본의 루트에 추가합니다 .

.gitignore편집 하여 파일을 무시하거나 무시해서는 안되는 환경 설정에 맞 춥니 다 .

git add .gitignore 

완료되면 커밋합니다.

2) 저장소 사본 만 무시하십시오.

작업 복사본에서 원하는 패턴으로 $ GIT_DIR / info / exclude 파일을 추가 / 편집합니다 .

예 : 내 작업 복사본은 ~ / src / project1이므로 ~ / src / project1 / .git / info / exclude를 편집합니다.

끝났습니다!

3) 시스템의 모든 상황에서 무시하십시오.

시스템에 대한 전역 무시 패턴은 원하는 이름의 파일에 넣을 수 있습니다.

내 개인적으로 ~ / .gitglobalignore

그런 다음 ~ / .gitconfig 파일을 다음 줄로 편집하여 git에게이 파일을 알릴 수 있습니다 .

core.excludesfile = ~/.gitglobalignore

끝났습니다!

gitignore man 페이지가 더 많은 정보를 얻을 수있는 최고의 리소스 라고 생각합니다 .


특정 개정판에 어떻게 '태그'를 지정합니까?

나중에 언제든지 가져올 수 있도록 특정 파일 세트에 대한 특정 개정 세트를 '태그'또는 '릴리스'하는 방법은 무엇입니까?

git tag명령 사용 .

단순히 현재 개정판에 "태그"를 지정하려면 ..

git tag -a thetagname
git tag -a 0.1
git tag -a 2.6.1-rc1 -m 'Released on 01/02/03'

현재 태그를 나열하려면 git tag인수없이 실행 하거나 -l(소문자 L) :

$ git tag -a thetagname # and enter a message, or use -m 'My tag annotation'
$ git tag -l
thetagname

태그를 삭제하려면 다음 -d플래그 를 사용합니다 .

$ git tag -d thetagname 
Deleted tag 'thetagname'
$ git tag
[no output]

특정 (이전) 커밋에 태그를 지정하려면 ..

git tag [tag name] [revision SHA1 hash]

예를 들면 :

git tag 1.1.1 81b15a68c6c3e71f72e766931df4e6499990385b

참고 : 기본적으로 git은 "lightweight"태그 (기본적으로 특정 개정에 대한 참조)를 생성합니다. "올바른"방법은 -a플래그 를 사용하는 것 입니다. 그러면 태그 메시지를 요청하는 편집기가 시작됩니다 (커밋 메시지를 요청하는 것과 동일하며 -m플래그를 사용 하여 명령 줄에 태그 메시지를 제공 할 수도 있음 ). 주석이 달린 태그를 사용하면 자체 ID, 날짜, 태거 (작성자) 및 선택적으로 GPG 서명 ( -s태그 사용)이있는 객체가 생성 됩니다. 이에 대한 자세한 내용은 이 게시물을 참조하십시오.

git tag mytagwithmsg -a -m 'This is a tag, with message'

주석과 함께 태그를 나열하려면 -n1플래그를 사용하여 각 태그 메시지의 한 줄 -n245을 표시합니다 ( 각 주석의 처음 245 줄을 표시하는 등).

$ git tag -l -n1
mytagwithmsg    This is a tag, with message

자세한 내용은 git-tag (1) 매뉴얼 페이지를 참조하십시오.


GIT를 사용한 워크 플로 예.

Git은 매우 유연하고 모든 워크 플로에 적합하지만 특정 워크 플로를 적용하지 않으면 선형 "백업"워크 플로를 넘어 git로 수행 할 수있는 작업과 분기가 얼마나 유용한 지 이해하기 어렵게 만드는 부정적인 영향을 미칠 수 있습니다. .

블로그 게시물 은 git을 사용하여 설정하기 매우 쉬운 매우 간단하지만 효과적인 워크 플로를 설명합니다.

블로그 게시물에서 인용 : origin / master를 HEAD의 소스 코드가 항상 프로덕션 준비 상태를 반영하는 주요 분기로 간주합니다.

이 워크 플로는이 워크 플로를 구현하는 프로젝트를 만들만큼 충분히 대중화되었습니다. git-flow

개발시 모든 변경 사항을 적용하고 코드가 프로덕션 상태 일 때만 마스터로 푸시하는 간단한 워크 플로의 멋진 그림 :

간단한 워크 플로우

이제 새로운 기능 또는 모듈 리팩토링 작업을 원한다고 가정 해 보겠습니다. 우리가 "기능"브랜치라고 부르는 새 브랜치를 만들 수 있습니다. 시간이 걸리고 코드가 깨질 수 있습니다. 기능이 "충분히 안정적"이고 프로덕션에 "가까이"이동하려는 경우 기능 분기를 개발에 병합합니다. 병합 후 모든 버그가 분류되고 코드가 모든 테스트를 확실하게 통과하면 변경 사항을 마스터로 푸시합니다.

이 모든 과정에서 즉시 수정해야하는 끔찍한 보안 버그를 발견하게됩니다. 핫픽스 (hotfixes)라는 분기가있을 수 있습니다.이 분기는 일반 "개발"분기보다 빠르게 프로덕션으로 다시 푸시되는 변경 사항을 적용합니다.

여기에이 기능 / 핫픽스 / 개발 / 프로덕션 워크 플로가 어떻게 생겼는지 보여주는 그림이 있습니다 (블로그 게시물에 잘 설명되어 있습니다. 반복합니다. 블로그 게시물은 전체 프로세스를 저보다 훨씬 더 자세히 설명합니다. .

Git 워크 플로 예


더 이상 사용할 수없는 PJ Hyett의 게시물 사본은 다음과 같습니다.

힘내는 어렵지 않다

2008 년 11 월 23 일

사람들에게 Subversion보다 Git을 사용해야하는 이유를 말할 때, "Git은 Subversion보다 Subversion을 더 잘 수행하지만 그 이상을 수행합니다."라고합니다.

"더 많이"는 Git을 정말 빛나게하는 많은 것들로 구성되어 있지만 Subversion과 같은 다른 SCM에서 오는 사람들에게는 상당히 압도적 일 수 있습니다.

즉, 전환하는 동안 Subversion을 사용하는 것처럼 Git을 사용하는 것을 막을 수는 없습니다.

필요한 소프트웨어를 설치하고 원격 저장소가 어딘가에 있다고 가정하면 다음과 같이 코드를 가져와 Subversion으로 변경 사항을 다시 푸시 할 수 있습니다.

$ svn checkout svn://foo.googlecode.com/svn/trunk foo
# make your changes
$ svn commit -m "my first commit"

Git에서 어떻게할까요?

$ git clone git@github.com:pjhyett/foo.git
# make your changes
$ git commit -a -m "my first commit"
$ git push

Git에서이 작업을 수행하는 명령이 하나 더 있습니다. 이 추가 명령은 큰 의미를 갖지만이 게시물의 목적을 위해 우리가 이야기하는 것은 하나의 추가 명령입니다.

보세요, 그렇게 어렵지 않습니다.

업데이트 : Git과 비교하여 Subversion에서 로컬 복사본을 업데이트하는 것과 동일한 기능이 각각 svn updategit pull입니다. 두 경우 모두 단 하나의 명령입니다.


Git 설치 방법

Windows의 경우 :

msysgit 설치

몇 가지 다운로드가 있습니다.

  • 힘내 : 아래의 다른 옵션 중 하나가 특별히 필요한 경우가 아니라면 이것을 사용하십시오.
  • PortableGit : PC에 설치하지 않고 PC에서 Git을 실행하려는 경우 사용합니다 (예 : USB 드라이브에서 Git 실행).
  • msysGit : Git 자체를 개발하려는 경우 사용합니다. 당신은 단지에 대한 힘내을 사용하려면 사용자의 소스 코드,하지만 편집하지 않으려는 망할 놈의 소스 코드, 당신이 필요하지 않습니다.

이것은 또한 Cygwin bash 쉘을 설치하므로 git더 좋은 쉘 (cmd.exe보다)에서를 사용할 수 있으며 git-gui ( git gui명령 또는 Start > All Programs > Git메뉴 를 통해 액세스 가능)도 포함 합니다.

맥 OS X

사용 자식-OSX-설치 , 또는 당신은 또한 소스에서 설치할 수 있습니다

패키지 관리자를 통해

git기본 패키지 관리자를 사용하여 설치 하십시오. 예를 들어 Debian (또는 Ubuntu)의 경우 :

apt-get install git-core

또는 Mac OS X에서 MacPorts 를 통해 :

sudo port install git-core+bash_completion+doc

… 또는 fink :

fink install git

… 또는 Homebrew :

brew install git

Fedora와 같은 Red Hat 기반 배포 :

yum install git

Cygwin에서 Git 패키지는 "devel"섹션에서 찾을 수 있습니다.

소스에서 (Mac OS X / Linux / BSD / etc.)

Mac OS X에서 개발자 도구가 설치되어 있으면 소스에서 Git을 매우 쉽게 컴파일 할 수 있습니다. A와 망할 놈의 최신 버전을 다운로드 .tar.bz하거나 .tar.gz에서 http://git-scm.com/ 하고 압축을 풉니 다 (Finder에서 더블 클릭)

Linux / BSD / 등에서. 거의 동일해야합니다. 예를 들어, 데비안 (우분투)에, 당신은 설치해야합니다 build-essential통해 패키지를 apt.

그런 다음 터미널 cd에서 파일을 추출한 위치 (실행 중이 cd ~/Downloads/git*/어야 함)를 실행 한 다음 실행하십시오.

./configure && make && sudo make install

이 기본 위치에 힘내를 설치합니다 ( /usr/local- 그렇게 git될 것이다 /usr/local/bin/git)

암호 ( sudo) 를 입력하라는 메시지 가 표시 /usr/local/됩니다. 이는 "root"사용자 만 액세스 할 수 있는 디렉토리에 쓸 수 있도록하기위한 것이므로 sudo가 필요합니다!

별도의 위치에 설치해야하는 경우 (Git의 파일이 다른 도구와 혼합되지 않음) --prefixconfigure 명령과 함께 사용 하십시오.

./configure --prefix=/usr/local/gitpath
make
sudo make install

그러면 git바이너리 가에 설치 됩니다 /usr/local/bin/gitpath/bin/git. 따라서 매번 입력 할 필요가 없습니다 $PATH. 다음 줄을 추가하여 추가해야 합니다 ~/.profile.

export PATH="${PATH}:/usr/local/bin/gitpath/bin/"

sudo 액세스 권한이없는 경우 --prefix=/Users/myusername/bin홈 디렉토리를 사용 하여 설치할 수 있습니다 . 추가 ~/bin/하는 것을 잊지 마십시오$PATH

x-git-update-to-latest-version 스크립트 는 많은 것을 자동화합니다.

이 스크립트는 git repo (localy at ~/work/track/git) 의 로컬 복제본을 업데이트 한 다음 심볼릭 링크 를 구성, 설치 ( /usr/local/git- git describe) 및 업데이트합니다 /usr/local/git.

이 방법은, 내가 가질 수 /usr/local/git/bin내에서 PATH나는 항상 최신 버전을 사용하고 있습니다.

이 스크립트의 최신 버전은 매뉴얼 페이지도 설치합니다. 디렉토리 MANPATH를 포함 하도록 조정해야 합니다 /usr/local/git/share/man.


힘내 재설정

끌어 당기고 코드에 병합하고 마음에 들지 않는다고 결정한다고 가정 해 보겠습니다. git-log 또는 tig를 사용하고, 돌아가고 싶은 곳 (아마도 풀 / 병합 전 마지막 커밋)의 해시를 찾아 해시를 복사하고 다음을 수행합니다.

# Revert to a previous commit by hash:
git-reset --hard <hash>

해시 대신 HEAD ^ 를 이전 커밋의 바로 가기로 사용할 수 있습니다 .

# Revert to previous commit:
git-reset --hard HEAD^

공유 팀 저장소를 어떻게 설정합니까?

일반 리포지토리 를 설정하는 방법 여기 에 설명되어 있습니다 .하지만 모두가 가져오고 푸시 할 수있는 팀 리포지토리를 어떻게 설정합니까?

공유 NFS 파일 시스템 사용

예를 들어 팀에 이미 사용할 수있는 공유 그룹 멤버십이 있다고 가정합니다.

mkdir /your/share/folder/project.git
cd /your/share/folder/project.git
newgrp yourteamgroup # if necessary
git init --bare --shared

이 저장소 사용을 시작하려면 가장 쉬운 방법은 이미 사용하고있는 로컬 저장소에서 시작하는 것입니다.

cd your/local/workspace/project
git remote add origin /your/share/folder/project.git
git push origin master

다른 사람들은 이제 이것을 복제하고 작업을 시작할 수 있습니다.

cd your/local/workspace
git clone /your/share/folder/project.git

SSH 사용

대상 서버에서 사용자 계정을 설정하십시오. 암호가없는 계정, 암호가있는 계정 또는 사용 authorized_keys여부는 필요한 보안 수준에 따라 다릅니다. 한 번 봐 가지고 SSH를 통해 구성 힘내 좀 더 많은 정보를.

모든 개발자가이 공유 저장소에 액세스하는 데 동일한 계정을 사용하는 경우 --shared위와 같은 옵션 을 사용할 필요가 없습니다 .

위와 같은 방법으로 저장소를 초기화 한 후 다음과 같이 초기 푸시를 수행합니다.

cd your/local/workspace/project
git remote add origin user@server:/path/to/project.git
git push origin master

위와 유사점이 보이십니까? 추가로 발생할 수있는 유일한 일은 계정에 비밀번호가있는 경우 SSH가 비밀번호를 요청하는 것입니다. 암호가없는 계정에서이 메시지가 표시되면 SSH 서버가 비활성화되었을 수 PermitEmptyPasswords있습니다.

이제 복제는 다음과 같습니다.

cd your/local/workspace
git clone user@server:/path/to/project.git

git status당신의 친구입니다. 자주 사용하세요. 다음과 같은 질문에 답하기에 좋습니다.

  • 그 명령이 방금 뭘했을까요?
  • 나는 어떤 지점에 있습니까?
  • 어떤 변화를 저 지르려고하는데 잊은 것이 있습니까?
  • 이 프로젝트를 마지막으로 작업 할 때 (몇일, 몇 주 또는 몇 달 전) 작업 중 이었습니까?

svn statusgit status들어과 달리 대규모 프로젝트에서도 거의 즉시 실행됩니다. 나는 종종 git이 그것을 자주 사용하는 것을 배우는 동안 안심하고 무슨 일이 일어나고 있는지에 대한 내 정신 모델이 정확한지 확인했습니다. 이제는 마지막 커밋 이후로 변경 한 사항을 기억하기 위해 주로 사용합니다.

.gitignore가 제대로 구성되어 있으면 훨씬 더 유용합니다.


변경 사항 커밋

파일을 편집 한 후에는 변경 사항을 git에 커밋해야합니다. 이 명령을 실행하면 커밋 메시지를 요청합니다.이 메시지는 변경 한 내용을 모든 사람에게 알려주는 간단한 텍스트입니다.

$ git commit source/main.c

./source/ 디렉토리에있는 main.c 파일을 커밋합니다.

$ git commit -a # the -a flag pulls in all modified files

변경된 모든 파일을 커밋합니다 (새 파일이 아니라 git-add를 사용하여 색인에 추가해야 함). 특정 파일 만 커밋하려면 먼저 git-add를 사용하여 준비한 다음 -a 플래그없이 커밋해야합니다.

커밋은 원격 저장소가 아닌 로컬 저장소 만 변경합니다. 커밋을 원격 저장소로 보내려면 푸시를 수행해야합니다.

$ git push <remote> <branch> # push new commits to the <branch> on the <remote> repository

CVS 또는 SVN에서 온 누군가에게는 중앙 저장소에 대한 커밋에 이제 두 단계가 필요하기 때문에 이것은 변경입니다.


어떻게 분기합니까?

git 저장소의 기본 브랜치는 master.

새 지사를 만들려면

git branch <branch-name>

현재 저장소 유형의 모든 분기 목록을 보려면

git branch

다른 지점으로 전환하려면 다음을 사용할 수 있습니다.

git checkout <branch-name>

새 분기를 만들고 한 단계로 전환하려면

git checkout -b <branch-name>

브랜치를 삭제하려면

git branch -d <branch-name>

현재 브랜치의 변경 사항으로 브랜치를 생성하려면

git stash
git stash branch <branch-name>

최신 코드 얻기

$ git pull <remote> <branch> # fetches the code and merges it into 
                             # your working directory
$ git fetch <remote> <branch> # fetches the code but does not merge
                              # it into your working directory

$ git pull --tag <remote> <branch> # same as above but fetch tags as well
$ git fetch --tag <remote> <branch> # you get the idea

원격 저장소에서 코드의 최신 사본을 가져 오는 모든 경우에 해당됩니다.


프로 힘내 무료 책은 특히 초보자를위한, 확실히 내가 가장 좋아하는 것입니다.


Git Magic 만 있으면됩니다. 보장 또는 환불!


분기를 어떻게 병합합니까?

분기를 병합하려면 (예 : masterrelease) 현재 분기가 병합하려는 대상 분기인지 확인하십시오 (현재 분기를 사용 git branch하거나 git status확인).

그런 다음

git merge master

(여기서는 master현재 분기와 병합하려는 분기의 이름입니다).

충돌이 있으면 다음을 사용할 수 있습니다.

git diff

해결해야하는 보류중인 충돌을 보려면


나는 또한 Git 내부 가 매우 유용하다는 것을 발견했습니다 . Scott Chacon (Pro Git의 저자이자 Git Community Book의 관리자)이 작성했습니다. 내가 Git 내부에 대해 좋아하는 점 은 먼저 개념에 초점을 맞춘 다음 명령에 초점을 맞추고 있으며, 약 100 개의 작은 페이지이므로 빠르게 소화 할 수 있다는 것입니다.


파일 수정 내역을 어떻게 봅니까?

git log -- filename

원격 지점을 추적하는 방법

로컬 리포지토리를 복제 한 원격 리포지토리가 있고 해당 원격 리포지토리에 'some_branch'라는 브랜치가 있다고 가정하고 로컬에서 추적하는 방법은 다음과 같습니다.

# list remote branches
git branch -r

# start tracking one remote branch
git branch --track some_branch origin/some_branch

# change to the branch locally
git checkout some_branch

# make changes and commit them locally
....

# push your changes to the remote repository:
git push

Git의 작동 방식을 이해하는 데 좋은 논문은 The Git Parable 입니다. 매우 좋습니다!


파일의 두 버전을 비교하거나 현재 파일과 이전 버전을 어떻게 비교합니까?

비교 명령은 git diff입니다.

파일의 두 버전을 비교하려면 :

$ git diff <commit1> <commit2> <file_name>

이는 commit1과 commit2를 비교합니다. 순서를 변경하면 파일이 반대 방향으로 비교됩니다. 예상과 다를 수 있습니다.

현재 준비된 파일을 저장소와 비교하려면 다음을 수행하십시오.

$ git diff --staged <file_name>

현재 준비되지 않은 파일을 저장소와 비교하려면 :

$ git diff <file_name>

왜 또 다른 하우투? 시작하기에 완벽한 git 가이드 와 같이 인터넷에는 정말 좋은 것들이 있습니다 . 기여할 수 있고 (git 허브에 호스팅 됨)이 공동 작업에 완벽한 git 책포함하여 좋은 링크가 있습니다.

stackoverflow에서 가장 좋아하는 트릭을보고 싶습니다!

제가 최근에 발견 한 광산은 여기git stash설명 되어 있습니다. 현재 작업을 저장하고 다른 지점으로 이동할 수 있습니다.

편집 : 이전 게시물과 같이 위키로 게시물이있는 stackoverlow 형식을 정말로 선호한다면이 답변을 삭제합니다


콘솔 UI-Tig

설치:

apt-get install tig

용법

git repo 안에있는 동안 'tig'를 입력하고 대화 형 로그를 보려면 로그에서 'enter'를 눌러 자세한 정보를 확인하십시오. h 는 기본 기능을 나열하는 도움말입니다.

하찮은 일

"Tig"는 거꾸로 "Git"입니다.


원격 저장소에 분기를 생성하려면 어떻게해야합니까?

단일 원격 저장소에서 원격 저장소를 복제했다고 가정합니다.

# create a new branch locally
git branch name_of_branch
git checkout name_of_branch
# edit/add/remove files    
# ... 
# Commit your changes locally
git add fileName
git commit -m Message
# push changes and new branch to remote repository:
git push origin name_of_branch:name_of_branch

나는 공식 Git 튜토리얼을 시작했다 . 초보자에게도 충분히 실용적이라고 생각합니다 (당신의 정의에 따르면 저는 초보자 였지만 아직은 초보자였습니다! 저는 메이크 파일을 거의 파악하지 못했으며 Apache Subversion 등으로 약간만 플레이했습니다).


원격 저장소에서 브랜치를 어떻게 삭제합니까?

:브랜치 이름 앞에 사용하여 리모컨에서 푸시를 수행하십시오.

git push origin :mybranchname

되는 origin원격의 이름과 mybranchname삭제 될 대해 분기의 이름

http://help.github.com/remotes/


푸시 및 풀 변경

단순화 된 방식으로, 그냥 git push하고 git pull. 변경 사항이 병합되고 충돌이 발생하면 git이 알려줄 것이며 수동으로 해결할 수 있습니다.

원격 저장소로 처음 푸시 할 때 수행해야합니다 git push origin master(마스터가 마스터 브랜치 임). 그때부터 git push.

으로 태그를 밀어 넣습니다 git push --tags.


코드 확인

먼저 빈 디렉토리로 이동하여 "git init"를 사용하여 저장소로 만든 다음 원격 저장소를 자신의 저장소에 복제합니다.

git clone user@host.com:/dir/to/repo

처음 복제하는 곳은 기본적으로 "git pull"이 가져 오는 곳입니다.


Gity : http://macendeavor.com/gity

참고 URL : https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide

반응형