>  기사  >  개발 도구  >  Git 사용법에 대한 자세한 소개

Git 사용법에 대한 자세한 소개

coldplay.xixi
coldplay.xixi앞으로
2021-04-28 17:07:073358검색

Git 사용법에 대한 자세한 소개

1、Git概念

1.1. Git库中由三部

Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目

1) 工作目录:用户本地的

2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为

3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次

推荐(免费):git

1.2. 使用Git时的

1.2.1. Git初始

1) 配置使用git仓库的人

git config --global user.name "Your Name Comes He

2) 配置使用git仓库的人员em

git config --global user.email you@yourdomain.example.

1.2.2. Git文档忽

工作目录中有一些文件是不希望接受Git 管理的,譬如程序编译时生成的中间文件等等。Git 提供了文档忽略机制,可以将工作目录中不希望接受Git 管理的文档信息写到同一目录下的.gitignore 文

例如:工作目录下有个zh目录,如果不想把它加入到Git管理中,则

echo “zh” > .gitign

git ad

有关gitignore 文件的诸多细节知识可阅读其使用手册:man gitign

1.3. Git与Repo

Git操作一般对应一个仓库,而Repo操作一般对应一个项目,即一个项目会由若干仓库

例如,在操作整个Recket项目时使用Repo,而操作其中的某个仓库时使用Git。在包含隐藏目录.git的目录下执行git

2. Gi

Git help 获取git基

(如果要知道某个特定命令的使用方法,例如:使用Git help clone,来获取git clone的使用

3. Git本地

3.1. Git i

或者使用git init-

创建一个空的Git库。在当前目录中产生一个.git 的子目录。以后,所有的文件变化信息都会保存到这个目录下,而不像CVS那样,会在每个目录和子目录下都创建一个CVS

在.git目录下有一个config文件,可以修改其中的配置

3.2. Git 

将当前工作目录中更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示记入了版本历史中,这也是提交之前所需要执行的

可以递归添加,即如果后面跟的是一个目录作为参数,则会递归添加整个目录中的所有子目录和文件。

git add dir1 ( 添加dir1这个目录,目录下的所有文件都被加

Git add f1 f2 ( 添加f1,f2

git add . ( 添加当前目录下的所有文件和子目

3.3. Git

从当前的工作目录中和索引中删除

可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件。

git rm –r * (디렉토리를 입력하고 이 명령문을 실행하여

git rm f1 디렉토리의 모든 파일과 자막을 삭제합니다. (로컬 디렉토리 및 인덱스에 있는 이 파일을 포함하여 파일 f1을 삭제합니다.

git rm - -ached f1 (파일 f1을 삭제하면 로컬 디렉터리 파일은 삭제되지 않고 인덱스에 있는 파일 레코드만 삭제되며, git이 추가된 파일은 캐시에서 제거되므로 커밋 시 파일이 제출되지 않습니다. 한꺼번에 추가하는 데 적합 파일이 많지만 그 중 몇 개만 제외하고 싶은 경우

3.4.Git com

현재 작업 디렉터리에 변경 사항 제출

git commit 명령을 직접 호출하면 메시지가 표시됩니다. 참고: git commit -m "gittutor repostory의 초기 커밋" CVS와 달리 git 커밋 주석은 비어 있으면 안 됩니다. 그렇지 않으면 제출됩니다.

Git 커밋에도 통과하지 못한 항목을 삭제하는 데 사용할 수 있는 -a 매개변수입니다. git add ID의 변경 사항은 강제로 함께 제출되지만 이 방법을 사용하는 것은 권장되지 않습니다.

제출이 이루어질 때마다 git은 전역 코드에 대한 고유 커밋 식별 코드입니다. 사용자는 git 재설정 명령

git commit –-amend –m “message”를 통해 제출된 코드를 복원할 수 있습니다(제출된

3.5를 지속적으로 수정합니다. Git sta

상태 보기 어떤 파일이 변경되었는지, 어떤 파일이 아직 추가되지 않았는지 등을 알 수 있습니다. 각 커밋 전에 이 명령을 통해 라이브러리를 확인하는 것이 가장 일반적인 실수입니다. git add를 호출하지 않고 커밋 작업을 호출하여 파일이 변경되었음을 git 라이브러리에 알립니다. 결과적으로, 이때 개발자가 파일이 제출되었다고 생각하고 계속 수정하거나 심지어는 파일이 제출되지 않습니다. 파일을 삭제하면 수정된 내용이 버전 관리되지 않으므로 매번 제출하기 전에 git을 사용하면 상태를 확인하여 이 오류를 찾을 수 있으므로 git status 명령을 호출할 경우 주의해야 합니다. "변경되었지만 업데이트되지 않았습니다:"라는 메시지가 있는 파일입니다. 이 파일은 마지막 커밋과 비교하여 변경되었지만 git add

3.6으로 식별되지 않습니다. Git

각 버전 변경 내용을 확인하세요. 변경 사항은 커밋

Git log

-1에 해당합니다. 5를 표시하려면 -5만 표시하면 됩니다. 지정하지 않으면 git log는 커밋

Git 로그에서 돌아갑니다. stat –summary (각 버전의 세부 정보 표시

프로젝트 로그 정보에서 각 로그의 첫 번째 줄(해당 문자열)은 버전 업데이트 제출 이름입니다. 이 이름을 프로젝트 버전 번호로 이해할 수 있습니다. 프로젝트 버전 번호는 고유해야 하며 프로젝트의 특정 업데이트를 나타내기 위해 기본적으로 Git에서 자동으로 생성됩니다. 프로젝트 버전 번호를 git-show 명령의 매개변수로 사용하면 프로젝트 버전의 업데이트 세부 정보를 볼 수 있습니다.

1) Git

2) Git

사실 위 명령은 버전 번호를 실제로 맞춤화하는 것이 아니라 단지 태그 개체를 생성하는 것인데, 이는 프로젝트 버전을 외부에 공개할 때 유용합니다.

3.7.

서버에서 다운로드한 코드를 로컬 코드와 병합하세요. 또는 브랜치

예: 현재 마스터 브랜치에서 dev 브랜치를 마스터에 병합하려면 git merge

참고: git merge nov/eclair_eocket(서버 git 라이브러리의 eclair_eocket 브랜치를 마스터 브랜치에 병합하는 것입니다) 로컬 브랜치

git rebase nov/eclair_eocket(서버 git 라이브러리의 eclair_eocket 브랜치를 로컬 임시 브랜치에 매핑한 다음 로컬 브랜치의 변경 사항을 이 임시 브랜치에 병합한 다음 이 임시 브랜치를 사용하여 로컬

3.8.Git d

로컬 코드와 인덱스의 코드를 비교하거나, 인덱스의 코드와 로컬 웨어하우스의 코드를 비교하세요

1) Git d

작업 디렉터리와 인덱스의 코드를 비교하세요.

2) Git diff - - cac

로컬 저장소와 인덱스 비교

3.9. Git check

3.9.1. 스위치

1) 새 브랜치를 만들고

Git checkout –b new

로 전환합니다.

2) 기존 로컬 브랜치로 전환 local_bra

Git checkout local_bra

(cat .git/HEAD 사용 후 refs:refs/heads/ local_bran이 표시됨

3) 서버의 브랜치로 전환 remote_bra

Git checkout remote_bra

(원격 브랜치 remote_branch는 git 브랜치 –r

4를 통해 커밋으로 전환 가능) Git 체크아웃 commit

(cat .git/HEAD 사용 후, commit_

5)이 표시됨 특정

로 이동 Git 체크아웃

(cat .git/HEAD를 사용한 후 t


이 표시됩니다. 참고: 1)과 2)를 제외하고 나머지 3개는 임시(분기 없음) 상태로 전환됩니다(이 헤드는 분리됨) 그런 다음 git Branch를 사용하여 켜져 있는지(분기 없음) 확인하고 cat .git/HEAD를 사용하여 해당 커밋 ID를 가리키는지 확인합니다. 이(브랜치 없음)는 일시적으로만 존재하며 실제로 확립된 브랜치가 아닙니다. 이때 2)를 실행하면 이(브랜치 없음)는 자동으로 사라지고, 1)을 실행하면 새 브랜치가 생성되고 이때 이 새 브랜치에 이(브랜치 없음)가 추가됩니다. , cat .git/ refs/heads/new_branch 방금 커밋을 가리킨 것을 볼 수 있습니다


3.9.2 기존 브랜치로 초기화


다음 명령을 실행하고 확립된 로컬 브랜치 또는 특정 원격 브랜치 또는 특정 커밋 ID 또는 특정 태그와 동시에 새 브랜치 new_branch를 생성하고 이 새 브랜치에 걸어두기


1) 이미 확립된 로컬로 전환 local_branch 분기를 사용하고 이 분기를 사용하여 새 분기 new_bran


git checkout –b new_branch local_bra


2) 원격 분기 Remote_branch로 전환하고 이 분기를 사용하여 새 분기 new_bran

을 초기화합니다.


Git checkout –b new_branch remote_bra


3) 특정 커밋 ID로 전환하고 새 브랜치를 만듭니다 new_bra


Git checkout –b new_branch commit


4) 특정 커밋 ID로 전환 new_bra


Git checkout –b new_branch


3.9.3 예를 들어 "git checkout app/model/user.rb"는 user.rb 파일을 마지막부터 업데이트합니다. 커밋된 버전 돌아오면 커밋되지 않은 작업 디렉터리의 모든 내용은



3.10입니다. Git-ls



현재 Git 라이브러리에 있는 내용 보기


3.1 1 . Git


파일, 디렉터리 이름 바꾸기 또는

예: Git mv helloworld.c helloworld1.c(helloworld.c 파일 이름을 helloworld1


3.12로 변경합니다. Git bra


3.12.1.


git 저장소에 생성됨 브랜치 비용이 거의 0이므로 브랜치를 몇 개 더 생성하는 데 인색할 필요가 없습니다. 처음 git init을 실행하면 시스템에서 "master"라는 이름의 브랜치를 생성하고 다른 브랜치는 수동으로 생성합니다. . 공통 브랜치 몇 가지를 소개합니다


본인 브랜치 마스터와의 과도한 간섭을 피하고 다른 사람과의 의사소통을 원활하게 하기 위해 나만의 개인 작업 브랜치를 생성하세요


위험도가 높은 작업을 할 때, 실험적


다른 사람의 작업을 병합하려면 병합을 위한 임시 브랜치를 만드는 것이 가장 좋습니다. 병합이 완료된 후 자신의 브랜치를 "가져와서"


브랜치를 추가하거나 삭제하고 확인하세요.


참고: 브랜치 정보는 일반적으로 .git/refs/ 디렉터리에 있습니다. 여기서 Heads 디렉터리는 로컬 브랜치이고, Remotes는 해당 서버의 브랜치이며, 태그는


3.12입니다. 2.


git 브랜치에 로컬 Git 라이브러리의 모든 브랜치가 나열되어 있는지 확인하세요. 나열된 브랜치 중 브랜치 이름 앞에 *가 있으면 이 브랜치가 현재


git 브랜치라는 의미입니다. 서버 git 라이브러리를 모두 나열합니다.


(계속해서 "git checkout -b 로컬 지점 이름 서버 지점 이름" 명령을 사용하여 서버의 특정 지점의 코드 텍스트를 가져올 수 있습니다.


3.12 .3. 현재

cat .git/H

3.12.4에 있는

확인


1) git 브랜치


를 생성합니다. 현재 작업 중인 브랜치는 새로 생성된 브랜치로 전환되지 않습니다. 따라서


2) git checkout -b


하려면 "git checkout 브랜치 이름" 명령도 필요합니다. 또한 현재 작업 브랜치를 브랜치로 전환합니다


3.12 .5. 브랜치로 전환: git checkout


메인 브랜치로 전환: git checkout mas


3.12.6.

git Branch –D

참고: 삭제 후에는 브랜치에서 발생한 모든 변경 사항을 복원할 수 없습니다. 강제 삭제

3.12.7. 두 브랜치의 파일 비교

git diff 마스터 브랜치 이름(마스터 브랜치와 다른 브랜치의

3.12.8을 비교하세요. 포인트 보기

git-show-branch(현재 브랜치의 커밋 댓글 보기 및

git-show-branch -all (모든 브랜치의 커밋 댓글 및 정보 보기)


* [dev]


!


* [dev^]


* [dev~2]


*+ [master]


위 예에서 "--" 위의 두 줄은 dev와 master라는 두 개의 브랜치가 있는데, dev 브랜치에 제출된 마지막 로그는 "d2"이고, master 브랜치에 제출된 마지막 로그는 "m2"입니다. "--" 아래 줄은 브랜치 진화의 기록을 나타냅니다. 여기서 dev는 dev 브랜치에서 발생한 마지막 커밋을 나타내고 dev^는 dev 브랜치에서 발생한 두 번째 커밋을 나타냅니다. dev~2는 dev 브랜치


3.12.9에서 세 번째 항목을 의미합니다. 현재 브랜치의 작업을 확인하세요


git whatchan


3.12.10.


git merge "Comment" 병합된 대상 브랜치가 병합됩니다.


병합에 충돌이 있으면 git은



예를 들어: git checkout master(master로 전환


git merge HEAD dev~2(master 브랜치와 dev~2 브랜치 병합) 또는: git merge master de



git pull 병합된 대상 브랜치가 병합됩니다


For 예: git checkout master(master



git pull .dev~2로 전환(현재 브랜치와 dev~2


3.13 병합). Git reb


은 일반적으로 예를 들어, 버전 C에서는 서버에서 로컬로 콘텐츠를 가져오고 로컬 콘텐츠를 수정합니다. 이때 로컬에서 수정된 콘텐츠를 서버에 제출하려고 합니다. 그런데 서버의 버전이 G로 변경된 것을 확인했습니다. 이때 먼저 Git rebase를 실행하여 서버의 최신 버전을 로컬에 병합해야 합니다


다음 두 그림을 보면 더 명확하게 설명됩니다. . rebase 명령이 실행된 후 분기점이 실제로 C에서 G로 이동하므로 분기도 C에서 G로 이동됩니다. 그러나 개발 중에 로컬 코드 베이스에는 백업 목적으로 기능적인 커밋과 커밋이 있습니다. 즉, 로그에 쓸모없는 로그가 많이 있습니다. 이러한 로그가 원격으로 다시 제출될 때 라이브러리에 제출하고 싶지 않습니다. 따라서 git res


를 사용해야 합니다. git 재설정의 개념은 비교적 복잡합니다. git Reset [--mixed | 소프트 | --하드] [


command's


--mixed 이것이 기본 옵션입니다. 예를 들어 git Reset [--mixed] dev^(dev^ 정의는 2.6.5를 참조하세요). 해당 기능은 분기 상태를 dev1^으로 재설정하는 것뿐이며 작업 파일의 내용은 변경하지 않습니다. 즉, dev1^에서 dev1로의 모든 파일 변경 사항은 유지되지만 dev1^과 dev1 사이의 모든 커밋 로그는 지워지고 변경된 파일 내용은 git add로 식별되지 않습니다. 다시 커밋하려면 다음도 수행해야 합니다. 변경된 파일에 대해 git add를 수행하십시오. 이런 방식으로 커밋한 후에는 매우 깨끗한 커밋 기록을 얻게 됩니다. (


--soft를 되돌리는 것은 git Reset –mixed를 수행한 다음 변경된 파일에 대해 git add를 수행하는 것과 같습니다. 이 옵션을 사용하면 직접 커밋할 수 있습니다. (


롤백

--웨어하우스의 하드 명령은 파일 내용을 포함한 모든 정보를 롤백합니다. 일반적으로 실행 후에는 파일 내용을 복원할 수 없습니다.



작업 디렉토리, 인덱스, 웨어하우스에서 사용 포인트로 전환


git Reset HEAD^ 첫 번째


git Reset HEAD~2 두 번째 포인트로 돌아가기


작업 디렉터리의 파일을 롤백하려면 git Reset - - hard HEAD를 사용하세요^ 첫 번째 디렉터리로 돌아가기


git Reset - - hard HEAD ~2 두 번째 디렉터리로 롤백


다음


을 사용하여 현재 작업 디렉터리를 지정된 버전 번호로 완전히 롤백할 수도 있습니다. 아래와 같이 A에서 G까지 5번 제출된 버전이 있다고 가정합니다. 버전 번호는 bbaf6fb5060b4875b18ff9ff637ce118256d6f20입니다. 'git Reset bbaf6fb5060b4875b18ff9ff637ce118256d6f20'을 실행했습니다. 그러면 A~C까지 세 개의 커밋만 남았습니다.




3.15. Git r


예를 들어 특정 버전 수정을 복원합니다. : git revert commit_id (여기서 commit_id는 코드를 커밋할 때 생성된 고유 단어입니다


예: (3.6에서) git revert dfb02e6e4f2f7b573337763e5c0013802e392818 (이 작업을 수행하면 마지막 커밋이 복원됩니다)


3.16.깃콘


이 명령을 사용하여 Git의 다양한 설정을 추가하고 변경할 수 있습니다. 예를 들어 "git config Branch.master.remote Origin"은 마스터의 원격 버전 라이브러리를 Origin version


3.17이라는 별칭으로 설정합니다. Git s


객체 차이점 표시


3.18.

예 복잡한 버전 번호 해시 값 문자열을 기억할 필요가 없도록 특정 버전에 태그를 지정합니다. 예를 들어 "git 태그"를 사용할 수 있습니다. revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20"을 사용하여 복원한 버전을 표시하므로 나중에 확인하고 싶을 때 버전 관리 시 해시 대신 revert_version 태그 이름을 사용할 수 있습니다



4. Git 서버 작동 명령 (


와 함께

4.1.git cl

.


서버 웨어하우스의 코드를 로컬로 생성된 디렉터리로 꺼냅니다. (서버


에서 git clone을 통해 원격 git 라이브러리를 얻은 후에는 .git/config의 개발자 정보가 함께 복제되지 않습니다. 로컬 라이브러리의 .git/config 파일에 개발자 정보를 추가해야 합니다. 또한 개발자가 직접 추가해야 합니다. git clone을 통해 얻은 원격 git 라이브러리에는 최신 버전만 포함되어 있습니다. 원격 git 라이브러리. 다른 브랜치 정보를 얻으려면 "git Branch -r"을 사용해야 합니다. 다른 원격 브랜치 코드를 얻으려면 "git checkout -" 명령을 사용하세요. b 로컬 브랜치 이름 원격 브랜치 이름", 여기서 원격 브랜치 이름은 "git Branch -r"입니다. 나열된 브랜치 이름은 일반적으로 "origin/branch name"과 같습니다. 로컬 브랜치 이름이 이미 존재하는 경우 "-b" 필요하지 않습니다






4.2.Git


서버 저장소에서 코드를 가져와서 로컬 코드와 병합합니다. 다운로드 Git fetch + Git mer


에 해당하는 서버의 최신 코드는 코드를 다른 리포지토리(원격 또는 로컬)의 로컬 코드로 업데이트합니다. 예: "git pull Origin master"는 master master


git pull은 모든 git 저장소에서 브랜치의 내용을 가져올 수 있습니다. Usage


git pull 사용자 이름@ipaddr: 원격 저장소 이름 원격 브랜치 이름 로컬 브랜치 이름: 원격 git 라이브러리에서 로컬 브랜치 이름을 로컬 브랜치로 가져옵니다. 로컬 브랜치 이름을 쓰지 않으면 기본적으로 로컬 브랜치로 가져옵니다. git pull도 가능합니다. 브랜치를 병합하는 데 사용됩니다. 따라서 로컬 브랜치에 이미 콘텐츠가 있는 경우 충돌이 있으면







4


과 같은 로컬 커밋 코드를 원격 저장소로 업데이트합니다. 로컬 코드 로 업데이트됩니다 orgin


git push와 git pull이라는 원격 버전은 정확히 반대입니다. 이는 로컬 브랜치의 내용을 원격 브랜치에 제출하는 것입니다. 사용법: git pushusername@.ipaddr: 원격 저장소 이름, 로컬 브랜치 이름 , 원격 지점 이름. 이 명령은 로컬 Git 라이브러리의 로컬 분기를 원격 Git 라이브러리의 원격 분기로 푸시합니다


git push는 자동으로 파일을 병합하지 않는 것 같습니다. 따라서 git push 중에 충돌이 발생하면 프롬프트 없이 나중에 push된 파일의 내용이 강제로 덮어쓰여집니다. 공동으로 개발할 때는 매우 위험합니다






4.4.

서버 저장소에서 코드를 다운로드하세요. (서버와 상호작용하고 서버에서 최신


을 다운로드하는 것은 원격에서 로컬로 최신 버전을 가져오는 것과 동일하며 자동으로 병합되지 않으며 Git pull


이를 사용하는 것이 더 안전합니다. 서버에서

를 가져오는 방법

예: git checkout nov/eclair_rocket(nov/eclair_rocket은 서버의 브랜치 이름)을 사용하는 경우 마지막으로 사용했을 때 서버에서 코드를 다운로드하게 됩니다. git fetch 명령; git fetch를 먼저 사용한 다음 git Checkout nov/eclair_rocket을 사용하고 먼저 서버에서 최신 업데이트 정보를 가져온 다음 최신 코드를 다운로드하세요.




inch 공기:. . :. ) ㅋㅋㅋ:. . )e 상호). . g. w. g))tå本:기록 기록 기록 기록;:))):]. ㅜㅜ. :e)) 분기: 2). 분기: 분기 d 레코드. 2012-22:) 역사) 안녕. 이름 지점 r 이름. 이름, 이름 분기 D에 있습니다. . . 나뭇가지. . . ;;:. h)를 설명합니다. 다섯. 예. codeghdhh. 시간. . 나뭇가지. )gg)dd)hh)hh 이름에는 상위 분기 t가 있습니다. 디. 에프. f))v. 이자형. 으으으으:). 1. g. . 에스). . . . 티))):. 중))):. 디. . . t 명령) lp를 주문합니다. . e.e:를 비교하세요. ml" 이름 설정 항목을 만드세요 å...;. 가 됩니다...) h 영상:.




되기도:...:.) l 영상:...) 상호 )... g. w.) tå: 기록 이름.;: v. . . ;. 이 되다. . . ) hå:.




inch 공기:. . :. ) ㅋㅋㅋ:. . )e 상호). . g. w. g))tå本:기록 기록 기록 기록;:))):]. ㅜㅜ. :e)) 분기: 2). 분기: 분기 d 레코드. 2012-22:) 역사) 안녕. 이름 지점 r 이름. 이름, 이름 분기 D에 있습니다. . . 나뭇가지. . . ;;:. h)를 설명합니다. 다섯. 예. codeghdhh. 시간. . 나뭇가지. )gg)dd)hh)hh 이름에는 상위 분기 t가 있습니다. 디. 에프. f))v. 이자형. 으으으으:). 1. g. . 에스). . . . 티))):. 중))):. 디. . . t 명령) lp를 주문합니다. . e.e:를 비교하세요. ml" 이름 설정 항목을 만드세요 Ÿ...;. 가...) hå:.




inchù:...:.) linch:...)e 상호 )... g. w.) tå: 기록 이름.;: v. . . ;. 이 되다. . . ) hå:.




inch 공기:. . :. ) ㅋㅋㅋ:. . )e 상호). . g. w. g))tå本:기록 기록 기록 기록;:))):]. ㅜㅜ. :e)) 분기: 2). 분기: 분기 d 레코드. 2012-22:) 역사) 안녕. 이름 지점 r 이름. 이름, 이름 분기 D에 있습니다. . . 나뭇가지. . . ;;:. h)를 설명합니다. 다섯. 예. codeghdhh. 시간. . 나뭇가지. )gg)dd)hh)hh 이름에는 상위 분기 t가 있습니다. 디. 에프. f))v. 이자형. 으으으으:). 1. g. . 에스). . . . 티))):. 중))):. 디. . . t 명령) lp를 주문합니다. . e.e:를 비교하세요. ml" 이름 설정 항목 س...; .Become...) h 영상:.




:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成。。。)h:。




:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成。。。)h:。




:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成。。。)h:。




:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成Git

1.1. Git库中由三部分组

Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内

1) 工作目录:用户本地的目录

2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为索引

3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次更新


1.2. 使用Git时的初始化事

1.2.1. Git初始化配

1) 配置使用git仓库的人员姓

git config --global user.name "Your Name Comes Here

2) 配置使用git仓库的人员emai

git config --global user.email you@yourdomain.example.co

1.2.2. Git文档忽略机

工作目录中有一些文件是不希望接受Git 管理的,譬如程序编译时生成的中间文件等等。Git 提供了文档忽略机制,可以将工作目录中不希望接受Git 管理的文档信息写到同一目录下的.gitignore 文件中

例如:工作目录下有个zh目录,如果不想把它加入到Git管理中,则执行

echo “zh” > .gitignor

git add 

有关gitignore 文件的诸多细节知识可阅读其使用手册:man gitignor

1.3.Git과 Repo의 비율

Git 작업은 일반적으로 하나의 창고에 해당하지만 Repo 작업은 일반적으로 하나의 프로젝트에 해당합니다. 즉, 프로젝트는 여러 개의 창고로 구성됩니다

예를 들어 Repo는 Repo는 Recket 프로젝트 전체를 운영할 때 사용되며, 특정 Repository를 작업할 때는 Git을 사용합니다. 숨겨진 디렉터리 .git


2가 포함된 디렉터리에서 git 작업을 수행합니다. Git he

Git help 기본 git 명령 가져오기

(예: 특정 명령을 사용하는 방법을 알고 싶다면 Git 도움말 사용) clone, git clone


3. 기본 Git 로컬 작업

3.1을 사용하려면 Git ini

을 사용하거나 git init-db

를 사용하여 현재 디렉터리에 빈 Git 라이브러리를 만듭니다. 앞으로는 모든 파일 변경 정보가 이 디렉터리에 저장됩니다. CVS는 각 디렉터리와 하위 디렉터리에 CVS 디렉터리를 생성합니다. 구성 정보는

.git 디렉터리에 있습니다. 3.2.Git 광고

현재 작업 디렉토리에 변경되거나 새로 추가된 파일을 Git 색인에 추가한다는 것은 해당 파일이 제출되기 전의 단계이기도 합니다. 즉, 매개변수로 디렉터리가 오면 전체 디렉터리의 모든 하위 디렉터리와 파일이 재귀적으로 추가됩니다. 예를 들어 git add dir1(아래에 dir1 디렉터리를 추가합니다. 모든 파일이 추가됩니다

Git add f1 f2 (f1, f2 파일 추가

git add . (현재 디렉토리의 모든 파일과 하위 디렉토리 추가

3.3. Git r

현재 작업 디렉토리 및 인덱스에서 제거) 파일

은 반복적으로 삭제될 수 있습니다. 즉, 디렉터리 뒤에 매개변수가 있으면 전체 디렉터리의 모든 하위 디렉터리와 파일이 반복적으로 삭제됩니다. 예를 들어

git rm –r *(디렉토리를 입력하고 이를 실행합니다. .문을 실행하면 디렉터리의 모든 파일과 하위 디렉터리가 삭제됩니다

git rm f1(로컬 디렉터리의 파일 레코드와 인덱스를 포함하여 파일 f1 삭제

git rm --ached f1(파일 f1 삭제, 로컬 디렉터리는 삭제됨) 삭제되지 않음) 파일, 인덱스에 있는 파일 레코드만 삭제하고, 커밋할 때 파일이 제출되지 않도록 캐시에 추가된 파일을 제거합니다. 하지만 그 중 몇 가지를 제외하고 싶은 상황

3.4.Git commi

수정 사항을 현재 작업 디렉터리에 제출하세요

git commit 명령을 직접 호출하면 명령줄에 설명을 입력하라는 메시지가 표시됩니다. git commit -m "gittutor.repostory의 초기 커밋". CVS와 달리 git 커밋 주석은 비어 있으면 안 됩니다. 그렇지 않으면 Git 커밋에도 변경 사항을 강제로 제출할 수 있는 -a 매개변수가 있습니다. 그러나 이 방법은 권장되지 않습니다

제출할 때마다 git은 전역 코드에 대한 고유한 커밋 식별 코드를 생성합니다. 사용자는 제출할 때마다 git Reset 명령을 통해 코드를 복원할 수 있습니다. git commit –-amend –m "message"(커밋 ID

3.5에서 제출된 콘텐츠를 지속적으로 수정합니다. Git 상태

저장소 상태를 봅니다. 어떤 파일이 변경되었는지, 어떤 파일이 git 라이브러리에 추가되지 않았는지 등을 알 수 있습니다. 각 커밋 전에 이 명령을 통해 라이브러리 상태를 확인하는 것이 좋습니다

가장 흔한 실수는 파일이 변경되었음을 git 라이브러리에 알리기 위해 git add를 호출하지 않고 파일을 수정하고 직접 커밋 작업을 호출하여 파일이 실제로 커밋되지 않는 것입니다. 이때, 개발자가 파일을 제출한 것으로 판단하고 계속해서 파일을 수정하거나 심지어 삭제하는 경우에는 수정된 콘텐츠에 대한 버전관리가 되지 않습니다. 커밋하기 전에 매번 git status를 사용하여 확인하면 이 오류를 발견할 수 있습니다. 따라서 git status 명령을 호출하는 경우 "변경되었지만 업데이트되지 않았습니다:"라는 메시지가 표시되는 해당 파일에 특별한 주의를 기울여야 합니다. 이 파일들은 모두 마지막 커밋과 비교하여 변경되었지만 git add

3.6으로 식별되지 않는 파일입니다. Git lo

각 버전 변경을 포함한 기록 로그를 확인하세요. 각 버전 변경은 커밋 ID

Git 로그에 해당합니다. -

-1은 5를 표시하려면 -5만 표시된다는 의미입니다. 지정하지 않으면 git log가 커밋부터 표시됩니다

Git log --stat –summary (각 버전의 세부 변경 사항을 표시합니다

프로젝트 로그 정보에서 각 로그의 첫 번째 줄(즉, 문자열 문자) )는 버전 업데이트 제출에 지정된 이름입니다. 프로젝트 버전 번호는 고유해야 하며 프로젝트의 특정 업데이트를 나타내기 위해 자동으로 생성되어야 합니다. git-show 명령을 사용하면 프로젝트 버전의 업데이트 세부 정보를 볼 수 있습니다. 예를 들어

1) Git lo


2) Git sho


사실 위 명령은 실제 ​​명령이 아닙니다. 버전 번호를 맞춤설정하면 태그 개체만 생성되므로 프로젝트 버전을 외부에 공개할 때 더욱 유용합니다

3.7.Git merge

서버에서 다운로드한 코드를 로컬 코드와 병합합니다. 또는 브랜치 병합을 수행하세요

예: 현재 마스터 브랜치에서 dev 브랜치를 마스터로 병합하려면 git merge de

참고: git merge nov/eclair_eocket(서버 git의 eclair_eocket 브랜치를 병합하는 것입니다) 라이브러리를 로컬 브랜치에

git rebase nov/eclair_eocket(서버 git 라이브러리의 eclair_eocket 브랜치를 로컬 임시 브랜치에 매핑한 다음 로컬 브랜치의 변경 사항을 이 임시 브랜치에 병합한 다음 이 임시 브랜치를 사용하여 초기화합니다. 로컬 브랜치

3.8.Git dif

로컬 코드를 인덱스의 코드와 비교하거나 인덱스의 코드를 로컬 웨어하우스의 코드와 비교

1) Git dif

작업 디렉터리를 index 코드의 코드

2) Git diff - - 캐시

인덱스를 로컬 웨어하우스의 코드와 비교

3.9. Git checkou

3.9.1. 브랜치로 전환

1) 새 브랜치를 생성하고 브랜치로 전환

Git 체크아웃 –b 새 브랜치

2) 기존 로컬 브랜치로 전환 local_branc

Git 체크아웃 local_branc

(cat .git/HEAD, refs:refs/heads/ local_branch

3 사용 후) Switch 서버의 브랜치로 이동 Remote_branc

Git checkout remote_branc

(원격 브랜치 remote_branch는 git 브랜치 –r

4를 통해 나열될 수 있습니다.) 커밋으로 전환 i

Git checkout commit_i

(cat .git 사용 / HEAD 이후에는 commit_id가 표시됩니다

5) 특정 ta

Git 체크아웃으로 전환합니다. ta

(cat .git/HEAD 사용 후 tag

가 표시됩니다)

참고: 1)과 2)를 제외하고 나머지 3개는 임시(분기 없음) 상태로 전환되었을 뿐입니다(이번 헤드는 분리되어 있습니다). 이때 git Branch를 사용하면 켜져 있음(분기 없음)을 확인할 수 있습니다. ), cat.git/HEAD는 해당 커밋 ID를 가리키는 것을 봅니다. 이(브랜치 없음)는 일시적으로만 존재하며 실제로 확립된 브랜치가 아닙니다. 이때 2)를 실행하면 이(브랜치 없음)는 자동으로 사라지고, 1)을 실행하면 새 브랜치가 생성되고 이때 이 새 브랜치에 이(브랜치 없음)가 추가됩니다. , cat .git/ refs/heads/new_branch는 방금 커밋 ID를 가리킨 것을 볼 수 있습니다

3.9.2 기존 브랜치로 새 브랜치를 초기화합니다

다음 명령을 실행한 후 설정된 로컬로 전환합니다. 브랜치 또는 원격 브랜치 또는 특정 커밋 ID 또는 특정 태그를 사용하여 새 브랜치 new_branch를 생성하고 이 새 브랜치에 걸어둡니다

1) 이미 설정된 로컬 브랜치인 local_branch로 전환하고 이 브랜치를 사용하여 새 브랜치를 초기화합니다. new_branch

git checkout –b new_branch local_branc

2) 특정 원격 브랜치 Remote_branch로 전환하고 이 브랜치를 사용하여 새 브랜치를 초기화합니다 new_branch

Git checkout –b new_branch remote_branc

3) 특정 커밋 ID로 전환합니다. new_branc

Git checkout –b new_branch commit_i

4) 태그로 전환하고 새 브랜치를 생성합니다 new_branc

Git checkout –b new_branch ta

3.9.3 코드 복원

예: “git. checkout app/model/ user.rb"는 마지막으로 제출된 버전에서 user.rb 파일을 다시 업데이트하고 커밋되지 않은 작업 디렉터리의 모든 콘텐츠를 덮어쓰게 됩니다


3.10. Git-ls-fil

View 현재 git 라이브러리에는 어떤 파일이 있나요

3.11. Git m

파일, 디렉터리 또는 링크 이름 바꾸기

예: Git mv helloworld.c helloworld1.c (파일 helloworld.c의 이름을 helloworld1.c

로 바꿉니다. 3.12. Git branc

3.12.1 git 저장소에 브랜치를 생성하는 데 드는 총 비용은 거의 0에 가깝기 때문에 처음 git init을 실행할 때 몇 개 더 생성하는 데 인색할 필요가 없습니다. 시스템에서 이름을 생성합니다. "마스터"에 대한 브랜치는 수동으로 생성됩니다.

다음은 몇 가지 일반적인 브랜치 전략입니다

주 브랜치 마스터와의 과도한 간섭을 피하고 다른 사람과의 의사소통을 용이하게 하기 위해 자신만의 개인 작업 브랜치를 만듭니다. . 소통과 협업

위험도가 높은 작업을 할 때는 실험적인 브랜치를 만들어 보세요

다른 사람의 작업을 병합할 때는 병합을 위한 임시 브랜치를 만들고 병합이 완료된 후 자신의 브랜치로 "가져오기"하는 것이 가장 좋습니다.

브랜치에 대한 추가, 삭제, 확인 및 기타 작업

참고: 브랜치 정보는 일반적으로 .git/refs/ 디렉터리에 있습니다. 여기서 Heads 디렉터리는 로컬 브랜치이고, Remotes는 해당 서버의 브랜치이며, 태그는 태그

3.12 .2. 브랜치 보기

git 브랜치는 로컬 Git 라이브러리의 모든 브랜치를 나열합니다. 나열된 브랜치 중 브랜치 이름 앞에 *가 있으면 해당 브랜치가 현재 브랜치라는 의미입니다.

git Branch –r 서버 git library의 모든 브랜치를 나열합니다

(계속해서 "git checkout" 명령을 사용할 수 있습니다. -b 로컬 지점 이름 서버 지점 이름"을 사용하여 서버의 특정 지점의 코드 파일을 가져옵니다.)

3.12.3. 현재 어떤 지점에 있는지 확인

cat .git/HEA

3.12.4. 생성 브랜치

1) git 브랜치 브랜치

브랜치가 생성되더라도 현재 작업 중인 브랜치는 새로 생성된 브랜치로 전환되지 않습니다. 따라서 전환하려면 "git checkout 브랜치 이름" 명령도 필요합니다.

2) git 체크아웃 –b 브랜치

브랜치를 생성했을 뿐만 아니라 현재 작업 중인 브랜치를 브랜치로 전환했습니다.

3.12.5. 브랜치로 전환: git checkout Branch

메인 브랜치로 전환: git checkout master

3.12.6. 브랜치

git 브랜치 –D 브랜치

참고: 삭제 후에는 이 브랜치에서 발생한 모든 변경 사항을 복구할 수 없습니다. 이 브랜치를 강제 삭제

3.12.7. 두 브랜치의 파일을 비교

git diff master 브랜치 이름(마스터 브랜치와 다른 브랜치의 차이점 비교

3.12.8. 브랜치 기록 보기

git-show -branch(현재 브랜치의 커밋 주석 및 정보 보기

git-show-branch -all(모든 브랜치의 커밋 주석 및 정보 보기) 예:

* [dev] d

! [master] m

-

* [dev] d

* [dev^] d

* [dev~2] d

*+ [master] m

위 예에서 "--" 위의 두 줄은 dev와 master 두 개의 브랜치가 있고 dev 브랜치에 제출된 마지막 로그는 "d2"이고 master 브랜치에 제출된 마지막 로그는 "m2"입니다. "--" 아래 줄은 브랜치 진화의 내역을 나타냅니다. , 여기서 dev는 dev 브랜치에서 발생한 마지막 커밋을 나타내고, dev^는 dev 브랜치에서 발생한 마지막에서 두 번째 커밋을 나타냅니다. dev~2는 dev 브랜치에서 발생한 마지막에서 세 번째 커밋을 나타냅니다

3.12.9. 현재 브랜치 보기

git whatchange

3.12.10. 포인트 병합

방법 1

git merge "Comments" 병합 대상 브랜치 병합 소스 포인트

병합에 충돌이 있으면 git에서 메시지를 표시합니다.

예: git checkout master(마스터 브랜치로 전환

git merge HEAD dev~2(마스터 브랜치와 dev~2 브랜치 병합) 또는: git merge master dev~

방법 2

git pull merge 대상 브랜치 merge 소스 브랜치

예: git checkout master(마스터 브랜치로 전환

git pull.dev~2(현재 브랜치와 dev~2 브랜치를 병합

3.13)) Git rebas

는 일반적으로 소스 브랜치를 병합할 때 사용됩니다. 예를 들어, 서버의 최신 콘텐츠를 로컬로 전송합니다. 예를 들어 버전 C에서는 서버에서 로컬로 콘텐츠를 가져오고 로컬 콘텐츠를 수정합니다. 이때 로컬에서 수정된 콘텐츠를 서버에 제출하려고 합니다. 그런데 서버의 버전이 G로 변경된 것을 발견했습니다. 이때 먼저 Git rebase를 수행해야 합니다. 서버의 최신 버전을 로컬에 병합하려면 다음 두 가지로 설명하는 것이 더 명확할 것입니다. 그림. rebase 명령이 실행된 후 분기 지점은 실제로 C에서 G로 이동하므로 분기는 C에서 G


3.14 라이브러리의 반전 및 복구입니다. 버려진 R&D 코드를 재설정하는 데 사용될 뿐만 아니라 중요한 기능도 있습니다. 예를 들어, 로컬에서 개발한 후 원격으로 다시 제출할 준비를 합니다. 그러나 로컬 코드베이스가 개발되면 기능적 커밋, 백업 목적의 커밋 등이 있습니다. 간단히 말해서 커밋 로그에는 쓸모없는 로그가 많이 있으며 이러한 로그가 원격으로 다시 제출될 때 라이브러리에 제출하고 싶지 않습니다. 따라서 git Reset을 사용해야 합니다

git Reset의 개념은 비교적 복잡합니다. 명령 형식: git Reset [--mixed | --soft | --hard] [

명령 옵션

--mixed 이것이 기본 옵션입니다. 예를 들어 git Reset [--mixed] dev^(dev^ 정의는 2.6.5를 참조하세요). 해당 기능은 분기 상태를 dev1^으로 재설정하는 것뿐이며 작업 파일의 내용은 변경하지 않습니다. 즉, dev1^에서 dev1로의 모든 파일 변경 사항은 유지되지만 dev1^과 dev1 사이의 모든 커밋 로그는 지워지고 변경된 파일 내용은 git add로 식별되지 않습니다. 다시 커밋하려면 다음도 수행해야 합니다. 변경된 파일에 대해 git add를 수행하십시오. 이런 방식으로 커밋한 후에는 매우 깨끗한 커밋 기록을 얻게 됩니다. (인덱스와 웨어하우스의 내용을 되돌리는 것

--soft는 git Reset –mixed를 한 뒤, 변경된 파일에 대해 git add를 하는 것과 같습니다. 이 옵션을 사용하면 바로 커밋할 수 있습니다. (답글 내용 폐기 중) 웨어하우스

--hard는 파일 내용을 포함한 모든 정보를 롤백합니다. 일반적으로 버려진 코드를 재설정할 때만 사용됩니다. 실행 후에는 파일 내용을 복원할 수 없습니다. 및 Warehouse가 롤백됩니다

예를 들어

사용된 브랜치로 전환

git Reset HEAD^ 첫 번째 노트 롤백

git Reset HEAD~2 두 번째 노트 롤백

다음 위치의 파일을 롤백하려는 경우 작업 디렉터리에서 git Reset - - 첫 번째 레코드를 롤백하려면 hard HEAD^을 사용하세요

git Reset - - 두 번째 레코드를 롤백하려면 hard HEAD~2

다음 방법을 사용할 수도 있습니다.

현재 레코드를 완전히 롤백합니다. 아래와 같이 A부터 G까지 5개의 버전이 제출되었다고 가정합니다. C의 버전 번호는 bbaf6fb5060b4875b18ff9ff637ce118256d6f20입니다. 'git Reset bbaf6fb5060b4875b18ff9ff637ce118256d6f20'을 실행하면 결과는 A~C까지 3개만 제출됩니다. 왼쪽


3.15. Git rever

버전에 대한 특정 수정 사항을 복원합니다. 예: git revert commit_id(여기서 commit_id는 코드를 커밋할 때 생성된 고유 문자열입니다.

예: (3.6에서) git revert dfb02e6e4f2f7b573337763e5c0013 802e392818( 마지막 커밋 작업을 복원하려면 이 작업을 실행하세요

3.16. Git confi

이 명령을 사용하여 "git config Branch.master .remote Origin"과 같은 Git의 다양한 설정을 추가하고 변경하면 마스터의 원격 저장소가 별칭으로 설정됩니다.

3.17.Git sho

다양한 유형의 객체 표시

3.18.Git ta

태그 객체 생성, 나열, 삭제 또는 확인(GPG로 서명)

특정 버전을 태그할 수 있습니다. 복잡한 버전 번호 해시 값 문자열을 기억할 필요가 없습니다. 예를 들어 "git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20"을 사용하여 이를 복원된 버전으로 표시한 다음 나중에 버전을 보고 싶을 때 사용할 수 있습니다. 해시 값 대신 revert_version 태그 이름


4. Git 서버 작업 명령(서버로 전달

4.1. Git clone

Remove 서버의 웨어하우스 코드가 로컬로 생성된 디렉터리로 이동됩니다. the server

git clone을 통해 원격 git 라이브러리를 얻은 후에는 .git/config의 개발자 정보가 함께 복제되지 않습니다. 여전히 로컬 라이브러리의 .git/config 파일에 개발자 정보를 추가해야 합니다. 또한 개발자는 .gitignore 파일을 직접 추가해야 합니다. git clone을 통해 얻은 원격 git 라이브러리에는 원격 git 라이브러리의 현재 작업 분기만 포함됩니다. 다른 지점 정보를 얻으려면 "git Branch -r"을 사용하여 확인해야 합니다. 다른 원격 지점 코드를 얻으려면 "git checkout -b 로컬 지점 이름 원격 지점 이름" 명령을 사용하면 됩니다. 여기서 원격 분기 "git Branch -r"에 나열된 분기 이름은 일반적으로 "원본/분기 이름"과 같습니다. 로컬 브랜치 이름이 이미 존재하는 경우 "-b" 매개변수는 필요하지 않습니다

예를 들어


4.2.

서버 저장소에서 코드를 가져와서 로컬 코드와 병합하세요. (서버와 상호 작용하고 서버에서 최신 코드를 다운로드합니다. Git fetch + Git merge

코드를 다른 저장소(원격 또는 로컬)에서 로컬로 업데이트합니다. 예: "git pull "origin master"는 원본 저장소의 코드를 로컬 마스터 분기로 업데이트하는 것입니다.

git pull은 모든 Git 라이브러리에서 분기의 내용을 가져올 수 있습니다. 사용법은 다음과 같습니다

git pull 사용자 이름@ipaddr: 원격 저장소 Ming Yuan End 분기 이름 로컬 분기 이름 이 명령은 원격 Git 라이브러리의 원격 분기 이름을 로컬 Git 라이브러리의 로컬 분기로 가져옵니다. 로컬 분기 이름이 기록되지 않으면 기본적으로 로컬 현재 분기로 가져옵니다. git pull은 브랜치를 병합하는 데에도 사용할 수 있습니다. git merge와 동일한 기능을 가지고 있으므로 로컬 브랜치에 이미 콘텐츠가 있는 경우 git pull은 이러한 파일을 병합하고 충돌이 있는 경우 경고합니다. , git pull이 경고합니다.



4.3 Git push

로컬 커밋 코드를 원격 저장소로 업데이트합니다. 예를 들어 "git push Origin"은 로컬을 업데이트합니다. orgin이라는 디렉터리에 대한 코드 원격 저장소에서 git push와 git pull은 정확히 반대입니다. 즉, 로컬 분기의 내용을 원격 분기에 제출하는 것입니다. 사용법: git pushusername@ipaddr: 원격 저장소 이름 로컬 분기 이름 원격. 이 명령은 로컬 git 라이브러리의 로컬 브랜치를 원격 git 라이브러리의 원격 브랜치 이름으로 푸시합니다. 따라서 git push가 발생하면 자동으로 병합되지 않는 것 같습니다. 충돌이 있는 경우 나중에 푸시된 파일의 내용이 강제로 덮어쓰기되며 프롬프트가 표시되지 않습니다. 예를 들어



4.4. (서버와 상호작용하고 서버에서 최신 코드를 다운로드하세요

최신 버전을 원격에서 로컬로 가져오는 것과 동일하며 자동으로 병합되지 않으며 Git 풀보다 안전합니다.

서버에서 업데이트를 받으려면 이 방법을 사용하세요

예: git checkout nov/eclair_rocket(nov/eclair_rocket은 서버의 브랜치 이름)을 사용하면 마지막으로 서버에서 다운로드된 코드를 받게 됩니다. git fetch 명령을 사용했습니다. git fetch를 먼저 사용한 다음 git checkout nov/eclair_rocket을 사용하면 먼저 서버에서 최신 업데이트 정보를 얻은 다음 서버에서 최신 코드를 다운로드합니다. . . ) hå:. . .

inchinch

inchinch:. . :. ) ㅋㅋㅋ:. . )e 상호). . g. w. g))tå本:기록 기록 기록 기록;:))):]. ㅜㅜ. :e)) 분기: 2). 분기: 분기 d 레코드. 2012-22:) 역사) 안녕. 이름 지점 r 이름. 이름, 이름 분기 D에 있습니다. . . 나뭇가지. . . ;;:. h)를 설명합니다. 다섯. 예. codeghdhh. 시간. . 나뭇가지. )gg)dd)hh)hh 이름에는 상위 분기 t가 있습니다. 디. 에프. f))v. 이자형. 으으으으:). 1. g. . 에스). . . . 티))):. 중))):. 디. . . t 명령) lp를 주문합니다. . e.e:를 비교하세요. ml" 이름 설정 항목을 만드세요....;. 컨셉이 되세요 자세가 되세요 자세되세요 ???? 공기... ..모든 코드 fetch를 업데이트합니다(예: 라이브러리의 작업 이름). 3. Git 푸시(예: 알람 분기)는 다음과 같습니다. 분기 ge pul(예: 서버 교환 값의 매개변수 파일 상호 작용) ta 유형 ho 라이브러리 fi 연산자 문자열 적 버전 방법 각 참고, 예를 들어 분기 분기 소스 분할 방법과 같은 컨텐츠 컨텐츠 옵션 hetrese 기능 2 v~ 분기 프롬프트 소스 분할 방법 함께 분할 ge 레코드 커밋 m d dd

- m d例如信息支历区别的区分支分支除分te分支支上分支切换分支个分EA分支件)分支分支看分标签操作分支分支协作策略创建 总nc.c链接 m文件-fil覆盖原代tanc_incncchncch支上新分idagtataid_i i列出ncncchncnc分支分支到分ou代码he代码if比较if分支支上de合并rg比较有用 sholo例如变化显示 -idlo文件状态tu内容代码方式失败内容mi况.记录目录例如文件 r录 文件入 例如一步ad信息目录dbni操作基本方法本命t he操作组成的比ord or执行件中略机coaire员姓化配初始化事更新索引目录录内分组Git概念

1.1. Git库中由三部分组

Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内

1) 工作目录:用户本地的目录

2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为索引

3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次更新


1.2. 使用Git时的初始化事

1.2.1. Git初始化配

1) 配置使用git仓库的人员姓

git config --global user.name "Your Name Comes Here

2) 配置使用git仓库的人员emai

git config --global user.email you@yourdomain.example.co

1.2.2. Git文档忽略机

工作目录中有一些文件是不希望接受Git 管理的,譬如程序编译时生成的中间文件等等。Git 提供了文档忽略机制,可以将工作目录中不希望接受Git 管理的文档信息写到同一目录下的.gitignore 文件中

例如:工作目录下有个zh目录,如果不想把它加入到Git管理中,则执行

echo “zh” > .gitignor

git add 

有关gitignore 文件的诸多细节知识可阅读其使用手册:man gitignor

1.3.Git과 Repo의 비율

Git 작업은 일반적으로 하나의 창고에 해당하지만 Repo 작업은 일반적으로 하나의 프로젝트에 해당합니다. 즉, 프로젝트는 여러 개의 창고로 구성됩니다

예를 들어 Repo는 Repo는 Recket 프로젝트 전체를 운영할 때 사용되며, 특정 Repository를 작업할 때는 Git을 사용합니다. 숨겨진 디렉터리 .git


2가 포함된 디렉터리에서 git 작업을 수행합니다. Git he

Git help 기본 git 명령 가져오기

(예: 특정 명령을 사용하는 방법을 알고 싶다면 Git 도움말 사용) clone, git clone


3. 기본 Git 로컬 작업

3.1을 사용하려면 Git ini

을 사용하거나 git init-db

를 사용하여 현재 디렉터리에 빈 Git 라이브러리를 만듭니다. 앞으로는 모든 파일 변경 정보가 이 디렉터리에 저장됩니다. CVS는 각 디렉터리와 하위 디렉터리에 CVS 디렉터리를 생성합니다. 구성 정보는

.git 디렉터리에 있습니다. 3.2.Git 광고

현재 작업 디렉토리에 변경되거나 새로 추가된 파일을 Git 색인에 추가한다는 것은 해당 파일이 제출되기 전의 단계이기도 합니다. 즉, 매개변수로 디렉터리가 오면 전체 디렉터리의 모든 하위 디렉터리와 파일이 재귀적으로 추가됩니다. 예를 들어 git add dir1(아래에 dir1 디렉터리를 추가합니다. 모든 파일이 추가됩니다

Git add f1 f2 (f1, f2 파일 추가

git add . (현재 디렉토리의 모든 파일과 하위 디렉토리 추가

3.3. Git r

현재 작업 디렉토리 및 인덱스에서 제거) 파일

은 반복적으로 삭제될 수 있습니다. 즉, 디렉터리 뒤에 매개변수가 있으면 전체 디렉터리의 모든 하위 디렉터리와 파일이 반복적으로 삭제됩니다. 예를 들어

git rm –r *(디렉토리를 입력하고 이를 실행합니다. .문을 실행하면 디렉터리의 모든 파일과 하위 디렉터리가 삭제됩니다

git rm f1(로컬 디렉터리의 파일 레코드와 인덱스를 포함하여 파일 f1 삭제

git rm --ached f1(파일 f1 삭제, 로컬 디렉터리는 삭제됨) 삭제되지 않음) 파일, 인덱스에 있는 파일 레코드만 삭제하고, 커밋할 때 파일이 제출되지 않도록 캐시에 추가된 파일을 제거합니다. 하지만 그 중 몇 가지를 제외하고 싶은 상황

3.4.Git commi

수정 사항을 현재 작업 디렉터리에 제출하세요

git commit 명령을 직접 호출하면 명령줄에 설명을 입력하라는 메시지가 표시됩니다. git commit -m "gittutor.repostory의 초기 커밋". CVS와 달리 git 커밋 주석은 비어 있으면 안 됩니다. 그렇지 않으면 Git 커밋에도 변경 사항을 강제로 제출할 수 있는 -a 매개변수가 있습니다. 그러나 이 방법은 권장되지 않습니다

제출할 때마다 git은 전역 코드에 대한 고유한 커밋 식별 코드를 생성합니다. 사용자는 제출할 때마다 git Reset 명령을 통해 코드를 복원할 수 있습니다. git commit –-amend –m "message"(커밋 ID

3.5에서 제출된 콘텐츠를 지속적으로 수정합니다. Git 상태

저장소 상태를 봅니다. 어떤 파일이 변경되었는지, 어떤 파일이 git 라이브러리에 추가되지 않았는지 등을 알 수 있습니다. 각 커밋 전에 이 명령을 통해 라이브러리 상태를 확인하는 것이 좋습니다

가장 흔한 실수는 파일이 변경되었음을 git 라이브러리에 알리기 위해 git add를 호출하지 않고 파일을 수정하고 직접 커밋 작업을 호출하여 파일이 실제로 커밋되지 않는 것입니다. 이때, 개발자가 파일을 제출한 것으로 판단하고 계속해서 파일을 수정하거나 심지어 삭제하는 경우에는 수정된 콘텐츠에 대한 버전관리가 되지 않습니다. 커밋하기 전에 매번 git status를 사용하여 확인하면 이 오류를 발견할 수 있습니다. 따라서 git status 명령을 호출하는 경우 "변경되었지만 업데이트되지 않았습니다:"라는 메시지가 표시되는 해당 파일에 특별한 주의를 기울여야 합니다. 이 파일들은 모두 마지막 커밋과 비교하여 변경되었지만 git add

3.6으로 식별되지 않는 파일입니다. Git lo

각 버전 변경을 포함한 기록 로그를 확인하세요. 각 버전 변경은 커밋 ID

Git 로그에 해당합니다. -

-1은 5를 표시하려면 -5만 표시된다는 의미입니다. 지정하지 않으면 git log가 커밋부터 표시됩니다

Git log --stat –summary (각 버전의 세부 변경 사항을 표시합니다

프로젝트 로그 정보에서 각 로그의 첫 번째 줄(즉, 문자열 문자) )는 버전 업데이트 제출에 지정된 이름입니다. 프로젝트 버전 번호는 고유해야 하며 프로젝트의 특정 업데이트를 나타내기 위해 자동으로 생성되어야 합니다. git-show 명령을 사용하면 프로젝트 버전의 업데이트 세부 정보를 볼 수 있습니다. 예를 들어

1) Git lo


2) Git sho


사실 위 명령은 실제 ​​명령이 아닙니다. 버전 번호를 맞춤설정하면 태그 개체만 생성되므로 프로젝트 버전을 외부에 공개할 때 더욱 유용합니다

3.7.Git merge

서버에서 다운로드한 코드를 로컬 코드와 병합합니다. 또는 브랜치 병합을 수행하세요

예: 현재 마스터 브랜치에서 dev 브랜치를 마스터로 병합하려면 git merge de

참고: git merge nov/eclair_eocket(서버 git의 eclair_eocket 브랜치를 병합하는 것입니다) 라이브러리를 로컬 브랜치에

git rebase nov/eclair_eocket(서버 git 라이브러리의 eclair_eocket 브랜치를 로컬 임시 브랜치에 매핑한 다음 로컬 브랜치의 변경 사항을 이 임시 브랜치에 병합한 다음 이 임시 브랜치를 사용하여 초기화합니다. 로컬 브랜치

3.8.Git dif

로컬 코드를 인덱스의 코드와 비교하거나 인덱스의 코드를 로컬 웨어하우스의 코드와 비교

1) Git dif

작업 디렉터리를 index 코드의 코드

2) Git diff - - 캐시

인덱스를 로컬 웨어하우스의 코드와 비교

3.9. Git checkou

3.9.1. 브랜치로 전환

1) 새 브랜치를 생성하고 브랜치로 전환

Git 체크아웃 –b 새 브랜치

2) 기존 로컬 브랜치로 전환 local_branc

Git 체크아웃 local_branc

(cat .git/HEAD, refs:refs/heads/ local_branch

3 사용 후) Switch 서버의 브랜치로 이동 Remote_branc

Git checkout remote_branc

(원격 브랜치 remote_branch는 git 브랜치 –r

4를 통해 나열될 수 있습니다.) 커밋으로 전환 i

Git checkout commit_i

(cat .git 사용 / HEAD 이후에는 commit_id가 표시됩니다

5) 특정 ta

Git 체크아웃으로 전환합니다. ta

(cat .git/HEAD 사용 후 tag

가 표시됩니다)

참고: 1)과 2)를 제외하고 나머지 3개는 임시(분기 없음) 상태로 전환되었을 뿐입니다(이번 헤드는 분리되어 있습니다). 이때 git Branch를 사용하면 켜져 있음(분기 없음)을 확인할 수 있습니다. ), cat.git/HEAD는 해당 커밋 ID를 가리키는 것을 봅니다. 이(브랜치 없음)는 일시적으로만 존재하며 실제로 확립된 브랜치가 아닙니다. 이때 2)를 실행하면 이(브랜치 없음)는 자동으로 사라지고, 1)을 실행하면 새 브랜치가 생성되고 이때 이 새 브랜치에 이(브랜치 없음)가 추가됩니다. , cat .git/ refs/heads/new_branch는 방금 커밋 ID를 가리킨 것을 볼 수 있습니다

3.9.2 기존 브랜치로 새 브랜치를 초기화합니다

다음 명령을 실행한 후 설정된 로컬로 전환합니다. 브랜치 또는 원격 브랜치 또는 특정 커밋 ID 또는 특정 태그를 사용하여 새 브랜치 new_branch를 생성하고 이 새 브랜치에 걸어둡니다

1) 이미 설정된 로컬 브랜치인 local_branch로 전환하고 이 브랜치를 사용하여 새 브랜치를 초기화합니다. new_branch

git checkout –b new_branch local_branc

2) 특정 원격 브랜치 Remote_branch로 전환하고 이 브랜치를 사용하여 새 브랜치를 초기화합니다 new_branch

Git checkout –b new_branch remote_branc

3) 특정 커밋 ID로 전환합니다. new_branc

Git checkout –b new_branch commit_i

4) 태그로 전환하고 새 브랜치를 생성합니다 new_branc

Git checkout –b new_branch ta

3.9.3 코드 복원

예: “git. checkout app/model/ user.rb"는 마지막으로 제출된 버전에서 user.rb 파일을 다시 업데이트하고 커밋되지 않은 작업 디렉터리의 모든 콘텐츠를 덮어쓰게 됩니다


3.10. Git-ls-fil

View 현재 git 라이브러리에는 어떤 파일이 있나요

3.11. Git m

파일, 디렉터리 또는 링크 이름 바꾸기

예: Git mv helloworld.c helloworld1.c (파일 helloworld.c의 이름을 helloworld1.c

로 바꿉니다. 3.12. Git branc

3.12.1 git 저장소에 브랜치를 생성하는 데 드는 총 비용은 거의 0에 가깝기 때문에 처음 git init을 실행할 때 몇 개 더 생성하는 데 인색할 필요가 없습니다. 시스템에서 이름을 생성합니다. "마스터"에 대한 브랜치는 수동으로 생성됩니다.

다음은 몇 가지 일반적인 브랜치 전략입니다

주 브랜치 마스터와의 과도한 간섭을 피하고 다른 사람과의 의사소통을 용이하게 하기 위해 자신만의 개인 작업 브랜치를 만듭니다. . 소통과 협업

위험도가 높은 작업을 할 때는 실험적인 브랜치를 만들어 보세요

다른 사람의 작업을 병합할 때는 병합을 위한 임시 브랜치를 만들고 병합이 완료된 후 자신의 브랜치로 "가져오기"하는 것이 가장 좋습니다.

브랜치에 대한 추가, 삭제, 확인 및 기타 작업

참고: 브랜치 정보는 일반적으로 .git/refs/ 디렉터리에 있습니다. 여기서 Heads 디렉터리는 로컬 브랜치이고, Remotes는 해당 서버의 브랜치이며, 태그는 태그

3.12 .2. 브랜치 보기

git 브랜치는 로컬 Git 라이브러리의 모든 브랜치를 나열합니다. 나열된 브랜치 중 브랜치 이름 앞에 *가 있으면 해당 브랜치가 현재 브랜치라는 의미입니다.

git Branch –r 서버 git library의 모든 브랜치를 나열합니다

(계속해서 "git checkout" 명령을 사용할 수 있습니다. -b 로컬 지점 이름 서버 지점 이름"을 사용하여 서버의 특정 지점의 코드 파일을 가져옵니다.)

3.12.3. 현재 어떤 지점에 있는지 확인

cat .git/HEA

3.12.4. 생성 브랜치

1) git 브랜치 브랜치

브랜치가 생성되더라도 현재 작업 중인 브랜치는 새로 생성된 브랜치로 전환되지 않습니다. 따라서 전환하려면 "git checkout 브랜치 이름" 명령도 필요합니다.

2) git 체크아웃 –b 브랜치

브랜치를 생성했을 뿐만 아니라 현재 작업 중인 브랜치를 브랜치로 전환했습니다.

3.12.5. 브랜치로 전환: git checkout Branch

메인 브랜치로 전환: git checkout master

3.12.6. 브랜치

git 브랜치 –D 브랜치

참고: 삭제 후에는 이 브랜치에서 발생한 모든 변경 사항을 복구할 수 없습니다. 이 브랜치를 강제 삭제

3.12.7. 두 브랜치의 파일을 비교

git diff master 브랜치 이름(마스터 브랜치와 다른 브랜치의 차이점 비교

3.12.8. 브랜치 기록 보기

git-show -branch(현재 브랜치의 커밋 주석 및 정보 보기

git-show-branch -all(모든 브랜치의 커밋 주석 및 정보 보기) 예:

* [dev] d

! [master] m

-

* [dev] d

* [dev^] d

* [dev~2] d

*+ [master] m

위 예에서 "--" 위의 두 줄은 dev와 master 두 개의 브랜치가 있고 dev 브랜치에 제출된 마지막 로그는 "d2"이고 master 브랜치에 제출된 마지막 로그는 "m2"입니다. "--" 아래 줄은 브랜치 진화의 내역을 나타냅니다. , 여기서 dev는 dev 브랜치에서 발생한 마지막 커밋을 나타내고, dev^는 dev 브랜치에서 발생한 마지막에서 두 번째 커밋을 나타냅니다. dev~2는 dev 브랜치에서 발생한 마지막에서 세 번째 커밋을 나타냅니다

3.12.9. 현재 브랜치 보기

git whatchange

3.12.10. 포인트 병합

방법 1

git merge "Comments" 병합 대상 브랜치 병합 소스 포인트

병합에 충돌이 있으면 git에서 메시지를 표시합니다.

예: git checkout master(마스터 브랜치로 전환

git merge HEAD dev~2(마스터 브랜치와 dev~2 브랜치 병합) 또는: git merge master dev~

방법 2

git pull merge 대상 브랜치 merge 소스 브랜치

예: git checkout master(마스터 브랜치로 전환

git pull.dev~2(현재 브랜치와 dev~2 브랜치를 병합

3.13)) Git rebas

는 일반적으로 소스 브랜치를 병합할 때 사용됩니다. 예를 들어, 서버의 최신 콘텐츠를 로컬로 전송합니다. 예를 들어 버전 C에서는 서버에서 로컬로 콘텐츠를 가져오고 로컬 콘텐츠를 수정합니다. 이때 로컬에서 수정된 콘텐츠를 서버에 제출하려고 합니다. 그런데 서버의 버전이 G로 변경된 것을 발견했습니다. 이때 먼저 Git rebase를 수행해야 합니다. 서버의 최신 버전을 로컬에 병합하려면 다음 두 가지로 설명하는 것이 더 명확할 것입니다. 그림. rebase 명령이 실행된 후 분기 지점은 실제로 C에서 G로 이동하므로 분기는 C에서 G


3.14 라이브러리의 반전 및 복구입니다. 버려진 R&D 코드를 재설정하는 데 사용될 뿐만 아니라 중요한 기능도 있습니다. 예를 들어, 로컬에서 개발한 후 원격으로 다시 제출할 준비를 합니다. 그러나 로컬 코드베이스가 개발되면 기능적 커밋, 백업 목적의 커밋 등이 있습니다. 간단히 말해서 커밋 로그에는 쓸모없는 로그가 많이 있으며 이러한 로그가 원격으로 다시 제출될 때 라이브러리에 제출하고 싶지 않습니다. 따라서 git Reset을 사용해야 합니다

git Reset의 개념은 비교적 복잡합니다. 명령 형식: git Reset [--mixed | --soft | --hard] [

명령 옵션

--mixed 이것이 기본 옵션입니다. 예를 들어 git Reset [--mixed] dev^(dev^ 정의는 2.6.5를 참조하세요). 해당 기능은 분기 상태를 dev1^으로 재설정하는 것뿐이며 작업 파일의 내용은 변경하지 않습니다. 즉, dev1^에서 dev1로의 모든 파일 변경 사항은 유지되지만 dev1^과 dev1 사이의 모든 커밋 로그는 지워지고 변경된 파일 내용은 git add로 식별되지 않습니다. 다시 커밋하려면 다음도 수행해야 합니다. 변경된 파일에 대해 git add를 수행하십시오. 이런 방식으로 커밋한 후에는 매우 깨끗한 커밋 기록을 얻게 됩니다. (인덱스와 웨어하우스의 내용을 되돌리는 것

--soft는 git Reset –mixed를 한 뒤, 변경된 파일에 대해 git add를 하는 것과 같습니다. 이 옵션을 사용하면 바로 커밋할 수 있습니다. (답글 내용 폐기 중) 웨어하우스

--hard는 파일 내용을 포함한 모든 정보를 롤백합니다. 일반적으로 버려진 코드를 재설정할 때만 사용됩니다. 실행 후에는 파일 내용을 복원할 수 없습니다. 및 Warehouse가 롤백됩니다

예를 들어

사용된 브랜치로 전환

git Reset HEAD^ 첫 번째 노트 롤백

git Reset HEAD~2 두 번째 노트 롤백

다음 위치의 파일을 롤백하려는 경우 작업 디렉터리에서 git Reset - - 첫 번째 레코드를 롤백하려면 hard HEAD^을 사용하세요

git Reset - - 두 번째 레코드를 롤백하려면 hard HEAD~2

다음 방법을 사용할 수도 있습니다.

현재 레코드를 완전히 롤백합니다. 아래와 같이 A부터 G까지 5개의 버전이 제출되었다고 가정합니다. C의 버전 번호는 bbaf6fb5060b4875b18ff9ff637ce118256d6f20입니다. 'git Reset bbaf6fb5060b4875b18ff9ff637ce118256d6f20'을 실행하면 결과는 A~C까지 3개만 제출됩니다. 왼쪽


3.15. Git rever

버전에 대한 특정 수정 사항을 복원합니다. 예: git revert commit_id(여기서 commit_id는 코드를 커밋할 때 생성된 고유 문자열입니다.

예: (3.6에서) git revert dfb02e6e4f2f7b573337763e5c0013 802e392818( 마지막 커밋 작업을 복원하려면 이 작업을 실행하세요

3.16. Git confi

이 명령을 사용하여 "git config Branch.master .remote Origin"과 같은 Git의 다양한 설정을 추가하고 변경하면 마스터의 원격 저장소가 별칭으로 설정됩니다.

3.17.Git sho

다양한 유형의 객체 표시

3.18.Git ta

태그 객체 생성, 나열, 삭제 또는 확인(GPG로 서명)

특정 버전을 태그할 수 있습니다. 복잡한 버전 번호 해시 값 문자열을 기억할 필요가 없습니다. 예를 들어 "git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20"을 사용하여 이를 복원된 버전으로 표시한 다음 나중에 버전을 보고 싶을 때 사용할 수 있습니다. 해시 값 대신 revert_version 태그 이름


4. Git 서버 작업 명령(서버로 전달

4.1. Git clone

Remove 서버의 웨어하우스 코드가 로컬로 생성된 디렉터리로 이동됩니다. the server

git clone을 통해 원격 git 라이브러리를 얻은 후에는 .git/config의 개발자 정보가 함께 복제되지 않습니다. 여전히 로컬 라이브러리의 .git/config 파일에 개발자 정보를 추가해야 합니다. 또한 개발자는 .gitignore 파일을 직접 추가해야 합니다. git clone을 통해 얻은 원격 git 라이브러리에는 원격 git 라이브러리의 현재 작업 분기만 포함됩니다. 다른 지점 정보를 얻으려면 "git Branch -r"을 사용하여 확인해야 합니다. 다른 원격 지점 코드를 얻으려면 "git checkout -b 로컬 지점 이름 원격 지점 이름" 명령을 사용하면 됩니다. 여기서 원격 분기 "git Branch -r"에 나열된 분기 이름은 일반적으로 "원본/분기 이름"과 같습니다. 로컬 브랜치 이름이 이미 존재하는 경우 "-b" 매개변수는 필요하지 않습니다

예를 들어


4.2.

从服务器的仓库中获取代码,和本地代码合并。(与服务器交互,从服务器上下载最新代码,等同于: Git fetch + Git merge

从其它的版本库(既可以是远程的也可以是本地的)将代码更新到本地,例如:“git pull origin master ”就是将origin这个版本库的代码更新到本地的master主分支

git pull可以从任意一个git库获取某个分支的内容。用法如下

git pull  username@ipaddr:远端repository名远端分支名 本地分支名。这条命令将从远端git库的远端分支名获取到本地git库的一个本地分支中。其中,如果不写本地分支名,则默认pull到本地当前分支

需要注意的是,git pull也可以用来合并分支。 和git merge的作用相同。 因此,如果你的本地分支已经有内容,则git pull会合并这些文件,如果有冲突会报警

例如






4.3. Git push

将本地commit的代码更新到远程版本库中,例如 “git push origin”就会将本地的代码更新到名为orgin的远程版本库中

git push和git pull正好想反,是将本地某个分支的内容提交到远端某个分支上。用法: git pushusername@ipaddr:远端repository名本地分支名 远端分支名。这条命令将本地git库的一个本地分支push到远端git库的远端分支名中

需要格外注意的是,git push好像不会自动合并文件。因此,如果git push时,发生了冲突,就会被后push的文件内容强行覆盖,而且没有什么提示。 这在合作开发时是很危险的事情

例如


4.4. Git fetc

从服务器的仓库中下载代码。(与服务器交互,从服务器上下载最新代码

相当于从远程获取最新版本到本地,不会自动merge,比Git pull更安全些

使用此方法来获取服务器上的更新

예: git checkout nov/eclair_rocket(nov/eclair_rocket은 서버의 브랜치 이름)을 사용하는 경우 git fetch를 먼저 사용하면 마지막으로 git fetch 명령을 사용할 때 서버에서 코드를 다운로드하게 됩니다. 그런 다음 git checkout nov /eclair_rocket을 사용하여 먼저 서버에서 최신 업데이트 정보를 얻은 다음 서버에서 최신 코드를 다운로드합니다. . . ) hå:. . .

inchinch

inchinch:. . :. ) ㅋㅋㅋ:. . )e 상호). . g. w. g))tå本:기록 기록 기록 기록;:))):]. ㅜㅜ. :e)) 분기: 2). 분기: 분기 d 레코드. 2012-22:) 역사) 안녕. 이름 지점 r 이름. 이름, 이름 분기 D에 있습니다. . . 나뭇가지. . . ;;:. h)를 설명합니다. 다섯. 예. codeghdhh. 시간. . 나뭇가지. )gg)dd)hh)hh 이름에는 상위 분기 t가 있습니다. 디. 에프. f))v. 이자형. 으으으으:). 1. g. . 에스). . . . 티))):. 중))):. 디. . . t 명령) lp를 주문합니다. . e.e:를 비교하세요. ml" 이름 설정 항목을 만드세요 å...;. 가...) hå:...

inchinch

inchuch:...:.) linch:...) e 상호).. .g.w .이름, 브랜치.f. Ÿ:)를 비교하세요. . ;. 이 되다. . . ) hå:. . .

inchinch

inchinch:. . :. ) ㅋㅋㅋ:. . )e 상호). . g. w. g))tå本:기록 기록 기록 기록;:))):]. ㅜㅜ. :e)) 분기: 2). 분기: 분기 d 레코드. 2012-22:) 역사) 안녕. 이름 지점 r 이름. 이름, 이름 분기 D에 있습니다. . . 나뭇가지. . . ;;:. h)를 설명합니다. 다섯. 예. codeghdhh. 시간. . 나뭇가지. )gg)dd)hh)hh 이름에는 상위 분기 t가 있습니다. 디. 에프. f))v. 이자형. 으으으으:). 1. g. . 에스). . . . 티))):. 중))):. 디. . . t 명령) lp를 주문합니다. . e.e:를 비교하세요. ml" 이름 설정 항목을 만드세요 å...;. 가...) hå:...

incholi

suchinch:...:.) l 영상:...) e 상호).. .g. w .이름, 분기 D.; v. hh. 분기. f. ml" 이름 설정 항목을 비교하세요. . ;. 이 되다. . . ) hå:. . .

inchinch

inchinch:. . :. ) ㅋㅋㅋ:. . )e 상호). . g. w. g))tå本:기록 기록 기록 기록;:))):]. ㅜㅜ. :e)) 분기: 2). 분기: 분기 d 레코드. 2012-22:) 역사) 안녕. 이름 지점 r 이름. 이름, 이름 분기 D에 있습니다. . . 나뭇가지. . . ;;:. h)를 설명합니다. 다섯. 예. codeghdhh. 시간. . 나뭇가지. )gg)dd)hh)hh 이름에는 상위 분기 t가 있습니다. 디. 에프. f))v. 이자형. 으으으으:). 1. g. . 에스). . . . 티))):. 중))):. 디. . . t 명령) lp를 주문합니다. . e.e:를 비교하세요. ml" 이름 설정 항목을 만드세요 å...;. 되다...) hå:...

incholi

inchsuch:...:.) l 영상:...) e 상호).. .g.w.g)) tå: 기록: 2012-22:) . e.e:.ml" 이름 설정 항목을 만듭니다. . ;. 이 되다. . . ) hå:. . .

inchinch

inchinch:. . :. ) ㅋㅋㅋ:. . )e 상호). . g. w. g))tå本:기록 기록 기록 기록;:))):]. ㅜㅜ. :e)) 분기: 2). 분기: 분기 d 레코드. 2012-22:) 역사) 안녕. 이름 지점 r 이름. 이름, 이름 분기 D에 있습니다. . . 나뭇가지. . . ;;:. h)를 설명합니다. 다섯. 예. codeghdhh. 시간. . 나뭇가지. )gg)dd)hh)hh 이름에는 상위 분기 t가 있습니다. 디. 에프. f))v. 이자형. 으으으으:). 1. g. . 에스). . . . 티))):. 중))):. 디. . . t 명령) lp를 주문합니다. . e.e:를 비교하세요. ml" 이름 설정 항목을 만드세요 ``...;. 됩니다...) h 영상:...

‍♀:. . :. ) ㅋㅋㅋ:. . )e 상호). . g. w. g))tå本:기록 기록 기록 기록;:))):]. ㅜㅜ. :e)) 분기: 2). 분기: 분기 d 레코드. 2012-22:) 역사) 안녕. 이름 지점 r 이름. 이름, 이름 분기 D에 있습니다. . . 나뭇가지. . . ;;:. h)를 설명합니다. 다섯. 예. codeghdhh. 시간. . 나뭇가지. )gg)dd)hh)hh 이름에는 상위 분기 t가 있습니다. 디. 에프. f))v. 이자형. 으으으으:). 1. g. . 에스). . . . 티))):. 중))):. 디. . . t 명령) lp를 주문합니다. . e.e:를 비교하세요. ml" 이름 설정 항목을 만드세요 ``...;. 됩니다...) h 영상:...

:。。:。)l:。。)e互)。。g。w。g))t本:录录录录;:))):]。t。:e))支:2)。支:支d录。2012-22:)史)别。名支r名。名,名支D上。。。支。。。;;:。述h)。v。es。码ghdhh。h。。支。)gg)dd)hh)hh名上支t。d。f。f))v。e。wg:)。1。g。。s)。。。。t))):。m))):。d。。。t命令)令lp。。较e.e:。制ml"名置项。。;。成Git概念
1.1. Git库中由三部分组成
Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内。
1) 工作目录:用户本地的目录;
2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为索引。
3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次更新。
Git 사용법에 대한 자세한 소개
1.2. 使用Git时的初始化事项
1.2.1. Git初始化配置
1) 配置使用git仓库的人员姓名
git config --global user.name "Your Name Comes Here"
2) 配置使用git仓库的人员email
git config --global user.email you@yourdomain.example.com
1.2.2. Git文档忽略机制
工作目录中有一些文件是不希望接受Git 管理的,譬如程序编译时生成的中间文件等等。Git 提供了文档忽略机制,可以将工作目录中不希望接受Git 管理的文档信息写到同一目录下的.gitignore 文件中。
例如:工作目录下有个zh目录,如果不想把它加入到Git管理中,则执行:
echo “zh” > .gitignore
git add .
有关gitignore 文件的诸多细节知识可阅读其使用手册:man gitignore
1.3. Git与Repo的比较
Git操作一般对应一个仓库,而Repo操作一般对应一个项目,即一个项目会由若干仓库组成。
例如,在操作整个Recket项目时使用Repo,而操作其中的某个仓库时使用Git。在包含隐藏目录.git的目录下执行git操作。

2. Git 도움말
Git 도움말 기본 git 명령 가져오기
(특정 명령 사용 방법을 알고 싶다면 예: Git help clone을 사용하여 git clone 사용 방법 확인)

3. 기본 Git 로컬 작업 명령
3.1. Git init
또는 git init-db를 사용하세요.
빈 Git 저장소를 만듭니다. 현재 디렉터리에 .git 하위 디렉터리를 만듭니다. 각 디렉터리와 하위 디렉터리에 CVS 디렉터리를 생성하는 CVS와 달리 앞으로는 모든 파일 변경 정보가 이 디렉터리에 저장됩니다.
.git 디렉터리에 구성 파일이 있으며, 해당 파일의 구성 정보를 수정할 수 있습니다.
3.2.Git 추가
현재 작업 디렉터리에서 변경되거나 새로 추가된 파일을 Git 인덱스에 추가한다는 것은 해당 파일이 버전 기록에 기록된다는 의미이기도 합니다. 제출.
재귀적으로 추가할 수 있습니다. 즉, 매개변수로 디렉터리가 오면 전체 디렉터리의 모든 하위 디렉터리와 파일이 재귀적으로 추가됩니다. 예:
git add dir1 (dir1 디렉토리 추가, 디렉토리의 모든 파일 추가)
Git add f1 f2 (f1, f2 파일 추가)
git add (현재 디렉토리의 모든 파일 및 하위 디렉토리 추가)
3.3 . Git rm
현재 작업 디렉터리와 인덱스에서 파일을 제거합니다.
반복적으로 삭제할 수 있습니다. 즉, 매개변수로 디렉터리가 오면 전체 디렉터리의 모든 하위 디렉터리와 파일이 반복적으로 삭제됩니다. 예:
git rm –r *(디렉토리를 입력하고 이 명령문을 실행하면 해당 디렉터리의 모든 파일과 하위 디렉터리가 삭제됩니다.)
git rm f1(로컬 디렉터리 및 인덱스에 있는 이 파일 레코드를 포함하여 파일 f1 삭제)
git rm --ached f1 (파일 f1 삭제, 로컬 디렉터리 파일은 삭제되지 않고 인덱스에 있는 파일 레코드만 삭제됩니다. git 추가된 파일은 캐시에서 제거되므로 파일이 삭제되지 않습니다. 커밋할 때 제출, 적합 한 번에 많은 파일이 추가되었는데 그 중 일부를 제외하고 싶었습니다.)
3.4.Git 커밋
수정 사항을 현재 작업 디렉터리에 제출합니다.
git commit 명령을 직접 호출하면 주석을 입력하라는 메시지가 표시됩니다. 다음과 같이 명령줄에 커밋 주석을 입력합니다: git commit -m "Initial commit of gittutor repostory". CVS와 달리 git 커밋 주석은 비어 있으면 안 됩니다. 그렇지 않으면 커밋이 실패합니다.
git commit에는 git add로 식별되지 않는 변경 사항을 강제로 제출할 수 있는 -a 매개 변수도 있지만 이 방법은 권장되지 않습니다.
제출할 때마다 git은 전역 코드에 대한 고유한 커밋 식별 코드를 생성합니다. 사용자는 제출할 때마다 git Reset 명령을 통해 코드를 복원할 수 있습니다.
git commit –-amend –m “message” (커밋 ID에 제출된 콘텐츠를 지속적으로 수정)
3.5. Git 상태
저장소 상태를 확인합니다. 어떤 파일이 변경되었는지, 어떤 파일이 git 라이브러리에 추가되지 않았는지 등을 알 수 있습니다. 각 커밋 전에 이 명령을 통해 라이브러리 상태를 확인하는 것이 좋습니다.
가장 일반적인 오작동은 파일이 변경되었음을 git 라이브러리에 알리기 위해 git add를 호출하지 않고 파일을 수정하고 직접 커밋 작업을 호출하여 파일이 실제로 제출되지 않는 것입니다. 이때, 개발자가 파일을 제출한 것으로 판단하고 계속해서 파일을 수정하거나 심지어 삭제하는 경우에는 수정된 콘텐츠에 대한 버전관리가 되지 않습니다. 커밋하기 전에 매번 git status를 이용해서 확인해보면 이런 오류를 발견할 수 있습니다. 따라서 git status 명령을 호출하는 경우 "변경되었지만 업데이트되지 않았습니다:"라는 메시지가 표시되는 해당 파일에 특별한 주의를 기울여야 합니다. 이 파일은 마지막 커밋과 비교하여 변경된 모든 파일이지만 git add로 식별되지 않습니다.
3.6. Git 로그
각 버전 변경을 포함한 기록 로그를 봅니다. 각 버전 변경은 커밋 ID에 해당합니다.
Git log -1
-1은 커밋을 하나만 표시한다는 뜻입니다. 5개의 커밋을 표시하려면 -5만 표시하면 됩니다. 지정하지 않으면 커밋부터 git log가 표시됩니다.
Git log --stat –summary (각 버전의 세부 변경 사항 표시)
프로젝트 로그 정보에서 각 로그의 첫 번째 줄(문자열)은 버전 업데이트 제출 이름을 사용할 수 있습니다. this 이름은 프로젝트 버전 번호로 이해됩니다. 프로젝트 버전 번호는 고유해야 하며 프로젝트의 특정 업데이트를 나타내기 위해 기본적으로 Git에서 자동으로 생성됩니다. 프로젝트 버전 번호를 git-show 명령의 매개변수로 사용하면 프로젝트 버전의 업데이트 세부 정보를 볼 수 있습니다. 예를 들면 다음과 같습니다.
1) Git log
Git 사용법에 대한 자세한 소개
2) Git show
Git 사용법에 대한 자세한 소개
실제로 위 명령은 버전 번호를 실제로 사용자 정의하는 것이 아니라 태그 개체를 생성할 뿐이며, 이는 프로젝트 버전을 외부 세계.
3.7. Git 병합
서버에서 다운로드한 코드를 로컬 코드와 병합합니다. 아니면 가지를 병합하세요.
예: 현재 마스터 브랜치에서 dev 브랜치를 마스터에 병합하려면 git merge dev
참고: git merge nov/eclair_eocket(서버 git 라이브러리의 eclair_eocket 브랜치를 로컬 브랜치에 병합합니다)
git rebase nov/eclair_eocket (서버 git 라이브러리의 eclair_eocket 브랜치를 로컬 임시 브랜치에 매핑한 다음 로컬 브랜치의 변경 사항을 이 임시 브랜치에 병합한 다음 이 임시 브랜치를 사용하여 로컬 브랜치를 초기화합니다)
3.8. Git diff
지역 코드를 색인에 있는 코드와 비교하거나, 색인에 있는 코드와 지역 창고에 있는 코드를 비교하세요.
1) Git diff
작업 디렉터리의 코드와 Index를 비교합니다.
2) Git diff - - 캐시됨
인덱스와 로컬 웨어하우스의 코드를 비교합니다.
3.9. Git 체크아웃
3.9.1. 브랜치로 전환
1) 새 브랜치를 생성하고 이 브랜치로 전환
Git 체크아웃 –b 새 브랜치 이름
2) 이미 설정된 로컬 브랜치로 전환 local_branch
Git 체크아웃 local_branch
cat .git/HEAD 사용 후 refs:refs/heads/ local_branch 가 표시됨)
3) 서버의 브랜치로 전환remote_branch
Git 체크아웃remote_branch
(원격 브랜치remote_branch는 git Branch –r을 통해 나열 가능)
4 ) 특정 커밋 ID로 전환
Git checkout commit_id
(cat .git/HEAD 사용 후 commit_id가 표시됨)
5) 특정 태그로 전환
Git 체크아웃 태그
(cat .git/HEAD 사용 후 commit_id 표시) 태그)
참고: 1)과 2)를 제외하고 나머지 3개는 임시(분기 없음) 상태로 전환되었을 뿐입니다(이때 이 헤드는 분리되어 있음). on입니다(분기 없음). cat .git/HEAD는 해당 커밋 ID를 가리키는 것을 확인합니다. 이(브랜치 없음)는 일시적으로만 존재하며 실제로 확립된 브랜치가 아닙니다. 이때 2)를 실행하면 이(브랜치 없음)는 자동으로 사라지고, 1)을 실행하면 새 브랜치가 생성되고 이때 이 새 브랜치에 이(브랜치 없음)가 추가됩니다. cat .git/ refs/heads/new_branch 이미 커밋 ID를 가리키는 것을 볼 수 있습니다.
3.9.2. 기존 브랜치로 새 브랜치 초기화
기존 로컬 브랜치나 원격 브랜치 또는 커밋 ID나 태그로 전환하면서 다음 명령을 실행하여 새 브랜치 new_branch를 생성합니다.
1) 이미 설정된 로컬 브랜치 local_branch로 전환하고 이 브랜치를 사용하여 새 브랜치 new_branch를 초기화합니다.
git checkout –b new_branch local_branch
2) 원격 브랜치 Remote_branch로 전환하고 이 브랜치를 사용하여 새 브랜치 new_branch를 초기화합니다.
Git checkout –b new_branch remote_branch
3) 특정 커밋 ID로 전환하고 새 브랜치 생성 new_branch
Git 체크아웃 –b new_branch commit_id
4) 특정 태그로 전환하고 새 브랜치 생성 new_branch
Git 체크아웃 –b new_branch 태그
3.9.3. 코드 복원
예를 들어, "git checkout app/model/user.rb"는 마지막으로 제출된 버전에서 user.rb 파일을 다시 업데이트하고 커밋되지 않은 작업 디렉터리의 모든 내용을 덮어씁니다.

3.10.Git-ls-files
현재 Git 라이브러리에 어떤 파일이 있는지 확인하세요.
3.11. Git mv
파일, 디렉토리 또는 링크의 이름을 바꿉니다.
예: Git mv helloworld.c helloworld1.c (helloworld.c 파일 이름을 helloworld1.c로 변경)
3.12. Git 브랜치
3.12.1. 개요
git 저장소에 브랜치를 만드는 비용은 거의 0입니다. 그러니 몇 개의 브랜치를 더 만드는 데 인색하지 마세요. git init이 처음 실행되면 시스템은 "master"라는 브랜치를 생성합니다. 다른 분기는 수동으로 생성됩니다.
다음은 몇 가지 일반적인 분기 전략입니다.
주요 분기 마스터와의 과도한 간섭을 피하고 다른 사람과의 의사소통 및 협업을 촉진하기 위해 자신만의 개인 작업 분기를 만듭니다.
위험도가 높은 작업을 수행할 때 실험을 만듭니다.
다른 분기를 병합할 때 사람들의 작업에서는 병합을 위한 임시 브랜치를 만든 다음 병합이 완료된 후 자신의 브랜치로 "가져오는" 것이 가장 좋습니다.
브랜치 추가, 삭제, 확인 등의 작업을 수행합니다.
참고: 분기 정보는 일반적으로 .git/refs/ 디렉터리에 있습니다. 여기서 Heads 디렉터리는 로컬 분기이고, Remotes는 해당 서버의 분기이며, Tags는 태그입니다.
3.12.2. 브랜치 보기
git 브랜치는 로컬 git 저장소의 모든 브랜치를 나열합니다. 나열된 브랜치 중 브랜치 이름 앞에 *가 있으면 해당 브랜치가 현재 브랜치라는 의미입니다.
git Branch –r은 서버 git 저장소의 모든 브랜치를 나열합니다.
(계속해서 "git checkout -b 로컬 브랜치 이름 서버 브랜치 이름" 명령을 사용하여 서버의 특정 브랜치에 대한 코드 파일을 얻을 수 있습니다).
3.12.3. 현재 어느 브랜치에 있는지 확인
cat .git/HEAD
3.12.4. 브랜치 생성
1) git 브랜치 이름
브랜치가 생성되더라도 현재 작업 중인 브랜치는 전환되지 않습니다. 하나의 브랜치를 새로 생성했으므로 전환하려면 "git checkout 브랜치 이름" 명령도 필요합니다.
2) git checkout -b 브랜치 이름
브랜치를 생성할 뿐만 아니라 현재 작업 중인 브랜치를 이 브랜치로 전환합니다.
3.12.5. 브랜치로 전환: git checkout 브랜치 이름
메인 브랜치로 전환: git checkout master
3.12.6. 브랜치 삭제
git Branch –D 브랜치 이름
참고: 삭제 후 발생한 모든 변경 사항은 다음과 같습니다. 이 분기 변경 사항은 실행 취소할 수 없습니다. 이 분기를 강제로 삭제합니다.
3.12.7. 두 브랜치의 파일 차이점 비교
git diff master 브랜치 이름(마스터 브랜치와 다른 브랜치의 차이점 비교)
3.12.8. 브랜치 기록 보기
git-show-branch(현재 브랜치 보기) 커밋 코멘트 및 정보)
git-show-branch -all (모든 브랜치에 대한 커밋 코멘트 및 정보 보기) 예:
* [dev] d2
! [master] m2
--
* [dev] d2
* [ dev ^] d1
* [dev~2] d0
*+ [master] m2
위의 예에서 "--" 위의 두 줄은 dev와 master 두 개의 브랜치가 있고 dev에 마지막 커밋이 있음을 나타냅니다. Branch 로그는 "d2"이고, 마스터 브랜치에서 마지막으로 커밋된 로그는 "m2"입니다."--" 아래 줄은 브랜치 진화의 기록을 나타냅니다. 여기서 dev는 dev 브랜치에서 발생한 마지막 커밋을 나타내고 dev^는 dev 브랜치에서 발생한 두 번째 커밋을 나타냅니다. dev~2는 dev 브랜치에서 발생한 마지막 커밋에서 세 번째를 나타냅니다.
3.12.9. 현재 브랜치의 작업 기록 보기
git whatchanged
3.12.10. 브랜치 병합
방법 1:
git merge "Comment" 병합된 대상 브랜치 병합된 소스 브랜치
병합에 충돌이 있으면 git 메시지를 표시합니다.
예: git checkout master(마스터 브랜치로 전환)
git merge HEAD dev~2(마스터 브랜치와 dev~2 브랜치 병합) 또는: git merge master dev~2
방법 2:
git pull은 대상 브랜치를 병합합니다. 소스 Branch
예: git checkout master (마스터 브랜치로 전환)
git pull .dev~2 (현재 브랜치와 dev~2 브랜치 병합)
3.13. Git rebase
일반적으로 서버의 최신 콘텐츠를 병합할 때 사용됩니다. 예: 버전 C에서는 콘텐츠를 서버에서 로컬로 가져오고 로컬 콘텐츠를 수정합니다. 이때 로컬에서 수정된 콘텐츠를 서버에 제출하려고 합니다. 서버의 버전이 G로 변경되었습니다. 이때 먼저 Rebase를 실행하고 서버의 최신 버전을 로컬 버전에 병합해야 합니다. 예를 들면 다음과 같습니다.
다음 두 그림은 rebase 명령이 실행된 후 실제로 분기점이 C에서 G로 이동하므로 분기도 C에서 G로의 기능을 갖습니다.
Git 사용법에 대한 자세한 소개[6]
3.14.Git 재설정
버려진 R&D 코드를 재설정하는 것 외에도 라이브러리를 되돌리고 복구하는 것도 중요한 역할을 합니다. 예를 들어, 코드 베이스를 원격으로 복제하고 로컬로 개발한 후 다시 원격으로 제출할 준비를 합니다. 그러나 로컬 코드베이스가 개발되면 기능적 커밋, 백업 목적의 커밋 등이 있습니다. 간단히 말해서, 커밋 로그에는 쓸모없는 로그가 많이 있으며 이러한 로그가 원격으로 다시 제출될 때 라이브러리에 제출하고 싶지 않습니다. 따라서 git 재설정이 사용됩니다.
git 재설정의 개념은 비교적 복잡합니다. 명령 형식: git Reset [--mixed | --soft | --hard] []
명령 옵션:
--mixed 이것이 기본 옵션입니다. 예를 들어 git Reset [--mixed] dev^(dev^ 정의는 2.6.5를 참조하세요). 해당 기능은 분기 상태를 dev1^으로 재설정하는 것뿐이며 작업 파일의 내용은 변경하지 않습니다. 즉, dev1^에서 dev1로의 모든 파일 변경 사항은 유지되지만 dev1^과 dev1 사이의 모든 커밋 로그는 지워지고 변경된 파일 내용은 git add로 식별되지 않습니다. 다시 커밋하려면 다음도 수행해야 합니다. 변경된 파일에 대해 git add를 수행하십시오. 이런 방식으로 커밋한 후에는 매우 깨끗한 커밋 기록을 얻게 됩니다.(인덱스와 웨어하우스의 내용은 롤백됩니다.)
--soft는 git Reset –mixed를 수행한 다음 변경된 파일에 대해 git add를 수행하는 것과 같습니다. 이 옵션을 사용하면 직접 커밋할 수 있습니다. (웨어 하우스의 내용이 롤백됩니다.)
--hard 명령은 파일 내용을 포함한 모든 정보를 롤백합니다. 일반적으로 사용되지 않는 코드를 재설정할 때만 사용됩니다. 실행 후에는 파일 내용을 복원할 수 없습니다. (작업 디렉토리, 인덱스 및 웨어하우스의 내용이 롤백됩니다.)
예:
사용된 브랜치로 전환
git Reset HEAD^ 첫 번째 레코드 롤백
git Reset HEAD~2 두 번째 레코드 롤백
If 작업 디렉터리의 파일을 롤백하려면 git Reset - - hard HEAD^을 사용하여 첫 번째 레코드를 롤백하세요
git Reset - - hard HEAD~2를 사용하여 두 번째 레코드를 롤백하세요
다음 방법도 사용할 수 있습니다.
현재 작업 디렉토리가 지정된 버전 번호로 완전히 롤백되었습니다. 아래와 같이 A-G에서 제출한 버전이 5개 있고 그 중 C의 버전 번호는 bbaf6fb5060b4875b18ff9ff637ce118256d6f20입니다. ' 그러면 결과는 A~C 세 가지 버전만 제출됩니다.
Git 사용법에 대한 자세한 소개[5]
3.15. Git revert
버전에 대한 특정 수정 사항을 복원합니다. 예: git revert commit_id (commit_id는 코드를 커밋할 때 생성되는 고유 문자열입니다.)
예: (3.6) git revert dfb02e6e4f2f7b573337763e5c0013802e392818 (마지막 커밋 작업을 복원하려면 이 작업을 수행하십시오.)
3.16. Git config
이 명령을 사용하여 "git config Branch.master.remote Origin"과 같은 다양한 Git 설정을 추가하고 변경하여 마스터의 설정을 변경할 수 있습니다. 저장소는 원본 저장소라는 별칭으로 설정됩니다.
3.17. Git 쇼
다양한 유형의 개체를 표시합니다.
3.18. Git 태그
태그 개체(GPG로 서명됨)를 생성, 나열, 삭제 또는 확인합니다.
특정 버전에 라벨을 붙일 수 있으므로 복잡한 버전 번호 해시 값 문자열을 기억할 필요가 없습니다. 예를 들어 "git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20"을 사용하여 복원한 버전을 표시한 다음 원할 때 할 수 있습니다. 버전을 확인하려면 해시 값 대신 revert_version 태그 이름을 사용할 수 있습니다.

4. Git 서버 동작 명령어(서버와 상호작용)
4.1. Git clone
서버의 웨어하우스 코드를 로컬로 생성된 디렉토리에 꺼내기(서버와 상호작용)
git clone을 통해 원격 git 라이브러리를 얻은 후, . git/config의 개발자 정보는 함께 복제되지 않습니다. 여전히 로컬 라이브러리의 .git/config 파일에 개발자 정보를 추가해야 합니다. 또한 개발자는 .gitignore 파일을 직접 추가해야 합니다.
git clone을 통해 얻은 원격 git 라이브러리에는 원격 git 라이브러리의 현재 작업 분기만 포함됩니다. 다른 지점 정보를 얻으려면 "git Branch -r"을 사용하여 확인해야 합니다. 다른 원격 지점 코드를 얻으려면 "git checkout -b 로컬 지점 이름 원격 지점 이름" 명령을 사용하면 됩니다. 여기서 원격 분기 "git Branch -r"에 나열된 분기 이름은 일반적으로 "원본/분기 이름"과 같습니다. 로컬 분기 이름이 이미 존재하는 경우 "-b" 매개변수가 필요하지 않습니다.
예:
Git 사용법에 대한 자세한 소개[5]
4.2.Git pull
서버 저장소에서 코드를 가져와 로컬 코드와 병합합니다. (서버와 상호 작용하고 서버에서 최신 코드를 다운로드합니다. 이는 Git fetch + Git merge와 동일합니다.)
코드를 다른 저장소(원격 또는 로컬일 수 있음)의 로컬로 업데이트합니다. 예: "git pull " Origin master"는 원본 저장소의 코드를 로컬 마스터 브랜치로 업데이트하는 것입니다.
git pull은 모든 git 라이브러리에서 특정 브랜치의 내용을 가져올 수 있습니다. 사용법은 다음과 같습니다:
git pull username@ipaddr: 원격 저장소 이름, 원격 브랜치 이름, 로컬 브랜치 이름. 이 명령은 원격 Git 저장소의 원격 분기 이름을 로컬 Git 저장소의 로컬 분기로 가져옵니다. 그 중 로컬 브랜치 이름을 쓰지 않으면 기본적으로 로컬 현재 브랜치로 Pull됩니다.
git pull을 사용하여 브랜치를 병합할 수도 있다는 점에 유의하세요. git merge와 동일한 기능을 가지고 있습니다. 따라서 로컬 브랜치에 이미 콘텐츠가 있는 경우 git pull은 이러한 파일을 병합하고 충돌이 있으면 경고합니다.
예:
Git 사용법에 대한 자세한 소개

Git 사용법에 대한 자세한 소개

Git 사용법에 대한 자세한 소개

Git 사용법에 대한 자세한 소개
4.3. Git push
로컬 커밋 코드를 원격 저장소로 업데이트합니다. 예를 들어 "git push Origin"은 로컬 코드를 orgin이라는 원격 저장소로 업데이트합니다.
Git push와 git pull은 정확히 반대입니다. 로컬 브랜치의 내용을 원격 브랜치에 제출하는 것입니다. 사용법: git pushusername@ipaddr: 원격 저장소 이름 로컬 지점 이름 원격 지점 이름 . 이 명령은 로컬 git 저장소의 로컬 브랜치를 원격 git 저장소의 원격 브랜치 이름으로 푸시합니다.
git push는 자동으로 파일을 병합하지 않는 것 같습니다. 따라서 git push 중에 충돌이 발생하면 프롬프트 없이 나중에 push된 파일의 내용이 강제로 덮어쓰여집니다. 공동으로 개발할 때 이는 매우 위험한 일입니다.
예:
Git 사용법에 대한 자세한 소개
4.4. Git 가져오기
서버 저장소에서 코드를 다운로드합니다. (서버와 상호 작용하고 서버에서 최신 코드를 다운로드합니다.)
원격에서 로컬로 최신 버전을 가져오는 것과 동일하며 자동으로 병합되지 않으며 Git 풀보다 안전합니다.
서버에서 업데이트를 받으려면 이 방법을 사용하세요.
예: git checkout nov/eclair_rocket(nov/eclair_rocket은 서버의 브랜치 이름)을 사용하는 경우 git fetch를 먼저 사용하면 마지막으로 git fetch 명령을 사용할 때 서버에서 코드를 다운로드하게 됩니다. 그런 다음 git checkout nov /eclair_rocket을 사용하여 먼저 서버에서 최신 업데이트 정보를 얻은 다음 서버에서 최신 코드를 다운로드합니다.

위 내용은 Git 사용법에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제