Git가 제출한 명령qs(quick squash)를 가장 빨리 요약해 보았습니다.
입문
여러분 Git 쓰세요?나는 1년 정도의 Git 경력을 가지고 있다.
그 전에 버전 관리는 SVN을 사용했지만 어떤 프로젝트에서 Git를 처음 접했습니다.
당시 SVN에 익숙했던 나는 Git에 대해 곤혹스러웠지만, 약속(저장점)을 한 후에 로그를 예쁘게 만들 수 있고, 없는 일을 할 수 있기 때문에, 지금은 Git가 가장 높다!SVN으로 다시 돌아가고 싶지 않아요.
하지만 겁이 나서 너무 꼼꼼하게 제출하면 "아, 이게 정리가 되네!"이것은 일상적인 밥이다!
통상적으로 다음과 같은 절차를 통해rebase를 진행하여 총결산하여 제출한다
git rebase -i
HEAD에서 지정한 객체의 과거 제출GIT EDITOR
(vim,nano 등) 일어나서 제출 하나하나를'pick->squash'닫기
GIT EDITOR
노트: @chaspy 함께 제작되었습니다.본 보도에서 qs명령 제작까지의 시도와 과정, 기술적 요소 할애.물론 공부도 하기 때문에 다른 기사에 잘 싣겠습니다.같이 작업하면서 드디어 해냈어요.감사합니다
무슨 명령
이것은 여러 개의 제출을 하나로 합친 명령이다.
명령 형식 예시에서 HEAD~i
에서 HEAD~(j-1)
로 제출된 메시지를 "quick squash"로 통합합니다.$ qs -n i..j -m"quick squash" -f
예를 들겠습니다.
파일이 추가된 제출이 많습니다.$ git log --oneline
becd1ab (HEAD -> master) Add file-10 // HEAD~0
e5cc748 Add file-9 // HEAD~1
bbd11e8 Add file-8 // HEAD~2
f93742b Add file-7 // HEAD~3 ここから
5ca590b Add file-6 // HEAD~4 ~
ea8ba99 Add file-5 // HEAD~5 ~
39f4b30 Add file-4 // HEAD~6 ここまでのコミットを
632e3ee Add file-3 // HEAD~7 このコミットに含めたい
ce882d0 Add file-2 // HEAD~8
3ab0e11 Add file-1 // HEAD~9
3105266 Add file-0 // HEAD~10
f712ef6 Initial commit
가령 많은 일이 있다고 가정하면,'Addfile-7'에서'Addfile-4'까지'Addfile-3'제출에 포함하고 싶습니다.
또한 제출된 제출 메시지를'Hello QS'로 바꾸고 싶습니다.
참고로 HEAD~j
디버깅 옵션입니다.대량의 로그가 출현하다.$ ./qs -n 3..7 -d -m "Hello QS"
INFO[0000] [11] pickup -> pickup f712ef6 Initial commit
INFO[0000] [10] pickup -> pickup 3105266 Add file-0
INFO[0000] [ 9] pickup -> pickup 3ab0e11 Add file-1
INFO[0000] [ 8] pickup -> pickup ce882d0 Add file-2
INFO[0000] [ 7] pickup -> pickup 632e3ee Add file-3
INFO[0000] [ 6] pickup -> squash 39f4b30 fixup! Add file-3
INFO[0000] [ 5] pickup -> squash ea8ba99 fixup! Add file-3
INFO[0000] [ 4] pickup -> squash 5ca590b fixup! Add file-3
INFO[0000] [ 3] pickup -> squash f93742b fixup! Add file-3
INFO[0000] [ 2] pickup -> pickup bbd11e8 Add file-8
INFO[0000] [ 1] pickup -> pickup e5cc748 Add file-9
INFO[0000] [ 0] pickup -> pickup becd1ab Add file-10
Do you squash the following commits?(y/n)
y
…ログ…
$ git log --oneline
665635b (HEAD -> master) Add file-10
25a658c Add file-9
446f5ad Add file-8
da0197d Hello QS
ce882d0 Add file-2
3ab0e11 Add file-1
3105266 Add file-0
f712ef6 Initial commit
$ git show da0197d // HelloQSのコミット内容を見る
commit da0197d24cffbac543ba1911cf05dac967f6fb8e
Author: git fixup <[email protected]>
Date: Fri Aug 24 23:19:10 2018 +0900
Hello QS
diff --git a/file-3 b/file-3
new file mode 100644
index 0000000..6d0cc47
--- /dev/null
+++ b/file-3
@@ -0,0 +1 @@
+file-3
diff --git a/file-4 b/file-4
new file mode 100644
index 0000000..e53a9ad
--- /dev/null
+++ b/file-4
@@ -0,0 +1 @@
+file-4
diff --git a/file-5 b/file-5
new file mode 100644
index 0000000..079a298
--- /dev/null
+++ b/file-5
@@ -0,0 +1 @@
+file-5
diff --git a/file-6 b/file-6
new file mode 100644
index 0000000..e01f1fc
--- /dev/null
+++ b/file-6
@@ -0,0 +1 @@
+file-6
diff --git a/file-7 b/file-7
new file mode 100644
index 0000000..f8b15d3
--- /dev/null
+++ b/file-7
@@ -0,0 +1 @@
+file-7
내가 예상한 대로 약속하고 싶었어.
이 때 -d
옵션을 사용하면 확인 화면이 표시되지 않고 빠르게 실행됩니다.$ qs -n 3..7 -m "Hello QS" -f
Successfully rebased and updated refs/heads/master.
$ git log --oneline
585f9ee (HEAD -> master) Add file-10
9a5edfc Add file-9
9ec94c3 Add file-8
a469db8 Hello QS
f101a87 Add file-2
c5bccf9 Add file-1
4d40f78 Add file-0
1c945c1 Initial commit
매우 빠르다.하지만, 나는 qs가 싸우는 것이 매우 피곤하다고 생각한다. 그래서 Alias를 청한다
설치 방법
Go 언어로 쓰기 때문에 사용-f
.Go 언어는 기본적으로 교차 컴파일에 대응하고 Windows, Mac, Linux에 대응할 수 있는 점도 장점이다.(Windows의 텍스트 색상은 지저분하게 유지됩니다. 다음 버전에서 수정)
Go 언어에 대한 환경 구축이 완료된 경우(Go 설치, 환경 변수 설정).$ go get github.com/kamontia/qs
이 명령만 사용할 수 있습니다 go get
.
겸사겸사 말씀드리지만, 원본 코드는 아래에 있습니다.
Github::qs::Code
바이너리 파일은 Release 페이지에 있습니다.(MacOS,Windows,Linux)
Github::qs::Release
앞으로
발행 버전qs
이기 때문에 소스 코드는 스파게티를 초월한다.그리고 Go는 처음 만져보는데 만약 그렇다면 코드를 다 쓴 후에 "& Go의 느낌을 너무 재구성해야 하나요??"그래서 나는 Go의 책을 샀다.OS 의존에 대한 부분도 곧 유효한 정보를 찾았기 때문에 대응을 추진하고자 합니다.0.1.0
먼저 움직이는 물건이라 개의치 않고 진행했고 0.1.0
향하는 동력을 유지하기 위해 투고했다.개선의 여지만 있는 놈이지만 여러분의 협조를 쉽게 받을 수 있는 코드로 수정해야 하니까 따뜻하게 지켜주시길 바랍니다.
Reference
이 문제에 관하여(Git가 제출한 명령qs(quick squash)를 가장 빨리 요약해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kamontia/items/ac5c7f99599049b545e9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ qs -n i..j -m"quick squash" -f
$ git log --oneline
becd1ab (HEAD -> master) Add file-10 // HEAD~0
e5cc748 Add file-9 // HEAD~1
bbd11e8 Add file-8 // HEAD~2
f93742b Add file-7 // HEAD~3 ここから
5ca590b Add file-6 // HEAD~4 ~
ea8ba99 Add file-5 // HEAD~5 ~
39f4b30 Add file-4 // HEAD~6 ここまでのコミットを
632e3ee Add file-3 // HEAD~7 このコミットに含めたい
ce882d0 Add file-2 // HEAD~8
3ab0e11 Add file-1 // HEAD~9
3105266 Add file-0 // HEAD~10
f712ef6 Initial commit
$ ./qs -n 3..7 -d -m "Hello QS"
INFO[0000] [11] pickup -> pickup f712ef6 Initial commit
INFO[0000] [10] pickup -> pickup 3105266 Add file-0
INFO[0000] [ 9] pickup -> pickup 3ab0e11 Add file-1
INFO[0000] [ 8] pickup -> pickup ce882d0 Add file-2
INFO[0000] [ 7] pickup -> pickup 632e3ee Add file-3
INFO[0000] [ 6] pickup -> squash 39f4b30 fixup! Add file-3
INFO[0000] [ 5] pickup -> squash ea8ba99 fixup! Add file-3
INFO[0000] [ 4] pickup -> squash 5ca590b fixup! Add file-3
INFO[0000] [ 3] pickup -> squash f93742b fixup! Add file-3
INFO[0000] [ 2] pickup -> pickup bbd11e8 Add file-8
INFO[0000] [ 1] pickup -> pickup e5cc748 Add file-9
INFO[0000] [ 0] pickup -> pickup becd1ab Add file-10
Do you squash the following commits?(y/n)
y
…ログ…
$ git log --oneline
665635b (HEAD -> master) Add file-10
25a658c Add file-9
446f5ad Add file-8
da0197d Hello QS
ce882d0 Add file-2
3ab0e11 Add file-1
3105266 Add file-0
f712ef6 Initial commit
$ git show da0197d // HelloQSのコミット内容を見る
commit da0197d24cffbac543ba1911cf05dac967f6fb8e
Author: git fixup <[email protected]>
Date: Fri Aug 24 23:19:10 2018 +0900
Hello QS
diff --git a/file-3 b/file-3
new file mode 100644
index 0000000..6d0cc47
--- /dev/null
+++ b/file-3
@@ -0,0 +1 @@
+file-3
diff --git a/file-4 b/file-4
new file mode 100644
index 0000000..e53a9ad
--- /dev/null
+++ b/file-4
@@ -0,0 +1 @@
+file-4
diff --git a/file-5 b/file-5
new file mode 100644
index 0000000..079a298
--- /dev/null
+++ b/file-5
@@ -0,0 +1 @@
+file-5
diff --git a/file-6 b/file-6
new file mode 100644
index 0000000..e01f1fc
--- /dev/null
+++ b/file-6
@@ -0,0 +1 @@
+file-6
diff --git a/file-7 b/file-7
new file mode 100644
index 0000000..f8b15d3
--- /dev/null
+++ b/file-7
@@ -0,0 +1 @@
+file-7
$ qs -n 3..7 -m "Hello QS" -f
Successfully rebased and updated refs/heads/master.
$ git log --oneline
585f9ee (HEAD -> master) Add file-10
9a5edfc Add file-9
9ec94c3 Add file-8
a469db8 Hello QS
f101a87 Add file-2
c5bccf9 Add file-1
4d40f78 Add file-0
1c945c1 Initial commit
Go 언어로 쓰기 때문에 사용
-f
.Go 언어는 기본적으로 교차 컴파일에 대응하고 Windows, Mac, Linux에 대응할 수 있는 점도 장점이다.(Windows의 텍스트 색상은 지저분하게 유지됩니다. 다음 버전에서 수정)Go 언어에 대한 환경 구축이 완료된 경우(Go 설치, 환경 변수 설정).
$ go get github.com/kamontia/qs
이 명령만 사용할 수 있습니다 go get
.겸사겸사 말씀드리지만, 원본 코드는 아래에 있습니다.
Github::qs::Code
바이너리 파일은 Release 페이지에 있습니다.(MacOS,Windows,Linux)
Github::qs::Release
앞으로
발행 버전qs
이기 때문에 소스 코드는 스파게티를 초월한다.그리고 Go는 처음 만져보는데 만약 그렇다면 코드를 다 쓴 후에 "& Go의 느낌을 너무 재구성해야 하나요??"그래서 나는 Go의 책을 샀다.OS 의존에 대한 부분도 곧 유효한 정보를 찾았기 때문에 대응을 추진하고자 합니다.0.1.0
먼저 움직이는 물건이라 개의치 않고 진행했고 0.1.0
향하는 동력을 유지하기 위해 투고했다.개선의 여지만 있는 놈이지만 여러분의 협조를 쉽게 받을 수 있는 코드로 수정해야 하니까 따뜻하게 지켜주시길 바랍니다.
Reference
이 문제에 관하여(Git가 제출한 명령qs(quick squash)를 가장 빨리 요약해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kamontia/items/ac5c7f99599049b545e9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Git가 제출한 명령qs(quick squash)를 가장 빨리 요약해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kamontia/items/ac5c7f99599049b545e9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)