Git에 동시에 여러 파일을 추가하는 방법


120

이것은 나의 첫 번째 자식 사용입니다. 폴더 / 프로젝트 (git local repository)에 새 파일 (많은)을 추가했습니다.

온라인 튜토리얼과 포럼을 살펴 봤는데

git commit -a

그래서 저장소의 기본 폴더로 이동하여

sudo git commit -a

그런데 어떤 화면이 나타나서 제가하는 댓글을 추가하라고합니다. 진행하거나 종료하는 방법을 모르겠습니다. 나는 엉망으로 만들고 싶지 않아서 ctrl + Z를하고 아무것도하지 않았습니다.

제가 사용해야하는 명령에 대해 설명해 주시겠습니까?

git commit -a 

git push?

1
git commit -a커밋 메시지를 입력 할 수있는 편집기가 열립니다. 로그로 보려는 메시지를 입력하고 편집기를 종료하십시오. 이것으로 커밋이 완료됩니다. 원격 저장소로 사용하여 변경 사항을 밀어 그 후속 git push <remote name> <branch name>git push remote master
바스 카르

3
또한 사용할 필요가 없으며 사용해서는 안됩니다sudo
dax

답장을 보내 주셔서 감사합니다. sudo를 사용하지 않으면 권한 거부 오류가 발생합니다.
kishore.

2
이전에 sudo를 사용 했으므로 이제는 루트가 실수로 소유 한 파일이 작업 디렉토리에있을 수 있습니다. 이 시점에서 sudo 없이 다른 작업 수행 하면 루트가 소유 한 파일을 변경할 수 없기 때문에 권한 거부 오류가 발생합니다. 저장소가 약간 엉망 일 수 있으며 다시 시작하는 것이 가장 좋을 수 있습니다 (그리고 sudo를 사용 하지 마십시오 ).
Greg Hewgill

모든 파일을 추가하고 싶다면`git add -a`를 사용할 수 있지만, 여러 개의 선택된 파일을 추가하고 싶다면. `git add -i '를 사용할 수 있습니다. 이 git-scm.com/book/en/v2/Git-Tools-Interactive-Staging을 참조하십시오 . 이것은 당신을 도울 것입니다.
Kapila Ranasinghe

답변:


120

모든 변경 사항을 추가하려면 :

git add .

커밋하려면 :

git commit -m "MY MESSAGE HERE" # -m은 메시지 플래그입니다.

이러한 단계를 다음과 같이 조합 할 수 있습니다.

git commit -a -m "MY MESSAGE HERE"

커밋 된 변경 사항을 로컬 저장소에서 원격 저장소로 푸시하려면 :

git push origin master

그 후에 github의 사용자 이름 / 암호를 입력해야 할 수도 있습니다. 다음은 git 사용에 대한 좋은 입문서입니다. 조금 오래되었지만 정말 잘 진행되고있는 것을 다룹니다.


-a커밋하기 전에 새로운 (unstaged) 파일을 추가?
SabreWolfy

git commit -a는의 약어 git commit --all이므로 그렇습니다.
dax

1
$ man git-commit이를 위해 포함 -a"수정 및 삭제,하지만 힘내 말하지 않은 새 파일에 대한 영향을받지 않는 한 자동으로 무대 파일에 명령을 말해."내가 묻는 이유입니다 :.
SabreWolfy

완전성을 위해 한 유형의 여러 파일을 추가하는 가장 쉬운 방법은 별표를 사용하는 것입니다. 예를 들어 html의 경우 "git add * .html"사용
Inyoka

382

git add명령 뒤에 공백으로 구분 된 파일 이름 목록을 사용합니다 . 다른 디렉토리에있는 경우 경로를 포함합니다 (예 : directory-name/file-name.

git add file-1 file-2 file-3

1
파일 이름을 지정하기 만하면 "심각한 : pathspec 'filename.java'가 파일과 일치하지 않았습니다."라는 오류가 발생합니다. 대신이 같은 전체 파일 경로와 파일 이름을 지정 '/ 경로 / {파일 1, 파일 2, ..., filen} 긴 추가 자식'
Shravan Ramamurthy는

4
파일 이름 중 하나에 git 1.9.5와 함께 공백이 포함 된 경우 작동하지 않습니다.
Maxime Helen

여기서 "<"및 ">"를 제거해야합니다. 이것은 누군가를 혼란스럽게 할 것입니다.
Saeed Entezari

30

일부가 언급했듯이 가능한 방법은 git interactive staging을 사용하는 것입니다 . 확장자가 다른 파일이있을 때 유용합니다.

$ git add -i
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
  2:    unchanged        +1/-1 index.html
  3:    unchanged        +5/-1 lib/simplegit.rb

*** Commands ***
  1: status     2: update      3: revert     4: add untracked
  5: patch      6: diff        7: quit       8: help
What now>

를 누르면 2 다음 enter사용 가능한 파일의 목록을 얻을 것이다 추가 할 :

What now> 2
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
  2:    unchanged        +1/-1 index.html
  3:    unchanged        +5/-1 lib/simplegit.rb
Update>>

이제 우리가 추가 싶어 그렇다면, 당신은 추가 할 파일의 수를 삽입해야 그냥 TODO그리고 index.html우리는 입력합니다1,2

Update>> 1,2
           staged     unstaged path
* 1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
  3:    unchanged        +5/-1 lib/simplegit.rb
Update>>

당신은 볼 * 수 전에? 이는 파일이 추가되었음을 의미합니다.

이제 7 개의 파일이 있고 7 번째 파일을 제외한 모든 파일을 추가하고 싶다고 가정 해 보겠습니다. 물론 입력 할 수는 1,2,3,4,5,6있지만 7 대신 16이 있다고 상상해보세요. 상당히 번거 롭습니다. 범위를 사용할 수 있기 때문에 모두 입력 할 필요가 없습니다.1-6

Update>> 1-6
           staged     unstaged path
* 1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
* 4:    unchanged        +5/-1 file4.html
* 5:    unchanged        +5/-1 file5.html
* 6:    unchanged        +5/-1 file6.html
  7:    unchanged        +5/-1 file7.html
Update>>

여러 범위를 사용할 수도 있으므로 1에서 3까지, 5에서 7까지 원하는 경우 다음을 입력합니다 1-3, 5-7.

Update>> 1-3, 5-7
           staged     unstaged path
* 1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
  4:    unchanged        +5/-1 file4.html
* 5:    unchanged        +5/-1 file5.html
* 6:    unchanged        +5/-1 file6.html
* 7:    unchanged        +5/-1 file7.html
Update>>

를 입력하면 파일을 언 스테이징하는데도 사용할 수 -number있으므로 파일 번호 1을 언 스테이징하려면 다음을 입력합니다 -1.

Update>> -1
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
  4:    unchanged        +5/-1 file4.html
* 5:    unchanged        +5/-1 file5.html
* 6:    unchanged        +5/-1 file6.html
* 7:    unchanged        +5/-1 file7.html
Update>>

그리고 상상할 수 있듯이 파일 범위를 언 스테이징 할 수도 있으므로 해당 범위의 -range모든 파일을 입력하면 스테이징 이 해제됩니다. 5에서 7까지의 모든 파일을 언 스테이징하려면 다음을 입력합니다 -5-7.

Update>> -5-7
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
  4:    unchanged        +5/-1 file4.html
  5:    unchanged        +5/-1 file5.html
  6:    unchanged        +5/-1 file6.html
  7:    unchanged        +5/-1 file7.html
Update>>

2
개인적으로 나는 이런 식으로 좋아합니다. 커밋 할 파일과 기타 작업이 더 많을 때 사용하기 쉽습니다.
Kapila Ranasinghe

종료 한 후 대화 형 스테이징을 어떻게 완료합니까?
Crparedes

1
@Crparedes 파일을 추가 한 후 Enter 키를 다시 누르면 메뉴로 돌아가고 7대화 형 스테이징을 종료하는 옵션 을 선택해야합니다 .
Fabio Antunes

28

이와 같은 여러 파일을 선택할 수도 있습니다.

git add folder/subfolder/*

이렇게하면 지정된 하위 폴더의 모든 파일이 추가됩니다. 여러 파일을 편집 할 때 매우 유용하지만 일부 파일을 커밋하고 싶을 때 ...


14

특정 폴더에 여러 파일을 추가하려면을 사용하여 분할 할 수 있습니다 {,}. 이것은 긴 경로를 반복하지 않는 데 좋습니다.

git add long/path/{file1,file2,...,filen}

사이에 공백을 두지 않도록주의하십시오 ,.


여기에 long / path /는 무엇입니까? @EliuX
lalithkumar

long / path는 길이가 매우 긴 경로 문자열 일 수 있으므로 이러한 부분을 반복하지 않아도 더 편안 cd합니다.
EliuX

4

파일을 변경하거나 저장소에 새 파일을 추가 할 때 먼저 파일을 준비해야합니다.

git add <file>

또는 모든 무대를 원하는 경우

git add .

이렇게하면 다음 커밋에서 원하는 파일을 git에게 알려줍니다. 그런 다음 다음을 수행합니다.

git commit -m 'your message here'

너는 사용한다

git push origin master

여기서 origin은 원격 저장소 브랜치이고 master는 로컬 저장소 브랜치입니다.


감사합니다!. 마지막 명령에서 git push origin master. 실제로 다른 브랜치 이름 (마스터 브랜치에서 생성 된)을 작업하고 있습니다. 그래서 내 지점 이름이나 원산지 마스터를 변경해야합니까? 다시 한 번 감사드립니다
kishore.

문제 없습니다. :) 예, 지점 이름을 사용해야합니다. 원산지 마스터는 예일뿐입니다.
somi

1

vi커밋 메시지를 입력 할 수 있도록 git이 편집기 (아마도 )를 시작하는 것처럼 들립니다 . 당신이 익숙하지 않은 경우 vi,이다 기초를 쉽게 배울 수 . 대안은 다음과 같습니다.

  • 사용 git commit -a -m "my first commit message"(편집기를 실행되지 않습니다이 사용)가 명령 줄에 커밋 메시지를 지정할 수

  • EDITOR익숙한 편집기로 환경 변수 설정


답변 해주신 모든 분들께 감사드립니다. 내 파일을 성공적으로 커밋하고 푸시했습니다.
kishore.

1

Github에서 모든 파일을 준비하고 커밋하려면 다음을 수행하십시오.

git add -A                                                                                
git commit -m "commit message"
git push origin master

0

👉 step1 .

git init

👉 step2.

a) 모든 파일

git add -a

b) 특정 폴더 만

git add <folder1> <folder2> <etc.>

👉 step3.

git commit -m "Your message about the commit"

👉 step4.

여기에 이미지 설명 입력

git remote add origin https://github.com/yourUsername/yourRepository.git

👉 step5 .

git push -u origin master
git push origin master

이 오류가 발생하면

 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/harishkumawat2610/Qt5-with-C-plus-plus.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

👉이 명령 사용

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