programing

git add, commit 및 push 명령을 하나로 통합하시겠습니까?

oldcodes 2023. 7. 13. 21:06
반응형

git add, commit 및 push 명령을 하나로 통합하시겠습니까?

이 세 가지 명령을 한 번에 사용할 수 있는 방법이 있습니까?

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"

물론 어느 원격지로 이동할지, 어느 지점으로 이동할지와 같은 더 많은 주장을 수용함으로써 이를 더욱 강화할 수 있습니다.

제 나는결나추다니습가했명별에 ..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'

저는 웨인 베르너의 의심에 동의하지만, 기술적으로는 이것이 선택사항입니다.

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'

메시지를 할 입니다: ( message: (commit message)git acp "My message goes here!")

.bash_profile에서 사용합니다.

gitpush() {
    git add .
    git commit -m "$*"
    git push
}
alias gp=gitpush

다음과 같이 실행됩니다.

gp A really long commit message

실행하세요.source ~/.bash_profile이름을 저장한 후.

하실 수도 있다고 ( 하기 /그지하정요하바이제것은신당글에를의서한가미수it▁(▁g▁▁the▁i▁you▁don▁that▁need.)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 스크립트를 사용하여 모든 명령 또는 명령 그룹을 시작하도록 별칭을 설정할 수 있습니다.

git commit -am "your message" && git push 

가장 간단한 솔루션은 다음과 같습니다.

git commit -a -m "commit" && git push

git add이미 -a commit 매개 변수에 포함되어 있지만, 원하는 경우 모두 연결할 수 있습니다.

git add . && git commit -a -m "commit" && git push

bash에서 별칭으로 설정:

$ alias lazygit="git add .; git commit -a -m '...'; git push;";

호출:

$ lazygit

(이 별칭을 영구적으로 만들려면 .bashrc 또는 .bash_profile에 포함해야 합니다.)

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 

편집기를 열고 메시지를 저장하면 메시지도 밀어넣습니다.

기투를 해보세요.

처음으로 (노드 js를 설치해야 함):

npm install -g git-upload

그 후:

gitu COMMIT_MSG

세 가지 명령을 동시에 실행합니다.

좋은 점은 시스템을 다시 설치할 때나 다른 컴퓨터에서 이 작업을 수행할 걱정할 필요가 없으며 파일을 수정할 필요가 없다는 것입니다.이것은 다른 플랫폼(Linux와 Mac뿐만 아니라 Windows에서도 작동합니다.cmd그리고.powershell) npm그리고.nodejs(git물론).

에는 을 가 없습니다.git add당신은 간단하게 쓸 수 있습니다.git commit -am 'your message'

만약 당신이 커밋 메시지를 쓰고 싶지 않다면, 당신은 다음과 같은 것을 하는 것을 고려할 수 있습니다.

git commit --allow-empty-message -am ''

Mac을 사용하는 경우:

  1. 시작)을 합니다.cd ~/

  2. touch .bash_profile새 파일을 만듭니다.

  3. .bash_profile편집자와 즐찾기또편와기(집겨그입수할있력음께함냥는또와수(▁type있))를 입력할 수 .open -e .bash_profile텍스트 편집)에서 열 수 있습니다.

  4. 다음을 복사하여 파일에 붙여넣습니다.

function lazygit() {
    git add .
    git commit -a -m "$1"
    git push
}

그런 다음 터미널을 다시 시작하고 하나의 쉬운 명령을 추가, 커밋 및 푸시하기만 하면 됩니다. 예:

lazygit "This is my commit message"

결과 - 사용해 보십시오: git add, git commit 및 git push에 대한 간단한 스크립트 하나의 명령어

윈도우즈에서 CMD를 열고 이 대답을 붙여넣습니다.

git commit -m "your message" . && git push origin master

예제 내 사진 스크린샷: https://i.stack.imgur.com/2IZDe.jpg

다음을 실행합니다.

git commit -am "message";git push

배치 파일 사용:

@ECHO OFF
SET /p comment=Comment:
git add *
git commit -a -m "%comment%"
git push

이 답변에서 언급한 것처럼 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"를 쓰기만 하면 됩니다.

macOS 사용자의 경우:

  1. 터미널이나 iTerm2 또는 사용하는 다른 터미널을 엽니다.

  2. 명령을 사용하여 사용자 프로필 폴더로 이동~/의 기본 폴더입니다..bash_profile파일:

User folder example

  1. 유형nano .bash_profile이 명령은 다음을 엽니다..bash_profile터미널에서 가장 사용하기 쉬운 텍스트 편집기로 문서화(또는 아직 존재하지 않는 경우 작성) –nano.

  2. 이제 파일을 간단히 변경할 수 있습니다.터미널 프롬프트를 변경하려면 다음 코드 행을 붙여넣으십시오.

function lazygit() {
    git add .
    git commit -a -m "$1"
    git push
}

Nano text editing

  1. 이제 입력하여 변경 내용 저장ctrl + o리턴을 눌러 저장합니다.그럼 종료nano타이프로ctrl + x.

  2. 이제 변경 사항을 활성화해야 합니다.유형source .bash_profile(또는). ~/.bash_profile)을 클릭하고 변경 사항을 확인합니다.

  3. iTerm2에서Preferences/Profiles/General/Command로 설정한.Login Shell그리고.Send text at start로.source ~/.bash_profile따라서 각 macOS를 다시 시작한 후 수동으로 만들 필요가 없습니다.iTerm 2 preferences

자격 증명: https://natelandau.com/my-mac-osx-bash_profile

MAC VSC 사용자에게 가장 적합한 설정은 다음과 같습니다.

'shift+sshift+'를 누릅니다.P' 및 유형:

Shell Command: install 'code' command in PATH

ENTER를 누릅니다(이렇게 하면 bash_profile에 쉽게 액세스할 수 있는 코드 명령이 설치됩니다).

이제 실행할 수 있습니다.code ~/.bash_profile빈 bash_profile을 엽니다.

새 기능을 입력합니다.

function lazygit() {
    git add .
    git commit -m "$*"
    git push
}

이제 VSC 다시 시작

변경하고 저장한 후 입력합니다.lazygit message세 가지 명령을 동시에 실행하는

위 스크립트에는 몇 가지 문제가 있습니다.

shift 키를 누르면 매개 변수 $1이 "인식"됩니다. 그렇지 않으면 "인식" 키가 이를 읽고 "인식"합니다.

내 팁:

git config --global alias.acpp '!git add -A&branchatu="$(git symbolic-ref HEAD 2>/dev/heads)" &&branchatu=${gitatu##refs/heads/} &&git commit -m "$1" &shift >&git pull -u origin $git pushu -u origin $tu"

git commit의 svn과 유사한 동작을 원할 경우, .gitconfig의 git 별칭에 이 동작을 사용합니다.

commit = "!f() { git commit \"$@\" && git push; };f"

다음 솔루션은 푸시하기 전에 변경 사항을 확인하기 위한 사용자 검사를 추가합니다.취소하면 명령이 반환됩니다.그리고 그 모든 것은 현지 레포에 변화가 있을 경우에만 일어날 것입니다.

### 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
}

생선 껍질을 사용하는 경우(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 에서 Gist로도 찾을 수 있습니다.

이미 여러 가지 좋은 솔루션이 있지만, 제가 원하는 방식으로 작업할 수 있는 보다 우아한 솔루션이 있습니다.

저는 "git-put"이라는 스크립트를 경로에 넣었습니다. 여기에는 다음이 포함됩니다.

#!/bin/bash
git commit "$@" && git push -u

실행할 수 있습니다.

git put -am "나의 커밋 메시지"

..모든 파일을 추가하고 커밋한 후 푸시합니다.

(저는 이 문제와 관련이 없지만 어쨌든 저는 이것을 하기를 좋아하기 때문에 "-u"도 추가했습니다.따라서 항상 업스트림 분기가 풀링되도록 설정됩니다.)

이 접근 방식은 모든 파일을 추가하지 않고("-a" 생략) "gitput"을 사용하거나 커밋할 수 있는 다른 옵션을 사용할 수 있기 때문에 좋습니다.또한 "put"은 "push"와 "commit"의 짧은 합성어입니다.

VSCode를 사용하는 경우 이 확장을 다운로드하여 간단한 키보드 바로 가기 하나로 수행할 수 있습니다.

제 대답을 보세요. 모든 것을 한 줄에 추가했습니다.

alias gitcomm="echo 'Please enter commit message';read MSG ;git add --all;git commit -am=$MSG;git push"

명령을 위해 이 .sh 스크립트를 수행했습니다.

#!/bin/sh
cd LOCALDIRECTORYNAME/  
git config --global user.email "YOURMAILADDRESS"
git config --global user.name "YOURUSERNAME"
git init
git status
git add -A && git commit -m "MASSAGEFORCOMMITS"
git push origin master

질문에 어떤 셸이 명시되어 있지 않기 때문에 이전 답변을 기반으로 한 esshell 버전이 있습니다.이것은 ~/.emacs.d/esshell/sshell에 있을 수 있는 esshell 별칭 파일에 포함됩니다. 첫 번째 파트 z https://github.com/rupa/z/ 을 추가했습니다. 이를 통해 현재 디렉터리가 무엇이든 빠르게 실행할 수 있습니다.

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

그것은 두 글자로 되어 있습니다.c그리고.pGit 저장소로 작업하는 동안 사용합니다.또는 사용할 수 있습니다.g한 글자로 모든 것을 하는 대신에.

별칭 및 함수의 전체 목록: https://gist.github.com/matt360/0c5765d6f0579a5aa74641bc47ae50ac

명령 그룹화에 적합합니다.

그룹화 명령

list; } 명령 목록을 중괄호로 묶으면 현재 셸 컨텍스트에서 목록이 실행됩니다.하위 셸이 작성되지 않습니다.세미콜론(또는 새 줄) 다음 목록이 필요합니다.

legit(){ git add --all; git commit -m "$1"; git push origin master; }
legit 'your commit message here'

언급URL : https://stackoverflow.com/questions/19595067/git-add-commit-and-push-commands-in-one

반응형