단일 명령을 사용하여 새로 추가 된 파일을 포함하여 모든 파일을 준비하고 커밋하려면 어떻게해야합니까?


425

단일 명령을 사용하여 새로 추가 된 파일을 포함하여 모든 파일을 준비하고 커밋하려면 어떻게해야합니까?


3
실망스러운 점은 이것이 가능했으며 새로운 파일을 커밋하고 추가하는 표준 구문이었습니다. git commit -a 그러나 실제로는 git 구문이 변경되었습니다. 기존 사용자를 혼동시키고 (스크립트를 파기) 유용한 기능을 제거하고 불필요한 플래그를 대체했습니다.
fijiaaron

1
git add -A에 하나의 명령으로 git commit 이 중복 됩니까? . 여기에 허용 된 답변은 여기에 허용 된 답변과 비슷하지만 관련된 타이핑을 단축하기 위해 git 별칭을 만드는 것을 제안합니다 (그렇게하는 방법을 보여줍니다).
Mark Amery

답변:


568

않습니다

git add -A && git commit -m "Your Message"

"단일 명령"으로 계산?

아래 @thefinnomenon의 답변을 기반으로 편집하십시오 .

로 사용하려면 다음을 git alias사용하십시오.

git config --global alias.coa '!git add -A && git commit -m'

새 파일을 포함한 모든 파일을 다음과 같은 메시지와 함께 커밋합니다.

git coa "A bunch of horrible changes"

설명 ( git add문서에서 ) :

-A, --all, --no-ignore-removal

작업 트리가 파일과 일치하는 위치뿐만 아니라 이미 항목이있는 인덱스를 업데이트하십시오. 작업 트리와 일치하도록 인덱스 항목을 추가, 수정 및 제거합니다.

<pathspec>-A 옵션을 사용할 때 아무 것도 지정 하지 않으면 전체 작업 트리의 모든 파일이 업데이트됩니다 (이전 버전의 Git은 현재 디렉토리 및 하위 디렉토리로 업데이트를 제한하는 데 사용됨).


3
커밋 메시지는 어떻습니까?
Narendra Jaggi

11
@NarendraJaggi git add -A && git commit -m "당신의 메시지"
Dr.jacky

1
그것을 자신의 .sh 또는 .bat 파일에 넣고 하나의 명령으로 사용할 수 있습니다. 이 메시지는 param1
BlueWizard

또한 .bashrc에 기본 git 명령에 대한 단축키를 추가 할 수 있습니다 : alias gpl = 'git pull'alias gps = 'git push'alias gc = 'git commit'alias gs = 'git status'alias gd = 'git diff' alias ga = 'git add'alias gck = 'git checkout'alias gb = 'git branch'alias gl = 'git log'alias lcp = 'git format-patch -1 HEAD'alias resetToMaster = 'git reset --hard origin / master '
ni3

3
powershell에서 ";"을 "&&"로 바꿉니다. 다음과 같이 두 명령을 모두 실행하려면 :git add -A ; git commit -m "Your Message"
Rafael Miceli

415

이 명령은 수정 된 모든 파일을 추가하고 커밋 하지만 새로 작성된 파일 은 커밋 하지 않습니다 .

git commit -am  "<commit message>"

남자 git-commit에서 :

   -a, --all
       Tell the command to automatically stage files that have been modified
       and deleted, but new files you have not told Git about are not
       affected.

101
이것은 실제로 질문에 대답하지 않으며, 실제로 (굵게 표시) 해결책을 찾는 주요 부분 중 하나를 제외합니다.
Arunas

6
추적되지 않은 파일을 추가하거나 커밋하지 않습니다.
b15

3
그러나 "git add -A"이후에 커밋 할 때 가장 일반적인 상황을 다루며 코드에서 작은 것을 변경하는 것을 잊어 버렸습니다. 나는 처음부터 같은 커밋 메시지를 여러 번 쓰는 것을 싫어한다
KorbenDallas

하지만 스레드 스타터는 모든 파일, 그래서, 나는이 하나가 계산하지 않습니다 생각 말한다
프레드릭 지 Sandalo

또한 .bashrc에 기본 git 명령에 대한 단축키를 추가 할 수 있습니다 : alias gpl = 'git pull'alias gps = 'git push'alias gc = 'git commit'alias gs = 'git status'alias gd = 'git diff' alias ga = 'git add'alias gck = 'git checkout'alias gb = 'git branch'alias gl = 'git log'alias lcp = 'git format-patch -1 HEAD'alias resetToMaster = 'git reset --hard origin / master '
ni3

26

이 기능을 사용합니다 :

gcaa() { git add --all && git commit -m "$*" }

내 zsh 구성 파일에서 다음을 수행 할 수 있습니다.

> gcaa This is the commit message

모든 파일을 자동으로 스테이징 및 커밋합니다.


1
bash와 같은function gcaa() { git add --all && git commit -m "$*" && git push }
Damilola

1
@Damilola -bash-like 은 무슨 뜻 인가요? 대답의 구문은 bash에서도 작동합니다
Eliran Malka

이것은 좋았습니다. 이전에 별명을 사용 gaa && gc -m "my commit"했지만 훨씬 더 좋습니다 ... <bashrc를 변경하기 위해
scurries


24

왜 이러한 답변이 내가 올바른 해결책이라고 생각하는 것에 따라 춤을 추는 지 모르겠지만 여기에서 가치가있는 것은 내가 사용하는 것입니다.

별명을 작성하십시오.

git config --global alias.coa '!git add -A && git commit -m'

모든 파일을 추가하고 메시지로 커밋하십시오.

git coa "A bunch of horrible changes"

참고 : coa커밋은 짧으며 마음이 원하는 것으로 바꿀 수 있습니다.


1
이것 이외의 대답은 메시지로 모든 것을 커밋하는 프로세스를 단순화합니다.
Seph Reed

2
이것은 굉장하고 git alias길 을 찾고 있었고 나머지는 지루합니다.
Qortex

9

git에서의 커밋은 상황에 따라 여러 단계 프로세스 또는 한 단계가 될 수 있습니다.

  1. 이 상황은 여러 파일이 업데이트되어 커밋하려는 위치입니다.

    커밋하기 전에 수정 된 파일을 모두 추가해야합니다.

    git add -A
    

    또는

    git add --all
    
  2. 그 후 추가 된 모든 파일 커밋을 사용할 수 있습니다

    git commit
    

    이것으로 커밋에 대한 메시지를 추가해야합니다.


6

현재 브랜치에서 변경 사항을 숨기는 "빠르고 더러운"방법을 원하면 다음 별명을 사용할 수 있습니다.

git config --global alias.temp '!git add -A && git commit -m "Temp"'  

해당 명령을 실행 한 후에 git temp는 git이 "Temp"라는 커밋으로 현재 분기에 대한 모든 변경 사항을 자동으로 커밋하도록 입력 하면됩니다. 그런 다음 git reset HEAD~나중에 변경 사항을 "커밋 해제"하여 계속 작업하거나 git commit --amend커밋에 변경 사항을 추가하거나 올바른 이름을 지정할 수 있습니다 .


4

내 구성에는 두 개의 별칭이 있습니다.

alias.foo=commit -a -m 'none'
alias.coa=commit -a -m

너무 게으 르면 모든 변경 사항을 커밋합니다.

git foo

빠른 커밋을하기 위해

git coa "my changes are..."

coa는 "commit all"을 의미합니다


9
나는 "없음"이라는 커밋 메시지로 가득 찬 저장소를 사용하는 것을 싫어하며 그에 따라 PR도 거부합니다. 불행히도, 좋은 커밋 메시지를 갖는 것의 중요성을 배울 수있는 유일한 방법은 오래 전에 작성된 것을 감사로 돌아 가야 할 때입니다 ( "이 줄은 버그를 일으키는 원인이됩니다. 변경 / 제거하면 중단됩니까? ").
gregmac

1
"없음"을 가진 커밋은 오래 머물러서는 안됩니다. 일반적으로 필자는 자체 기능 분기를 시작하고 마이크로 커밋을 수행하여 병합하기 전에 더 합리적인 것으로 스쿼시합니다. 분명히 각각의 수정 된 기능에 대해 커밋하고 git log가 마음에 들지 않는 사람들은 이것을 필요로하지 않습니다.
SystematicFrank

1
이 목적을 위해 '없음'대신 'wip'( '진행중인 작업'의 줄임말)을 사용하며 이러한 커밋을 내 개인 브랜치에만 푸시합니다.
Sergej Koščejev

"wip"또는 "none"커밋은 다른 사람들이 볼 수있는 브랜치로 만들고 메시지 로그를 오염시키기 때문에 여전히 도움이되지 않습니다. 푸시하기 전에 커밋을 모두 스쿼시하고 있다면 허용되지만 팀에게는 여전히 성가신 일입니다.
Jordan

이것은 훌륭한 아이디어이며 다음 답변과 결합하여 실제로 OP에 대해 100 % 정확한 답변을 얻을 수 있습니다. 실제로 내 대답에 필요한 단계 (git-bash 사용)를 간략하게 설명했습니다. ( stackoverflow.com/a/43442269/869239 )
VeRo

3

주어진 명령을 실행

git add . && git commit -m "Changes Committed"

그러나 단일 명령처럼 보이지만 두 개의 개별 명령이 하나씩 실행됩니다. 여기서 우리 &&는 그것들을 결합하는 데 사용 했습니다. 달리고 달리는 git add .것과 크게 다르지 않습니다 git commit -m "Changes Committed". 여러 명령을 함께 실행할 수 있지만 여기서 순서는 중요합니다. 스테이징 및 커밋과 함께 변경 사항을 원격 서버에 적용하려면 주어진대로 수행 할 수 있습니다.

git add . && git commit -m "Changes Committed" && git push origin master

대신 시퀀스를 변경하고 push를 먼저 넣으면 먼저 실행되며 스테이징 및 커밋 후에 이미 푸시를 실행했기 때문에 원하는 푸시를 제공하지 않습니다.

&&첫 번째 명령이 성공적으로 돌아 오거나 오류 수준이 0 이면 두 번째 명령을 줄에서 실행 합니다. 반대의 &&is ||는 첫 번째 명령이 실패하거나 오류 수준이 1 인 경우 두 번째 명령을 실행합니다.

또는 alise 를 만들어서 다음 git config --global alias.addcommit '!git add -a && git commit -m'과 같이 사용할 수 있습니다.git addcommit -m "Added and commited new files"


2

훌륭한 답변이지만, 단일 라인을 찾으면 연결하고 별칭을 지정하고 편의를 즐길 수 있습니다.

git add * && git commit -am "<commit message>"

한 줄이지 만 두 개의 명령이며, 언급 한 것처럼이 명령의 별칭을 지정할 수 있습니다.

alias git-aac="git add * && git commit -am " (짧은 공간이 중요합니다.) 새로운 숏 핸드 명령을 매개 변수화하기 때문입니다.

지금부터이 별명을 사용하게됩니다.

git-acc "<commit message>"

당신은 기본적으로 말합니다 :

git, 추적되지 않은 모든 파일을 추가 하고이 커밋 메시지로 커밋하십시오.

당신이 리눅스를 사용하기를 바란다. 이것이 도움이되기를 바란다.


0

git-commitall몇 가지 git 명령을 사용하여 수행하려는 작업을 수행 하는 작은 스크립트 (Ian Clelland의 답변 참조)를 작성할 수 있습니다 .
이 스크립트를 어디에서나 사용할 수 있습니다 $PATH. 당신은 그것을 호출 할 수 있습니다 git commitall... 매우 편리합니다!

여기 에서 발견됨 (질문과 모든 답변은 불행히도 삭제되었으며 높은 평판으로 볼 수 있음)


전체 스레드는 좋은 독서입니다 ... 그것이 내가 연결 한 이유입니다 ^^
tanascius

@Dimitri-불행히도 일부 studid 사람들은이 유용한 스레드를 삭제하기로 결정했습니다. 그것은 여전히 ​​높은 명성으로 볼 수 있으므로 여기에 링크를 유지하십시오.
tanascius

0

사용해보십시오 :

git add . && git commit -m "your message here"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.