Git: 대화형 명령 배우기
5660 단어 git
Git과 공동 작업을 처음 시작할 때 비슷한 작업을 수행했지만 명령줄에서 이를 막았더라면 훨씬 더 빨리 배울 수 있었을 것입니다.
명령줄을 사용하는 이유
첫 번째 원칙
좋아요, Git GUI가 나쁘다고 말하는 것이 아닙니다. 실제로는 그 반대입니다. 요즘은 주로 복잡한 트리 구조를 시각화하는 특정 작업에 항상 사용합니다.
내 말은 Git을 최대한 활용하고 완전히 이해하려면 먼저 명령줄을 통해 배워야 한다는 것입니다.
대화형 추가
커밋 정리
이것은 내가 기능을 작성할 때 정말 유용하며 같은 커밋에 포함하고 싶지 않은 다른 것들을 업데이트했을 수도 있습니다. 테스트 수정, 다른 클래스 리팩토링 등
이렇게 하면 모든 변경 사항의 상태를 볼 수 있고 사용할 수 있는 모든 옵션을 제공합니다.
$ git add -i
staged unstaged path
1: unchanged +2/-0 README.md
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now>
그런 다음 추가 또는 패치 옵션 옵션을 사용하여 특정 파일을 선택적으로 준비할 수 있습니다.
추가 옵션은 파일의 모든 변경 사항을 준비하고, 패치 옵션은 파일 내의 모든 다른 덩어리(변경 사항을 함께 그룹화)를 거치며 선택적으로 각 덩어리를 준비할 수 있습니다.
staged unstaged path
1: unchanged +2/-0 README.md
Patch update>> 1
staged unstaged path
* 1: unchanged +2/-0 README.md
Patch update>>
diff --git a/README.md b/README.md
index 48bee75..6056e4a 100644
--- a/README.md
+++ b/README.md
@@ -20,3 +20,5 @@ $ login --store=https://dev-mimir.com
$ populate products
$ node serve
+
+some change
(1/1) Stage this hunk [y,n,q,a,d,e,?]?
인터랙티브 리베이스
지점 정리
좋아, 이것은 내가 가장 좋아하는 Git 명령입니다. 지금 기억할 수 있는 것보다 더 많이 베이컨을 저장했습니다. 의심스러운 경우 대화형 리베이스.
따라서 로컬 지점에서 작업할 때 지저분한 커밋을 많이 하는 경향이 있습니다. 때로는 롤백하려는 경우 문제를 일으킬 수 있는 의미가 없는 순서가 될 수 있습니다. 그들이 정말로 해서는 안 되는 것들을 포함하고, 그것들은 잘 설명되어 있지 않습니다.
원격 브랜치로 푸시하기 전에 일반적으로 브랜치를 정리하기 위해 대화형 리베이스를 수행해야 합니다.
$ git rebase -i HEAD~4
pick a204433 refactor: rename TicketBoard
pick 72ceae8 refactor: generic support tickets table
pick ba2925d refactor: organise React folder components/services
pick 95023db feat(wip): added TicketBoard placeholder services
# Rebase 9c24617..95023db onto 95023db (4 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# . create a merge commit using the original merge commit's
# . message (or the oneline, if no original merge commit was
# . specified). Use -c <commit> to reword the commit message.
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
이 명령과 함께 제공되는 모든 유용한 문서를 보세요. 모든 것이 바로 거기에 있기 때문에 실제로 무엇을 하는지 기억할 필요조차 없습니다.
따라서 첫 번째 커밋과 마지막 두 커밋을 함께 스쿼시하고 싶다면 쉽게 할 수 있습니다. 문서를 따르고 커밋을 재정렬하고
pick
에서 squash
로 변경하기만 하면 됩니다.$ git rebase -i HEAD~4
pick ba2925d refactor: organise React folder components/services
pick 95023db feat(wip): added TicketBoard placeholder services
squash a204433 refactor: rename TicketBoard
squash 72ceae8 refactor: generic support tickets table
결론
이 게시물이 Git에서 많은 것을 얻는 데 많은 것이 필요하지 않다는 점을 강조했기를 바랍니다. 이 몇 가지 명령만으로도 많은 유연성과 제어를 제공할 수 있는데, 이는 종종 일부 Git GUI에서 부족한 부분입니다.
Reference
이 문제에 관하여(Git: 대화형 명령 배우기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/alanmckenna/git-learn-interactive-commands-53b2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)