이 세 가지 명령을 하나로 사용할 수있는 방법이 있습니까?
git add .
git commit -a -m "commit" (do not need commit message either)
git push
때로는 하나의 문자, CSS 패딩 또는 무언가 만 변경하고 있습니다. 여전히 변경 사항을 적용하려면 세 가지 명령을 모두 작성해야합니다. 내가 하나의 푸셔 인 많은 프로젝트가 있으므로이 명령은 훌륭합니다!
이 세 가지 명령을 하나로 사용할 수있는 방법이 있습니까?
git add .
git commit -a -m "commit" (do not need commit message either)
git push
때로는 하나의 문자, CSS 패딩 또는 무언가 만 변경하고 있습니다. 여전히 변경 사항을 적용하려면 세 가지 명령을 모두 작성해야합니다. 내가 하나의 푸셔 인 많은 프로젝트가 있으므로이 명령은 훌륭합니다!
답변:
@Gavin의 답변을 바탕으로 :
별명 대신 lazygit을 함수로 만들면 인수를 전달할 수 있습니다. 내 .bashrc (또는 Mac의 경우 .bash_profile)에 다음을 추가했습니다.
function lazygit() {
git add .
git commit -a -m "$1"
git push
}
이를 통해 다음과 같은 커밋 메시지를 제공 할 수 있습니다
lazygit "My commit msg"
물론 어느 먼 곳으로 가야하는지 또는 어떤 지사와 같은 더 많은 논증을 받아들임으로써 이것을 더욱 강화할 수 있습니다.
$*
대신 사용할 수 있습니다 $1
.lazygit My commit msg
function dirtygit() { git add . git commit -a -m "$*" git push }
.gitconfig
파일에 별칭을 추가했습니다 .
[alias]
cmp = "!f() { git add -A && git commit -m \"$@\" && git push; }; f"
용법: git cmp "Long commit message goes here"
모든 파일을 추가 한 다음 커밋 메시지에 주석을 사용하여 원래 위치로 푸시합니다.
커밋 메시지가 무엇인지 제어 할 수 있기 때문에 더 나은 솔루션이라고 생각합니다.
별명은 명령 행에서 정의 할 수도 있습니다. 그러면 별명이 다음에 추가됩니다 .gitconfig
.
git config --global alias.cmp '!f() { git add -A && git commit -m "$@" && git push; }; f'
!f() { ... }; f
정확히 무엇입니까? 그 줄에 대한 자세한 설명은 대답을 더 좋게 만듭니다.
f
다음 호출합니다.
git pull
병합을 줄이기 위해 시작 부분에 추가 했습니다.
웨인 베르너 (Wayne Werner)는 그의 의구심에 대해 동의하지만 이것은 기술적으로 선택 사항입니다
git config alias.acp '! git commit -a -m "commit" && git push'
별칭을 정의하는 것을 실행 commit
하고 push
. 로 사용하십시오 git acp
. 이러한 "쉘"별명은 항상 git 저장소의 루트에서 실행됩니다.
다른 옵션은 푸시를 수행하는 커밋 후 후크를 작성하는 것입니다.
어쨌든, 실제로 쉘 별칭에 인수를 전달할 수 있습니다 . 사용자 정의 커밋 메시지를 전달하려면 대신 다음을 사용하십시오.
git config alias.acp '! acp() { git commit -a -m "$1" && git push ; } ; acp'
(물론 이제 커밋 메시지를 보내야합니다. git acp "My message goes here!"
)
git
이스케이프를 자동으로 추가했습니다 (로 확인 git config -e
).
git이 설계된 워크 플로우를 잘못 이해할 수 있다고 생각합니다. (의견에서 의미를 명확하게 / 수정하기 위해 , 파일이 이미 추가 된 경우 아직 준비되지 않은 변경 사항을 추가하는 것과 같은 목적을 수행 git add .
하므로) 가 필요하지 않습니다.commit -a
일반적으로 다음과 같은 작업을 수행합니다.
# make some changes
$ git commit -a -m "Changed something"
# make some more changes
$ git commit -a -m "Changed something else"
세척, 헹굼, 반복, 기능 X가 끝났을 때, 또는 멈추는 지점에있을 때까지 또는 다른 사람들이 자신이 한 일을보고 싶어 할 때까지. 그런 다음에
$ git push
Git은 SVN이 아니지만 그렇게 사용하려고합니다. 당신은 문서의 끝 부분에 자원의 일부를 찾을 수 있습니다 여기에 몇 가지 유용 할 수 있습니다.
bash script를 사용하고 alias를 설정하여 모든 명령 또는 명령 그룹을 시작할 수 있습니다
git commit -am "your message" && git push
bash에서 별명으로 설정하십시오.
$ alias lazygit="git add .; git commit -a -m '...'; git push;";
불러라:
$ lazygit
이 별칭을 영구적으로 만들려면 .bashrc 또는 .bash_profile에 별칭을 포함시켜야합니다.
가장 간단한 해결책은 다음과 같습니다.
git commit -a -m "commit" && git push
git add
커밋의 -a 매개 변수에 이미 포함되어 있지만 원하는 경우 모두 연결할 수 있습니다.
git add . && git commit -a -m "commit" && git push
Linux / Mac에서는 이처럼 실용적인 옵션도 작동합니다
git commit -am "IssueNumberIAmWorkingOn --hit Enter key
> A detail here --Enter
> Another detail here --Enter
> Third line here" && git push --last Enter and it will be there
로컬로 생성 된 새 브랜치 에서 작업중인 경우git push
조각을git push -u origin branch_name
시스템 편집기에서 커밋 메시지를 편집하려면
git commit -a && git push
편집기가 열리고 메시지를 저장하면 푸시됩니다.
당신은 gitu 를 시도 할 수 있습니다 .
처음으로 (노드 js를 설치해야 함) :
npm install -g git-upload
그 후 :
gitu COMMIT_MSG
이 세 명령을 한 번에 발행합니다.
좋은 점은 시스템을 다시 설치할 때 또는 다른 컴퓨터에서이 작업을 수행하려고 할 때 걱정할 필요가 없으며 파일을 수정할 필요가 없다는 것입니다 .
이 또한의 다른 플랫폼에서 작동 (같은 프롬프트 명령에서뿐만 아니라 리눅스와 맥뿐만 아니라 윈도우 cmd
와 powershell
설치해야 그냥) npm
및 nodejs
( git
물론).
결과 - 시도 : git add, git commit 및 git push에 대한 간단한 스크립트 하나의 명령
Windows에서 CMD를 열고이 답변을 붙여 넣습니다.
git commit -m "your message" . && git push origin master
이 예제 내 사진 스크린 샷 : https://i.stack.imgur.com/2IZDe.jpg
이 답변 에서 언급했듯이 git 별칭을 만들고 명령 세트를 할당 할 수 있습니다 . 이 경우 다음과 같습니다.
git config --global alias.add-com-push '!git add . && git commit -a -m "commit" && git push'
와 함께 사용
git add-com-push
아래 줄에 gitpush.sh라는 작은 스크립트를 작성하고 ~ 디렉토리에 추가하십시오.
echo $1
git add .
git commit -m "$1"
git push
이제 ~ / .bashrc에 아래와 같이 별칭을 추가하십시오.
alias gitpush='~/gitpush'
이제 모든 git 저장소에서 gitpush "message"을 작성하십시오.
배치 파일을 사용합니다.
@ECHO OFF
SET /p comment=Comment:
git add *
git commit -a -m "%comment%"
git push
위의 스크립트에는 몇 가지 문제가 있습니다.
shift는 매개 변수 $ 1을 "제거"하고, 그렇지 않으면 "push"가이를 읽고 "이해"합니다.
내 팁 :
git config --global alias.acpp '! git add -A && branchatu = "$ (git symbolic-ref HEAD 2> / dev / null)"&& branchatu = $ {branchatu ## refs / heads /} && git commit- m "$ 1"&& shift && git pull -u origin $ branchatu && git push -u origin $ branchatu '
svn과 같은 git commit 동작을 원할 때 이것을 .gitconfig의 git aliases에서 사용하십시오.
commit = "!f() { git commit \"$@\" && git push; };f"
생선 껍질을 사용하는 경우 (btse의 답변으로 구축) :
이 파일을 '~ / .config / fish / functions'에 'quickgit.fish'로 저장하십시오. 디렉토리가 없으면 작성하십시오. '--git-dir = $ PWD / .git'함수를 호출 한 git 프로젝트에 대해 git 명령을 실행하도록합니다.
function quickgit # This is the function name and command we call
git --git-dir=$PWD/.git add . # Stage all unstaged files
git --git-dir=$PWD/.git commit -a -m $argv # Commit files with the given argument as the commit message
git --git-dir=$PWD/.git push # Push to remote
end
터미널을 다시 시작하고 프로젝트로 이동하여 변경 한 다음 'quickgit "example message"를 호출 할 수 있습니다. 변경 사항이 추가, 커밋 및 푸시됩니다 :).
또한 여기에서 요점으로 찾을 수 있습니다 : https://gist.github.com/Abushawish/3440a6087c212bd67ce1e93f8d283a69
이미 좋은 솔루션이 많이 있지만 여기에 내가 일하고 싶은 방식으로 더 우아하게 생각되는 솔루션이 있습니다.
"git-put"이라는 경로에 다음을 포함하는 스크립트를 넣었습니다.
#!/bin/bash
git commit "$@" && git push -u
그것은 나를 실행할 수있게합니다 :
git put -am "내 커밋 메시지"
.. 모든 파일을 추가하고 커밋 한 다음 푸시합니다.
(이 문제와 관련이 없더라도 어쨌든이 작업을 좋아하기 때문에 "-u"를 추가했습니다. 업스트림 브랜치가 항상 당겨 지도록 설정되어 있습니다.)
이 방법은 모든 파일을 추가하지 않고 ( "-a"건너 뛰기) 또는 커밋하기 위해 전달할 다른 옵션과 함께 "git put"을 사용할 수 있기 때문에이 방법이 마음에 듭니다. 또한 "put"은 "push"및 "commit"의 짧은 포트만입니다.
Mac을 사용하는 경우 :
터미널 유형 "cd ~ /"를 시작하여 홈 폴더로 이동하십시오.
"touch .bash_profile"을 입력하여 새 파일을 작성하십시오.
선호하는 편집기로 .bash_profile을 편집하십시오 (또는 "open -e .bash_profile"을 입력하여 TextEdit에서 열 수 있습니다).
아래를 파일에 복사하여 붙여 넣기 :
function lazygit() { git add . git commit -a -m "$1" git push }
그런 다음 터미널을 다시 시작하고 하나의 쉬운 명령을 추가, 커밋 및 푸시하십시오.
lazygit "This is my commit message"
MAC VSC 사용자의 경우 최상의 설정은 다음과 같습니다.
1) 'shift + cmd + P'를 누르고 다음을 입력하십시오.
Shell Command: install 'code' command in PATH
Enter 키를 누르십시오 (이것은 bash_profile에 쉽게 도달하기 위해 코드 명령을 설치합니다)
2) 이제 다음을 실행할 수 있습니다. code ~/.bash_profile
빈 bash_profile을 엽니 다.
3) 거기에 새로운 기능을 입력하십시오 :
function lazygit() {
git add .
git commit -m "$*"
git push
}
4) 이제 VSC를 다시 시작하십시오.
5) 변경, 저장 및 lazygit message
세 명령을 동시에 실행하도록 입력
macOS 사용자의 경우 :
사용중인 터미널 또는 iTerm2 또는 다른 터미널을 엽니 다 .
명령을 사용하여 사용자 프로필 폴더로 이동하십시오 ~/
. .bash_profile
파일 의 기본 폴더입니다 .
Type nano .bash_profile
이 명령은 .bash_profile
터미널 –에 가장 쉬운 텍스트 편집기를 사용 하여 문서 를 열거 나 문서가없는 경우 작성합니다 nano
.
이제 파일을 간단하게 변경할 수 있습니다. 다음 코드 줄을 붙여 넣어 터미널 프롬프트를 변경하십시오.
function lazygit() {
git add .
git commit -a -m "$1"
git push
}
입력하여 변경 사항 ctrl + o
을 저장하고 Return 키를 눌러 저장하십시오. 그런 다음 nano
을 입력하여 종료하십시오 ctrl + x
.
이제 변경 사항을 활성화해야합니다. source .bash_profile
(또는 . ~/.bash_profile
)를 입력 하고 프롬프트 변경 사항을 확인하십시오.
iTerm2에서 Preferences/Profiles/General/Command
에서 Login Shell
및 Send text at start
로 설정하십시오 source ~/.bash_profile
. 따라서 각 macOS를 다시 시작한 후에 수동으로 만들 필요가 없습니다.
질문에 어떤 쉘을 지정하지 않았으므로 여기에 이전 답변을 기반으로 한 eshell 버전이 있습니다. 이것은 ~ / .emacs.d / eshell / alias에있을 수있는 eshell 별칭 파일로 이동합니다. 첫 번째 부분 z https://github.com/rupa/z/ 를 추가 했습니다.이 디렉토리로 빠르게 CD를 넣으십시오. 현재 디렉토리가 무엇이든 관계없이 실행할 수 있습니다.
alias census z cens; git add .; git commit -m "fast"; git push
~/.bash_profile
하나의 명령으로 추가, 커밋 및 푸시를 위해 추가 하십시오 .
function g() { git commit -a -m "$*"; git push; }
용법:
g your commit message
g your commit message 'message'
커밋 메시지에 세미콜론이나 괄호를 사용할 수 없지만 따옴표는 필요하지 않습니다 (작은 따옴표는 허용됨). 이 중 하나를 원한다면 단순히 메시지에 큰 따옴표를 넣으십시오.
g "your commit message; (message)"
메시지에 주석을 작성하려면 다음을 수행하십시오.
g "your commit message:
> your note"
비슷한 방식으로 추가하고 커밋하는 기능도 있습니다.
function c() { git add --all; git commit -m "$*"; }
g
기능과 동일한 방식으로 작동하며 동일한 제약 조건이 있습니다. c
대신 넣어 주세요. 예 :
c your commit message
리모컨으로 푸시하기위한 별칭을 추가 할 수도 있습니다.
alias p='git push'
용법:
p
그것은 2 글자로 이루어 c
지며 p
git 저장소로 작업하는 동안 사용합니다. 또는 g
대신 한 글자 만 사용 하여 모두 할 수 있습니다 .
별명 및 함수의 전체 목록 : https://gist.github.com/matt360/0c5765d6f0579a5aa74641bc47ae50ac
lazygit
답을 바탕으로 다음 솔루션은 푸시하기 전에 변경 사항을 확인하기 위해 사용자 확인을 추가합니다. 취소하면 명령이 되돌려집니다. 로컬 리포지토리에 변경 사항이있는 경우에만 발생합니다.
### SAFER LAZY GIT
function lazygit() {
git add .
if git commit -a -m "$1"; then
read -r -p "Are you sure you want to push these changes? [y/N]} " response
case "$response" in
[yY][eE][sS]|[yY])
git push
;;
*)
git reset HEAD~1 --soft
echo "Reverted changes."
;;
esac
fi
}