Git 및 Git Hub 시작 (3/3)

9663 단어 GitGitHub

앞의 기사는 여기 있습니다.


Git 및 Git Hub 시작 (1/3)
Git 및 Git Hub 시작 (2/3)

이럴 때 어떡하지?


업무 중에 흔히 볼 수 있는 장면을 총결하였으니, 우리 함께 연습합시다.

전송에 추가 취소


기세가 세서 무대에 서류를 추가했지만 다음 제출에 포함하고 싶지 않다!에서 설명한 대로 해당 매개변수의 값을 수정합니다.
스테이지에 파일'테스트 2'를 추가해 보십시오.
$ git add test2
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   test2
답이 나왔다.(use "git reset HEAD <file>..." to unstage)지침에 따라 무대에서 테스트2를 복원합니다.
$ git reset HEAD test2
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    test2

nothing added to commit but untracked files present (use "git add" to track)
무대에 오르기 전에 회복했습니다.
여기서 새로운 단어가 나왔다.HEAD뭐예요?

제목


제목은 현재 처리 중인 지점의 최신 제출입니다.git log 제출 로그를 확인합니다.
$ git log
commit 7022b44cb174e7d1d932a950d052fcdec9b36408 (HEAD -> master, origin/master)
Author: hoge <[email protected]>
Date:   Sat Oct 12 22:15:23 2019 +0900

    Create README.md

commit f733bfe11003832f28f4803481cbe086e1903e4a
Author: hoge <[email protected]>
Date:   Sat Oct 12 19:13:31 2019 +0900

    first commit
이제 HEAD는 최상위 자술 파일을 추가할 때 커밋됩니다.git show HEAD에서 최신 제출 내용을 볼 수 있습니다.
$ git show HEAD
commit 7022b44cb174e7d1d932a950d052fcdec9b36408 (HEAD -> master, origin/master)
Author: hoge <[email protected]>
Date:   Sat Oct 12 22:15:23 2019 +0900

    Create README.md

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..bab6eaf
--- /dev/null
+++ b/README.md
@@ -0,0 +1,2 @@
+# sample
+sample for remote repository

그리고 가장 최근에 제출한 이전 제출은 HEAD^ 이다.
이전 제출일수록 ^ 더 많아진다.
최근에 제출한 이전 제출이 첫 번째 제출이다.
$ git show HEAD^
commit f733bfe11003832f28f4803481cbe086e1903e4a
Author: hoge <[email protected]>
Date:   Sat Oct 12 19:13:31 2019 +0900

    first commit

diff --git a/test1 b/test1
new file mode 100644
index 0000000..e69de29
즉, git reset HEAD test2 회복HEADの状態.
commit 이후f733bfe11003832f28f4803481cbe086e1903e4a는 커밋 ID이며 HEAD가 아닌 ID를 입력해도 동일합니다.

제출 시 주석 수정


마지막 제출
항목에서 사용할 수 있는 모든 패밀리를 봅니다.
우선, 파일'test2'를 제출할 때까지 임시 저장에 추가합니다.
주석은 "add hoge" 입니다.
$ git add test2
$ git commit -m "add hoge"
[master c26d97e] add hoge
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test2
항목에서 사용할 수 있는 모든 패밀리를 봅니다.
$ git log
commit c26d97e9a6c9460a0b9790f3040b12beca1750f0 (HEAD -> master)
Author: hoge <[email protected]>
Date:   Sun Oct 13 15:11:59 2019 +0900

    add hoge
주석을 git log로 수정합니다.
$ git commit --amend -m "add test2"
제출 로그에 대한 주석이 수정되었는지 확인합니다.
$ git log
commit 255795fc007dc6c5e64cc4acd2a54ca1e62f64c4 (HEAD -> master)
Author: hoge <[email protected]>
Date:   Sun Oct 13 15:11:59 2019 +0900

    add test2
댓글 수정됐네.

제출 취소


잘못 제출했지만 변경된 부분이 누락된 경우 등 제출하지 않은 경우를 원합니다.
이것도 사용"add test2".
$ git reset --soft HEAD^
git reset는 최신 제출 이전의 제출을 가리키기 때문에 최신 제출 이전의 제출로 되돌아간다.HEAD^ 전송 작업만 취소하고 전송에 추가된 상태로 돌아갑니다.
제출 일지를 봅시다.
아까 --soft 제출이 사라졌어요.
$ git log
commit 7022b44cb174e7d1d932a950d052fcdec9b36408 (HEAD -> master, origin/master)
Author: hoge <[email protected]>
Date:   Sat Oct 12 22:15:23 2019 +0900

    Create README.md

commit f733bfe11003832f28f4803481cbe086e1903e4a
Author: hoge <[email protected]>
Date:   Sat Oct 12 19:13:31 2019 +0900

    first commit
add test2 무대에 오른 상태를 보자.
test2 파일이 추가되었습니다.
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   test2
참고로 git status 를 추가하지 않으면 이전 중에 추가된 조작도 함께 취소됩니다.
또한 --soft 의 경우 작업 중인 파일 상태도 (최신 커밋 이전) 상태로 변경됩니다.즉, test2 파일을 삭제합니다.조심해.

푸시 실행 취소 파일


잘못 밀었어...이럴 때 밀기를 취소할 수 있어.
여러 사람이 같은 원격 저장소에서 작업하는 경우 이 작업은 다소 위험합니다.푸시 잘 취소해야 한다는 거 알려줘.

없다고 여기다


먼저 "test2"파일을 제출하여 원격 저장소로 전송합니다.
$ git commit -m "add test2"
[master 72225df] add test2
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test2

$ git push origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 264 bytes | 264.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To https://github.com/hoge/sample.git
   7022b44..72225df  master -> master
test2가 원격 저장소에 추가되었습니다.

제출 로그도 추가되었습니다.
$ git log
commit 72225dfff26c3e09114614739f584b5b6c9701af (HEAD -> master, origin/master)
Author: hoge <[email protected]>
Date:   Sun Oct 13 16:54:55 2019 +0900

    add test2

commit 7022b44cb174e7d1d932a950d052fcdec9b36408
Author: hoge <[email protected]>
Date:   Sat Oct 12 22:15:23 2019 +0900

    Create README.md

commit f733bfe11003832f28f4803481cbe086e1903e4a
Author: hoge <[email protected]>
Date:   Sat Oct 12 19:13:31 2019 +0900

    first commit
우선, 방금 설명한 방법에 따라 제출을 취소합니다.
$ git reset --soft HEAD^
$ git log
commit 7022b44cb174e7d1d932a950d052fcdec9b36408 (HEAD -> master)
Author: hoge <[email protected]>
Date:   Sat Oct 12 22:15:23 2019 +0900

    Create README.md

commit f733bfe11003832f28f4803481cbe086e1903e4a
Author: hoge <[email protected]>
Date:   Sat Oct 12 19:13:31 2019 +0900

    first commit
--hard의 제출이 사라졌다.
이 상태에서 다시 밀어넣습니다.
$ git push origin mastser
error: src refspec mastser does not match any.
error: failed to push some refs to 'https://github.com/hoge/sample.git'
아이고, 잘못했어.
원격 저장소에 기록된 제출 로그와 푸시된 제출 로그의 편차가 있기 때문이다.
구체적으로 원격 저장소에는 여전히 HEAD^ 로그가 있고, 새로 전송된 제출 로그에는 add test2 로그가 없기 때문이다.
예의는 아니지만 add test2 강제 추송까지.
$ git push -f origin master
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/hoge/sample.git
 + 72225df...7022b44 master -> master (forced update)
오류가 발생하지 않고 미루었다.
원격 저장소에서도test2를 삭제했습니다.

충돌 수정


원격 저장소와 로컬 저장소가 같은 곳에서 업데이트된 경우 로컬 저장소에서 원격 저장소로 푸시할 때 오류가 발생하여 푸시할 수 없습니다.이 상태는 add test2 라고 합니다.
만약 여러 사람이 함께 같은 원격 저장소를 업데이트한다면 이런 일이 발생할 수 있다.
간단하게 시도해 봅시다.우선, 원격 저장소 측에서 모든 자술한 파일의 내용을 삭제하고'modifycomment'를 입력하십시오.

그런 다음 로컬 저장소에서 자술한 파일의 내용을 수정합니다.
vi 명령에서 모든 자술한 파일의 내용을 삭제하고 "test"를 입력하십시오.
그리고 이동에 추가해서 한꺼번에 전송을 시도해 보세요.
$ vi README.md
$ git add README.md
$ git commit -m "mod README"
$ git push origin master
To https://github.com/maru-e/sample.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/hoge/sample.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
밀다가 오류가 났어요.
원격 저장소의 변경 사항이 로컬 저장소의 변경 사항과 충돌하기 때문에 어느 것을 우선해야 할지 모르겠습니다.
이렇게 되면 원격 자원 라이브러리는 어떤 변경이 있을까요?신경 쓰이지?
로컬 저장소에서 원격 저장소의 변경 내용을 가져올 수 있습니다.
$ git fetch
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/hoge/sample
   7022b44..7beb0cd  master     -> origin/master
그런 다음 다음 다음 명령을 사용하여 로컬 저장소-f 지점의 최신 커밋コンフリクト과 원격 저장소git fetch 지점 간의 차이를 볼 수 있습니다.
$ git diff HEAD origin/master
diff --git a/README.md b/README.md
index 9daeafb..a099415 100644
--- a/README.md
+++ b/README.md
@@ -1 +1 @@
-test
+modify comment
README.md 파일이 수정되었습니다. 파일의 내용은 로컬 저장소에서 "test", 원격 저장소에서 "modifycomment"입니다.
로컬 저장소의 컨텐트를 원격 저장소로 덮어쓸 수 있는 경우 master 에서 강제로 밀어넣습니다.
원격 저장소의 컨텐트를 로컬 저장소로 덮어쓰려면 덮어씁니다HEAD.
차이를 살펴보고 그 중 한 가지 방법으로 내용을 수정하자.

좋은 웹페이지 즐겨찾기