Bagaimana cara menambahkan banyak file ke Git secara bersamaan

120

Ini akan menjadi penggunaan git pertama saya. Saya telah menambahkan file baru (banyak) ke folder / proyek (git repositori lokal).

Saya pergi melalui tutorial dan forum online dan melihat saya bisa melakukannya

git commit -a

Jadi saya pergi ke folder dasar repositori dan melakukan a

sudo git commit -a

Tapi kemudian, beberapa layar muncul dan meminta saya untuk menambahkan komentar yang saya lakukan. saya tidak tahu bagaimana melanjutkan atau keluar. Saya tidak ingin mengacaukan jadi saya melakukan ctrl + Z dan tidak melakukan apapun.

Bisakah kalian menjelaskan perintah yang perlu saya gunakan?

git commit -a 

dan

git push?
kishore.
sumber
1
git commit -amembuka editor untuk Anda mengetik pesan komit. Masukkan pesan yang ingin Anda lihat sebagai log dan keluar dari editor. Ini melengkapi komit. Tindak lanjuti dengan mendorong perubahan Anda ke repositori jarak jauh menggunakan git push <remote name> <branch name>sepertigit push remote master
Bhaskar
3
juga perhatikan, Anda tidak perlu (dan tidak seharusnya) menggunakansudo
dax
Terima kasih atas balasannya Jika saya tidak menggunakan sudo saya mendapatkan kesalahan izin ditolak.
kishore.
2
Setelah menggunakan sudo sebelumnya, Anda mungkin memiliki file di direktori kerja Anda yang sekarang secara keliru dimiliki oleh root. Pada titik ini melakukan operasi lain tanpa sudo akan menyebabkan kesalahan izin ditolak karena Anda tidak dapat mengubah file yang dimiliki oleh root. Repositori Anda mungkin sedikit berantakan dan mungkin yang terbaik adalah memulai kembali (dan jangan gunakan sudo).
Greg Hewgill
jika Anda ingin menambahkan semua file Anda dapat menggunakan `git add -a`. Tetapi jika Anda ingin menambahkan beberapa file yang dipilih. Anda dapat menggunakan `git add -i '. silakan lihat git-scm.com/book/en/v2/Git-Tools-Interactive-Staging ini . ini akan membantumu.
Kapila Ranasinghe

Jawaban:

120

Untuk menambahkan semua perubahan yang Anda buat:

git add .

Untuk mengikatnya:

git commit -m "MY MESSAGE HERE" # -m adalah flag pesan

Anda dapat menggabungkan langkah-langkah tersebut seperti ini:

git commit -a -m "MY MESSAGE HERE"

Untuk mendorong perubahan yang Anda lakukan dari repositori lokal ke repositori jarak jauh Anda:

git push origin master

Anda mungkin harus mengetikkan nama pengguna / kata sandi Anda untuk github setelah ini. Inilah primer yang bagus tentang penggunaan git. Agak tua, tetapi mencakup apa yang terjadi dengan sangat baik.

dax
sumber
Akan -amenambahkan file baru (tidak bertahap) sebelum komit?
SabreWolfy
git commit -aadalah singkatan dari git commit --all, jadi ya, itu akan.
dax
1
$ man git-commitmenyertakan ini untuk -a: "Beri tahu perintah untuk secara otomatis mengubah file yang telah dimodifikasi dan dihapus, tetapi file baru yang belum Anda beri tahu Git tidak terpengaruh.", itulah sebabnya saya bertanya.
SabreWolfy
Untuk kelengkapan, cara termudah untuk menambahkan beberapa file dari satu jenis adalah menggunakan asterisk, misalnya untuk html gunakan "git add * .html"
Inyoka
382

Gunakan git addperintah, diikuti dengan daftar nama file yang dipisahkan spasi. Sertakan jalur jika di direktori lain, mis directory-name/file-name.

git add file-1 file-2 file-3
Reggie Pinkham
sumber
1
Hanya menentukan nama file memberikan kesalahan ini "fatal: pathspec 'filename.java' tidak cocok dengan file apapun". Sebagai gantinya tentukan seluruh jalur file dan nama file seperti ini 'git add long / path / {file1, file2, ..., filen}'
Shravan Ramamurthy
4
Ini tidak berfungsi ketika salah satu nama file menyertakan spasi dengan git 1.9.5
Maxime Helen
Kita perlu menghapus "<" dan ">" dari ini. Ini akan membingungkan seseorang.
Saeed Entezari
30

Seperti yang telah disebutkan beberapa orang, cara yang mungkin adalah menggunakan pementasan interaktif git . Ini bagus bila Anda memiliki file dengan ekstensi berbeda

$ 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>

Jika Anda menekan 2 maka enterAnda akan mendapatkan daftar file yang tersedia untuk ditambahkan:

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

Sekarang Anda hanya perlu memasukkan nomor file yang ingin Anda tambahkan, jadi jika kami ingin menambahkan TODOdan index.htmlkami akan mengetik1,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>>

Anda lihat * sebelum nomor? itu berarti file telah ditambahkan.

Sekarang bayangkan Anda memiliki 7 file dan Anda ingin menambahkan semuanya kecuali yang ke-7? Tentu kita bisa mengetik 1,2,3,4,5,6tapi bayangkan alih-alih 7 kita punya 16, itu akan cukup merepotkan, bagusnya kita tidak perlu mengetik semuanya karena kita bisa menggunakan range, dengan mengetik1-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>>

Kami bahkan dapat menggunakan beberapa rentang, jadi jika kami ingin dari 1 hingga 3 dan dari 5 hingga 7 kami mengetik 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>>

Kita juga dapat menggunakan ini untuk menghapus file, jika kita mengetik -number, jadi jika kita ingin menghapus file nomor 1 kita akan mengetik -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>>

Dan seperti yang dapat Anda bayangkan, kami juga dapat menghapus berbagai file, jadi jika kami mengetik -rangesemua file pada rentang tersebut tidak akan ditampilkan. Jika kami ingin menghapus semua file dari 5 hingga 7, kami akan mengetik -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>>
Fabio Antunes
sumber
2
secara pribadi saya suka cara ini. mudah digunakan jika Anda memiliki lebih banyak file untuk dikerjakan dan operasi lainnya.
Kapila Ranasinghe
Setelah Anda selesai, bagaimana Anda menyelesaikan pementasan interaktif?
Crparedes
1
@Crparedes setelah Anda menambahkan file, jika Anda menekan enter lagi ini akan kembali ke menu, maka Anda harus memilih opsi 7untuk keluar dari pementasan interaktif.
Fabio Antunes
28

Anda juga dapat memilih banyak file seperti ini

git add folder/subfolder/*

Ini akan menambahkan semua file di subfolder yang ditentukan. Sangat berguna ketika Anda mengedit banyak file tetapi Anda hanya ingin mengkomit beberapa di antaranya ...

nadalsol
sumber
14

Jika Anda ingin menambahkan banyak file dalam folder tertentu, Anda dapat membaginya menggunakan {,}. Ini luar biasa karena tidak mengulangi jalur yang panjang, misalnya

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

Berhati-hatilah untuk tidak menempatkan spasi di antara ,.

EliuX
sumber
apa panjang / path / disini? @EliuX
lalumar
long / path bisa menjadi path string dengan panjang yang sangat panjang, jadi lebih nyaman tidak mengulang bagian tersebut, tanpa harus cdmasuk ke dalamnya
EliuX
4

Ketika Anda mengubah file atau menambahkan yang baru dalam repositori, Anda harus mengaturnya terlebih dahulu.

git add <file>

atau jika Anda ingin mementaskan semua

git add .

Dengan melakukan ini, Anda memberi tahu untuk git file apa yang Anda inginkan di komit berikutnya. Kemudian Anda melakukan:

git commit -m 'your message here'

Kau gunakan

git push origin master

dimana origin adalah cabang repositori jarak jauh dan master adalah cabang repositori lokal Anda.

somi
sumber
Terima kasih!. Pada perintah terakhir, git push origin master. Saya sebenarnya sedang mengerjakan nama cabang yang berbeda (yang dibuat dari cabang master). JADI apakah saya perlu memasukkan nama cabang atau master asal saya. Terima kasih sekali lagi
kishore.
Tidak masalah. :) Ya, Anda harus menggunakan nama cabang Anda, master asal hanyalah contoh.
somi
1

Sepertinya git meluncurkan editor Anda (mungkin vi) sehingga Anda dapat mengetik pesan komit. Jika Anda tidak terbiasa vi, mempelajari dasar-dasarnya mudah . Alternatifnya adalah:

  • Gunakan git commit -a -m "my first commit message"untuk menentukan pesan komit pada baris perintah (menggunakan ini tidak akan meluncurkan editor)

  • Setel EDITORvariabel lingkungan ke editor yang Anda kenal

Greg Hewgill
sumber
Terima kasih banyak semua orang yang menjawab. Saya berhasil berkomitmen dan mendorong file saya.
kishore.
1

Jika Anda ingin stage dan commit semua file Anda di Github lakukan hal berikut;

git add -A                                                                                
git commit -m "commit message"
git push origin master
Johnson Ogwuru
sumber
0

👉 langkah1 .

git init

👉 langkah2.

a) untuk semua file

git add -a

b) hanya folder tertentu

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

👉 langkah3.

git commit -m "Your message about the commit"

👉 langkah4.

masukkan deskripsi gambar di sini

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

👉 langkah5 .

git push -u origin master
git push origin master

jika Anda menghadapi kesalahan ini daripada

 ! [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.

👉 Gunakan perintah ini

git push --force origin master
Harish Kumawat
sumber