단일 머신에서 git 사용
설치:
yum install -y git
빈 디렉터리를 만들고이 빈 디렉터리를 현재 디렉터리로 사용합니다.
mkdir / data / gitroot
cd / 데이터 / gitroot
[root @ jinkai01 ~] # mkdir / data / gitroot
[root @ jinkai01 ~] # cd / data / gitroot
창고 초기화
자식 초기화
[root @ jinkai01 gitroot] # git init
/data/gitroot/.git/에서 빈 Git 저장소를 초기화합니다.
새 파일 생성 및 콘텐츠 편집
echo -e "aaa \ nbbb \ nccc"> a.txt
창고에 a.txt 추가
git add a.txt
추가가 완료된 후 실제로 git Warehouse에 파일을 제출하기 위해서는 commit이 필요합니다. -m 이후의 입력은이 제출에 대한 설명이며 모든 내용을 입력 할 수 있습니다.
[root @ jinkai gitroot] # git commit -m "new file a.txt"
[마스터 (루트 제출) cbaba01] 새 파일 a.txt
커미터 : root <[email protected]>
사용자의 이름과 이메일 주소는 로그인 이름과 호스트 이름에 따라 자동으로 설정됩니다. 정확한지 확인하십시오
아님. 이 프롬프트 메시지를 다시 방지하려면 다음 명령을 사용하여 명시 적으로 설정할 수 있습니다.
git config --global user.name "Your Name"
git config --global user.email [email protected]
설정 후 다음 명령을 사용하여이 제출에 사용되는 사용자 ID를 수정할 수 있습니다.
git commit --amend --reset-author
1 개 파일 변경, 4 개 삽입 (+)
생성 모드 100644 a.txt
a.txt를 다시 변경하십시오.
변경된 파일이 있는지 여부 등웨어 하우스의 현재 상태를 확인합니다.
자식 상태
[root @ jinkai gitroot] # vim a.txt
[root @ jinkai gitroot] # git status
# 브랜치 마스터에 위치
# 제출을 위해 아직 준비되지 않은 변경 사항 :
# (제출할 내용을 업데이트하려면 "git add <file> ..."을 사용하십시오.)
# ( "git checkout-<file> ..."을 사용하여 작업 공간의 변경 사항을 취소하십시오.)
#
# 수정 : a.txt
#
수정 사항이 커밋에 추가되지 않았습니다 ( "git add"및 / 또는 "git commit -a"사용).
이번에는 a.txt에서 수정 된 내용을 비교하고웨어 하우스의 버전을 비교할 수 있습니다.
git diff a.txt
[root @ jinkai gitroot] # git diff a.txt
diff --git a / a.txt b / a.txt
색인 35fbd83..cc59506 100644
--- a / a.txt
+++ b / a.txt
@@ -1,4 +1,6 @@
aaa
bbb
ccc
-ddd //-번호가 삭제됨
+ // + 기호가 새로 추가되었습니다.
+ eee
+ fff
버전 롤백
a.txt를 여러 번 변경 한 다음 추가, 커밋
[root @ jinkai gitroot] # git add a.txt
[root @ jinkai gitroot] # git commit -m "old file a.txt"
모든 제출 기록보기
자식 로그
[root @ jinkai gitroot] # git log
커밋 1f120c286d46bb62013cfd6579dccf1856cf6c49
작성자 : root <[email protected]>
날짜 : Thu Dec 10 22:43:56 2020 +0800
이전 파일 a.txt
커밋 cbaba019f9ddfa540a96d46835ab25e91b988b00
작성자 : root <[email protected]>
날짜 : Thu Dec 10 22:42:10 2020 +0800
새 파일 a.txt
간결한 단선 디스플레이
git log --pretty = oneline
[root @ jinkai gitroot] # git log --pretty = oneline
1f120c286d46bb62013cfd6579dccf1856cf6c49 이전 파일 a.txt
cbaba019f9ddfa540a96d46835ab25e91b988b00 새 파일 a.txt
뒤에 오는 문자열이 축약 된 대체 버전
git reset --hard ****
[root @ jinkai gitroot] # git reset --hard 1f120c2
HEAD는 이제 1f120c2 이전 파일 a.txt에 있습니다.
[root @ jinkai gitroot] # git log --pretty = oneline
1f120c286d46bb62013cfd6579dccf1856cf6c49 이전 파일 a.txt
cbaba019f9ddfa540a96d46835ab25e91b988b00 새 파일 a.txt
다시 돌아가고 싶지만 이전 코드를 잊어 버린 경우 다음 명령을 사용하여 찾을 수 있습니다.
git reflog 모든 이전 버전보기
[root @ jinkai gitroot] # git reflog
1f120c2 HEAD @ {0} : 재설정 : 1f120c286d46bb62013cfd6579dccf1856cf6c49로 이동
5badc97 HEAD @ {1} : 커밋 : hahahah
1f120c2 HEAD @ {2} : 커밋 : 이전 파일 a.txt
cbaba01 HEAD @ {3} : 커밋 (초기) : 새 파일 a.txt
[root @ jinkai gitroot] # git reset --hard 5badc97
HEAD는 이제 5badc97 hahahah에 있습니다.
[root @ jinkai gitroot] # git log --pretty = oneline
5badc97b5be29236b4db7cf2302474ae439bb0d1 hahahah
1f120c286d46bb62013cfd6579dccf1856cf6c49 이전 파일 a.txt
cbaba019f9ddfa540a96d46835ab25e91b988b00 새 파일 a.txt
편집 취소
실수로 a.txt를 삭제했습니다.
rm -f a.txt
a.txt 복원
git checkout-a.txt
[root @ jinkai gitroot] # rm -rf a.txt
[root @ jinkai gitroot] # git checkout
D a.txt
[root @ jinkai gitroot] # git checkout-a.txt
[root @ jinkai gitroot] # ls
a.txt
a.txt 파일이 수정되었지만 추가 후 커밋이없고 마지막으로 제출 된 상태로 돌아가려면 git reset HEAD a.txt를 사용한 다음 git checkout-a.txt를 실행할 수 있습니다.
[root @ jinkai gitroot] # vim a.txt
[root @ jinkai gitroot] # cat a.txt
aaa
bbb
ccc
[root @ jinkai gitroot] # echo ddd >> a.txt
[root @ jinkai gitroot] # cat a.txt
aaa
bbb
ccc
ddd
[root @ jinkai gitroot] # git add a.txt
[root @ jinkai gitroot] # git reset HEAD a.txt
재설정 후 대기 장소에서 철회하기위한 변경 사항 :
M a.txt
[root @ jinkai gitroot] # git checkout-a.txt
[root @ jinkai gitroot] # cat a.txt
aaa
bbb
ccc
파일을 지우시오
git rm 2.txt
파일이 삭제되었지만 라이브러리에서 삭제되지 않았습니다. 다음 명령을 사용하여 라이브러리에서 파일을 삭제하십시오.
git commit -m "rm 2.txt"
[root @ jinkai gitroot] # git rm a.txt
rm 'a.txt'
[root @ jinkai gitroot] # ls
[root @ jinkai gitroot] # git commit -m "delete a.txt"
[master 6027f5c] a.txt 삭제
1 개 파일 변경, 4 개 삭제 (-)
삭제 모드 100644 a.txt
[root @ jinkai gitroot] # git checkout-a.txt
오류 : pathspec 'a.txt'가 git에 알려진 파일과 일치하지 않습니다.
원격 창고 구축
먼저 https://github.com으로 이동 하여 계정 을 등록하십시오.
새 창고
오른쪽 상단 모서리에 더하기 기호 새 저장소가 있습니다.
jinkai-linux와 같은 이름을 사용자 지정하고 public을 선택한 다음 저장소 만들기를 클릭합니다.
키 추가 : 오른쪽 상단 모서리에서 아바타를 클릭하고 설정을 선택한 다음 왼쪽에서 SSH 및 GPG 키를 선택합니다.
왼쪽의 새 SSH 키를 클릭하고 여기에 Linux 시스템에 ~ / .ssh / id_rsa.pub의 내용을 붙여 넣으십시오.
[root @ jinkai gitroot] # ssh-keygen
[root @ jinkai gitroot] # cat /root/.ssh/id_rsa.pub
SSH-RSA AAAAB3NzaC1yc2EAAAADAQABAAABAQDMiw64fA0 / 5yaTC25IjgM2MzNZhAxtdWJhujGgAoZLcIsbfYKBlVKzURj9KURhrZQlprbX4LgfyfAuZnIXYQxIQWoWufc6P + cbLJjydR36ROPmHx9BYN7Jf405LVf06S / 1W9dirpJd3HxYTh3cxxQXKrw0 / sJgfeBGQh4D / Y zCSlNfuAsV5D + + + VwjVciCrv27TVL7tNaYCBv4v MYUOjvm / jtBHBWwTmhRhV2tGVdKAP0TkuK7mM19UapsV / 1LW9fwDptgyedf236fAaf5EM5cXpqXHR5p1 hueLP8Ya4rOsarmSISFVwQyl1kCSnj7b + / + X TI8QYF2vf0RBbn82wHJ [email protected]
로컬 창고를 원격 창고로 푸시
먼저 지역에 창고를 건설하십시오.
[root @ jinkai gitroot] # mkdir / tmp / jinkai-linux
[root @ jinkai gitroot] # cd! $
cd / tmp / jinkai-linux
[root @ jinkai jinkai-linux] # echo "# jinkai-linux">> README.md
[root @ jinkai jinkai-linux] # git init
/tmp/jinkai-linux/.git/에서 빈 Git 저장소를 초기화합니다.
[root @ jinkai jinkai-linux] # git add READE.md
치명적 : 'READE.md'경로가 어떤 파일과도 일치하지 않습니다.
[root @ jinkai jinkai-linux] # git commit -m "first commit"
[마스터 (루트 커밋) d0000e6] 첫 번째 커밋
1 개 파일 변경, 1 개 삽입 (+)
생성 모드 100644 README.md
[root @ jinkai newfile] # git branch -M main
이 단계는 원격으로 새로운 창고 jinkai-linux를 만드는 것입니다.
git remote add origin https://github.com/jinkai-linux/jinkai-linux.git
그런 다음 로컬 창고를 원격으로 밀어
git push -u origin main
[root @ jinkai jinkai-linux] # git remote add origin https://github.com/jinkai-linux/jinkai-linux.git
[root @ jinkai jinkai-linux] # git push -u origin main
' https://github.com '의 사용자 이름 : jinkai-linux
' https : //[email protected] '의 비밀번호 :
물체 세기 : 3, 완료.
개체 쓰기 : 100 % (3/3), 215 바이트 | 0 바이트 / 초, 완료.
총 3 (델타 0), 재사용 0 (델타 0)
에 https://github.com/jinkai-linux/jinkai-linux.git
* [새 브랜치] 메인-> 메인
지점 메인은 원점에서 원격 지점 메인을 추적하도록 설정됩니다.
다음 로컬 창고 변경 후 다시 푸시하면 직접 git push
[root @ jinkai jinkai-linux] # vim a.txt
[root @ jinkai jinkai-linux] # git add a.txt
[root @ jinkai jinkai-linux] # git commit -m "hahaha"
[메인 866e75f] 하하하
1 개 파일 변경, 3 개 삽입 (+)
생성 모드 100644 a.txt
[root @ jinkai jinkai-linux] # git push
원격웨어 하우스 복제
[root @ jinkai tmp] # cd / home /
[root @ jinkai home] # git clone https://github.com/jinkai-linux/jinkai-linux.git
'jinkai-linux'로 복제 중 ...
원격 : 개체 열거 : 6, 완료.
원격 : 개체 계수 : 100 % (6/6), 완료.
원격 : 개체 압축 : 100 % (3/3), 완료.
원격 : 총 6 개 (델타 0), 재 사용됨 6 (델타 0), 팩 재 사용됨 0
개체 포장 풀기 : 100 % (6/6), 완료.
웨어 하우스의 내용을 로컬로 수정하십시오.
[root @ jinkai jinkai-linux] # vim README.md
[root @ jinkai jinkai-linux] # cat README.md
# jinkai-linux
abcdefghijk
[root @ jinkai jinkai-linux] # git add README.md
[root @ jinkai jinkai-linux] # git commit -m "hhhhh"
[메인 4da96e2] hhhhh
1 개 파일 변경, 1 개 삽입 (+)
그런 다음 원격 서버로 푸시합니다. git push
[root @ jinkai jinkai-linux] # git push
더 많은 추가 콘텐츠를 보려면 원격에서 새로 고침
원격 서버의 콘텐츠를 수정 한 다음 자신의 클라이언트에 드롭합니다. git pull
[root @ jinkai jinkai-linux] # git pull
원격 : 개체 열거 : 5, 완료.
원격 : 개체 계수 : 100 % (5/5), 완료.
원격 : 개체 압축 : 100 % (2/2), 완료.
원격 : 총 3 (델타 0), 재사용 0 (델타 0), 팩 재사용 0
개체 포장 풀기 : 100 % (3/3), 완료.
에서 https://github.com/jinkai-linux/jinkai-linux
4da96e2..6106cd6 메인-> 원점 / 메인
업데이트 4da96e2..6106cd6
빨리 감기
README.md | 2 ++
1 개 파일 변경, 2 개 삽입 (+)
[root @ jinkai jinkai-linux] # cat README.md
# jinkai-linux
abcdefghijk
111111
2222222
로컬에 드롭 된 콘텐츠가 업데이트되었습니다.
지식 확장 :
Github에서 SSH 공개 키를 추가했지만 git push에는 여전히 비밀번호가 필요합니다. 해결 방법은 다음과 같습니다.
[root @ jinkai newfile] # cat /root/.netrc
기계 github.com
로그인 github-name (github 사용자 이름)
비밀번호 비밀번호 (로그인 비밀번호)