Dosya değişikliğini kaçak durum penceresinden nasıl atabilirim?


33

İçinde zaman kaçak-eklentisi durum penceresinde kullanılarak erişilen :Gstatus, bu kullanarak bir dosya için fark değişikliklere mümkündür Dve kullanma taahhüt için dosyaları geçiş -.

Değişikliklerden vazgeçmek için benzer bir kısayol var mı git checkout -- filename?

Güncelleştirme:

Kaçakların github sayfasında bir özellik isteği bulundu Sayı # 97: Dosyaları teslim alma / kaldırma kısayolu

Buna göre tercih edilen yol kullanıyor :Gread :w

Güncelleme 2:

Haziran 2014’ten bu yana aşağıdaki Anson’unU cevapladığı şekliyle kullanmak mümkün .

Güncelleme 3: 3 Ocak 2019’dan bu yana anahtarbağX

Yanıtlar:


27

Bu işlevsellik Haziran 2014'te eklenmiştir ve varsayılan olarak ile eşleştirilmiştir U.

Bu bilgi parçası aşağıdaki yardım dosyasında bulunur :h :Gstatus:

     U     |:Git| checkout HEAD

Özellik isteği ve tartışma:
https://github.com/tpope/vim-fugitive/issues/97

Taahhüt:
https://github.com/tpope/vim-fugitive/commit/061a81f247538aeb61e165e1551355f289d52f63


Bu belgelenmemiş ise güvensiz olarak yorumlanabilir. Belgelenmemiş sihirli bir tuşa basılması nedeniyle yerel değişikliklerinizi engellediğinizi bulmak zor olmaz mıydı?
07

2
2019 Şimdi güncelle Bu kadarX
Oguz Bilgic

düzenleme ayrıcalığına sahip olan herkes, lütfen X’e düzenler mi?
chriz

15

Sen kullanabilirsiniz kaçak ‘ın Gread(yani bu değil itibaren, bir dosyanın tampon yapılmalıdır tamponunun dosyanın çeşitli alternatif sürümleri ile bir tampon içeriğini değiştirmek için komut :Gstatustampon).

  • :Gread(bağımsız değişken olmadan) dosyanın sürümünü dizininden kullanır .
  • :Gread - HEAD taahhüdünden dosyanın sürümünü kullanacaktır.

Kaçak destekleyici :help fugitive-revisiondiğer revizyon şartnamelerinin listesi için belgelere bakın (yukarıdaki ikisi muhtemelen en yararlı olanlarıdır).

İş :Greadakışı şöyle devam eder:

  1. :Gread
  2. kaçak geçerli arabelleği temizler ve dizindeki içerikten okur
  3. Sonuç : Tampon şimdi dizinle aynı içeriğe sahip. Çalışan ağaç dosyası değişmedi.
  4. :wDosyayı çalışma ağacına kaydetmek için ile devam edebilirsiniz (veya :Gread|whemen kaydetmek isteyip istemediğinizi biliyorsanız kullanın ).

İş :Git checkout -- %akışı şöyle devam eder:

  1. :Git checkout -- %
  2. Git, dizindeki dosyanın sürümünü çalışma ağacındaki dosyaya kopyalar.
  3. Vim, dosyanın düzenleyicinin dışında değiştiğini fark eder ve sizden onu yok saymanızı veya yeniden yüklemenizi ister.
  4. Vim'e dosyayı yeniden yüklemesini söyle.
  5. Sonuç : Hem çalışan ağaç dosyası hem de tampon, şimdi dizinden içeriğe sahip.

Özet: :Gread“düzenleme başladıktan sonra dosya değişti” komut isteminden kaçınır ve dosyayı çalışma ağacında ne zaman değiştirmek istediğinize karar vermenizi sağlar.


Tampon, çalışma ağacından gelen dosya yerine dosyanın dizin aşamasını temsil ettiğinde, dosyanın indeksinin 0 aşaması yerine, çalışma ağacındaki :Greaddiskte bulunduğu dosyanın içeriğini okur.


Gstatus'un dosyayı geri döndürmesi için eşleme:au FileType gitcommit nmap <buffer> U :Git checkout -- <c-r><c-g><cr>
majkinetor

1

Gstatus'un dosyayı geri döndürmesi için eşleme:

au FileType gitcommit nmap <buffer> U :Git checkout -- <c-r><c-g><cr>

Bu harika, sadece olumsuz, dosyanın diskte değiştiği diyaloğu ve yeniden yüklemek istersem alacağım. Sessiz olsaydı iyi olurdu.
tidbeck

1
Dosyanın gerçekte geri alındığına dair onay aldığınızda, bu daha iyi IMO'dur. Ancak otomatik sessiz yükleme 'autoread' seçeneği ( :help autoread) ile yapılabilir. Diğer o zaman bufdo eyukarıda içinde olabilir au.
majkinetor

0

Peki denedin :help fugitivemi?

Görünüşe göre hayır, bu Git özelliği için kısayol yok.


Evet yaptım. Daha önce hiç bulunmayan yardımda bir özellik bulamadığım zamanlar oldu. Program / eklenti için hiçbir zaman yardım etmeyen bir özellik hakkında soru sormamanız gerektiğini düşünüyor musunuz?
tidbeck

Evet, aynı zamanda benim de başıma geldi: Yapabileceğim bir fonksiyon vardı :callama buna bağlı bir komutu yoktu. Eklentinin adını hatırlamıyorum… Hizala? her neyse, fikrimin sorulmadan önce bir dokümanı okuması gerektiği. Hangisini yaptın? Yani bu harika. Ancak mantıksal ikinci adım, dokümanları okuduktan sonra, eklentinin kaynağına bakmak ve orada yararlı bir işlev olup olmadığını görmek için IMO olacaktır. Hangi yapmalısın. Fakat AFAIK, kaçak olanlarla uğraşmadığı git checkoutiçin şansınız zayıf. Muhtemelen geri çekilmen gerekecek :!git checkout -- filename.
romainl

Tamam, açıklama için teşekkürler. Kaynak koduna göz atmak için geçerli bir noktaya değindiğinizi düşünüyorum ama aynı zamanda bilgi sadece kaynak kodda mevcutsa, burada geçerli bir KG olabilir. Cevabınızı kabul edip kullanmaya devam edecek :Git checkout -- %.
tidbeck

0

Vim ile ilgisi olmasa da, bazen yaptığımı söylemeyi düşündüm:

$ git status
...
#
#   modified:   .rvmrc
#   modified:   app/views/admin/base/index.html.erb
#   modified:   config/routes.rb
#
...

$ # mouse-copy the files i want to reset, and paste them into the next command

$ cat | xargs git checkout
app/views/admin/base/index.html.erb
config/routes.rb
^D

işi çabucak bitirmek.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.