1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-06-17 00:18:05 +02:00

Support select range for cherry pick

This requires us to change the 'v' keybinding for paste to something else,
now that 'v' is used globally for toggling range select. So I'm using
'shift+v' and I'm likewise changing 'c' to 'shift+c' for copying, so
that they're consistent.

We will need to clearly communicate this change in keybindings.
This commit is contained in:
Jesse Duffield
2024-01-13 17:40:28 +11:00
parent 54bd94ad24
commit 280b4d60f8
24 changed files with 148 additions and 104 deletions

View File

@ -122,7 +122,7 @@ You can also perform any these actions as a once-off (e.g. pressing `s` on a com
### Cherry-pick ### Cherry-pick
Press `c` on a commit to copy it and press `v` to paste (cherry-pick) it. Press `shift+c` on a commit to copy it and press `shift+v` to paste (cherry-pick) it.
![cherry_pick](../assets/demo/cherry_pick-compressed.gif) ![cherry_pick](../assets/demo/cherry_pick-compressed.gif)

View File

@ -249,9 +249,8 @@ keybinding:
amendToCommit: 'A' amendToCommit: 'A'
pickCommit: 'p' # pick commit (when mid-rebase) pickCommit: 'p' # pick commit (when mid-rebase)
revertCommit: 't' revertCommit: 't'
cherryPickCopy: 'c' cherryPickCopy: 'C'
cherryPickCopyRange: 'C' pasteCommits: 'V'
pasteCommits: 'v'
tagCommit: 'T' tagCommit: 'T'
checkoutCommit: '<space>' checkoutCommit: '<space>'
resetCherryPick: '<c-R>' resetCherryPick: '<c-R>'

View File

@ -88,7 +88,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>S</kbd>: Squash all 'fixup!' commits above selected commit (autosquash) <kbd>S</kbd>: Squash all 'fixup!' commits above selected commit (autosquash)
<kbd>&lt;c-j&gt;</kbd>: Move commit down one <kbd>&lt;c-j&gt;</kbd>: Move commit down one
<kbd>&lt;c-k&gt;</kbd>: Move commit up one <kbd>&lt;c-k&gt;</kbd>: Move commit up one
<kbd>v</kbd>: Paste commits (cherry-pick) <kbd>V</kbd>: Paste commits (cherry-pick)
<kbd>B</kbd>: Mark commit as base commit for rebase <kbd>B</kbd>: Mark commit as base commit for rebase
<kbd>A</kbd>: Amend commit with staged changes <kbd>A</kbd>: Amend commit with staged changes
<kbd>a</kbd>: Set/Reset commit author <kbd>a</kbd>: Set/Reset commit author
@ -101,8 +101,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: Open commit in browser <kbd>o</kbd>: Open commit in browser
<kbd>n</kbd>: Create new branch off of commit <kbd>n</kbd>: Create new branch off of commit
<kbd>g</kbd>: View reset options <kbd>g</kbd>: View reset options
<kbd>c</kbd>: Copy commit (cherry-pick) <kbd>C</kbd>: Copy commit (cherry-pick)
<kbd>C</kbd>: Copy commit range (cherry-pick)
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: View selected item's files <kbd>&lt;enter&gt;</kbd>: View selected item's files
<kbd>/</kbd>: Search the current view by text <kbd>/</kbd>: Search the current view by text
@ -248,8 +247,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: Open commit in browser <kbd>o</kbd>: Open commit in browser
<kbd>n</kbd>: Create new branch off of commit <kbd>n</kbd>: Create new branch off of commit
<kbd>g</kbd>: View reset options <kbd>g</kbd>: View reset options
<kbd>c</kbd>: Copy commit (cherry-pick) <kbd>C</kbd>: Copy commit (cherry-pick)
<kbd>C</kbd>: Copy commit range (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection <kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: View commits <kbd>&lt;enter&gt;</kbd>: View commits
@ -316,8 +314,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: Open commit in browser <kbd>o</kbd>: Open commit in browser
<kbd>n</kbd>: Create new branch off of commit <kbd>n</kbd>: Create new branch off of commit
<kbd>g</kbd>: View reset options <kbd>g</kbd>: View reset options
<kbd>c</kbd>: Copy commit (cherry-pick) <kbd>C</kbd>: Copy commit (cherry-pick)
<kbd>C</kbd>: Copy commit range (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection <kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: View selected item's files <kbd>&lt;enter&gt;</kbd>: View selected item's files

View File

@ -70,8 +70,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: ブラウザでコミットを開く <kbd>o</kbd>: ブラウザでコミットを開く
<kbd>n</kbd>: コミットにブランチを作成 <kbd>n</kbd>: コミットにブランチを作成
<kbd>g</kbd>: View reset options <kbd>g</kbd>: View reset options
<kbd>c</kbd>: コミットをコピー (cherry-pick) <kbd>C</kbd>: コミットをコピー (cherry-pick)
<kbd>C</kbd>: コミットを範囲コピー (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection <kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: View selected item's files <kbd>&lt;enter&gt;</kbd>: View selected item's files
@ -107,7 +106,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>S</kbd>: Squash all 'fixup!' commits above selected commit (autosquash) <kbd>S</kbd>: Squash all 'fixup!' commits above selected commit (autosquash)
<kbd>&lt;c-j&gt;</kbd>: コミットを1つ下に移動 <kbd>&lt;c-j&gt;</kbd>: コミットを1つ下に移動
<kbd>&lt;c-k&gt;</kbd>: コミットを1つ上に移動 <kbd>&lt;c-k&gt;</kbd>: コミットを1つ上に移動
<kbd>v</kbd>: コミットを貼り付け (cherry-pick) <kbd>V</kbd>: コミットを貼り付け (cherry-pick)
<kbd>B</kbd>: Mark commit as base commit for rebase <kbd>B</kbd>: Mark commit as base commit for rebase
<kbd>A</kbd>: ステージされた変更でamendコミット <kbd>A</kbd>: ステージされた変更でamendコミット
<kbd>a</kbd>: Set/Reset commit author <kbd>a</kbd>: Set/Reset commit author
@ -120,8 +119,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: ブラウザでコミットを開く <kbd>o</kbd>: ブラウザでコミットを開く
<kbd>n</kbd>: コミットにブランチを作成 <kbd>n</kbd>: コミットにブランチを作成
<kbd>g</kbd>: View reset options <kbd>g</kbd>: View reset options
<kbd>c</kbd>: コミットをコピー (cherry-pick) <kbd>C</kbd>: コミットをコピー (cherry-pick)
<kbd>C</kbd>: コミットを範囲コピー (cherry-pick)
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: View selected item's files <kbd>&lt;enter&gt;</kbd>: View selected item's files
<kbd>/</kbd>: 検索を開始 <kbd>/</kbd>: 検索を開始
@ -348,8 +346,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: ブラウザでコミットを開く <kbd>o</kbd>: ブラウザでコミットを開く
<kbd>n</kbd>: コミットにブランチを作成 <kbd>n</kbd>: コミットにブランチを作成
<kbd>g</kbd>: View reset options <kbd>g</kbd>: View reset options
<kbd>c</kbd>: コミットをコピー (cherry-pick) <kbd>C</kbd>: コミットをコピー (cherry-pick)
<kbd>C</kbd>: コミットを範囲コピー (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection <kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: コミットを閲覧 <kbd>&lt;enter&gt;</kbd>: コミットを閲覧

View File

@ -57,8 +57,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: 브라우저에서 커밋 열기 <kbd>o</kbd>: 브라우저에서 커밋 열기
<kbd>n</kbd>: 커밋에서 새 브랜치를 만듭니다. <kbd>n</kbd>: 커밋에서 새 브랜치를 만듭니다.
<kbd>g</kbd>: View reset options <kbd>g</kbd>: View reset options
<kbd>c</kbd>: 커밋을 복사 (cherry-pick) <kbd>C</kbd>: 커밋을 복사 (cherry-pick)
<kbd>C</kbd>: 커밋을 범위로 복사 (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection <kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: 커밋 보기 <kbd>&lt;enter&gt;</kbd>: 커밋 보기
@ -88,8 +87,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: 브라우저에서 커밋 열기 <kbd>o</kbd>: 브라우저에서 커밋 열기
<kbd>n</kbd>: 커밋에서 새 브랜치를 만듭니다. <kbd>n</kbd>: 커밋에서 새 브랜치를 만듭니다.
<kbd>g</kbd>: View reset options <kbd>g</kbd>: View reset options
<kbd>c</kbd>: 커밋을 복사 (cherry-pick) <kbd>C</kbd>: 커밋을 복사 (cherry-pick)
<kbd>C</kbd>: 커밋을 범위로 복사 (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection <kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: View selected item's files <kbd>&lt;enter&gt;</kbd>: View selected item's files
@ -270,7 +268,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>S</kbd>: Squash all 'fixup!' commits above selected commit (autosquash) <kbd>S</kbd>: Squash all 'fixup!' commits above selected commit (autosquash)
<kbd>&lt;c-j&gt;</kbd>: 커밋을 1개 아래로 이동 <kbd>&lt;c-j&gt;</kbd>: 커밋을 1개 아래로 이동
<kbd>&lt;c-k&gt;</kbd>: 커밋을 1개 위로 이동 <kbd>&lt;c-k&gt;</kbd>: 커밋을 1개 위로 이동
<kbd>v</kbd>: 커밋을 붙여넣기 (cherry-pick) <kbd>V</kbd>: 커밋을 붙여넣기 (cherry-pick)
<kbd>B</kbd>: Mark commit as base commit for rebase <kbd>B</kbd>: Mark commit as base commit for rebase
<kbd>A</kbd>: Amend commit with staged changes <kbd>A</kbd>: Amend commit with staged changes
<kbd>a</kbd>: Set/Reset commit author <kbd>a</kbd>: Set/Reset commit author
@ -283,8 +281,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: 브라우저에서 커밋 열기 <kbd>o</kbd>: 브라우저에서 커밋 열기
<kbd>n</kbd>: 커밋에서 새 브랜치를 만듭니다. <kbd>n</kbd>: 커밋에서 새 브랜치를 만듭니다.
<kbd>g</kbd>: View reset options <kbd>g</kbd>: View reset options
<kbd>c</kbd>: 커밋을 복사 (cherry-pick) <kbd>C</kbd>: 커밋을 복사 (cherry-pick)
<kbd>C</kbd>: 커밋을 범위로 복사 (cherry-pick)
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: View selected item's files <kbd>&lt;enter&gt;</kbd>: View selected item's files
<kbd>/</kbd>: 검색 시작 <kbd>/</kbd>: 검색 시작

View File

@ -151,7 +151,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>S</kbd>: Squash bovenstaande commits <kbd>S</kbd>: Squash bovenstaande commits
<kbd>&lt;c-j&gt;</kbd>: Verplaats commit 1 naar beneden <kbd>&lt;c-j&gt;</kbd>: Verplaats commit 1 naar beneden
<kbd>&lt;c-k&gt;</kbd>: Verplaats commit 1 naar boven <kbd>&lt;c-k&gt;</kbd>: Verplaats commit 1 naar boven
<kbd>v</kbd>: Plak commits (cherry-pick) <kbd>V</kbd>: Plak commits (cherry-pick)
<kbd>B</kbd>: Mark commit as base commit for rebase <kbd>B</kbd>: Mark commit as base commit for rebase
<kbd>A</kbd>: Wijzig commit met staged veranderingen <kbd>A</kbd>: Wijzig commit met staged veranderingen
<kbd>a</kbd>: Set/Reset commit author <kbd>a</kbd>: Set/Reset commit author
@ -164,8 +164,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: Open commit in browser <kbd>o</kbd>: Open commit in browser
<kbd>n</kbd>: Creëer nieuwe branch van commit <kbd>n</kbd>: Creëer nieuwe branch van commit
<kbd>g</kbd>: Bekijk reset opties <kbd>g</kbd>: Bekijk reset opties
<kbd>c</kbd>: Kopieer commit (cherry-pick) <kbd>C</kbd>: Kopieer commit (cherry-pick)
<kbd>C</kbd>: Kopieer commit reeks (cherry-pick)
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: Bekijk gecommite bestanden <kbd>&lt;enter&gt;</kbd>: Bekijk gecommite bestanden
<kbd>/</kbd>: Start met zoeken <kbd>/</kbd>: Start met zoeken
@ -227,8 +226,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: Open commit in browser <kbd>o</kbd>: Open commit in browser
<kbd>n</kbd>: Creëer nieuwe branch van commit <kbd>n</kbd>: Creëer nieuwe branch van commit
<kbd>g</kbd>: Bekijk reset opties <kbd>g</kbd>: Bekijk reset opties
<kbd>c</kbd>: Kopieer commit (cherry-pick) <kbd>C</kbd>: Kopieer commit (cherry-pick)
<kbd>C</kbd>: Kopieer commit reeks (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (gekopieerde) commits selectie <kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (gekopieerde) commits selectie
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: Bekijk commits <kbd>&lt;enter&gt;</kbd>: Bekijk commits
@ -316,8 +314,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: Open commit in browser <kbd>o</kbd>: Open commit in browser
<kbd>n</kbd>: Creëer nieuwe branch van commit <kbd>n</kbd>: Creëer nieuwe branch van commit
<kbd>g</kbd>: Bekijk reset opties <kbd>g</kbd>: Bekijk reset opties
<kbd>c</kbd>: Kopieer commit (cherry-pick) <kbd>C</kbd>: Kopieer commit (cherry-pick)
<kbd>C</kbd>: Kopieer commit reeks (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (gekopieerde) commits selectie <kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (gekopieerde) commits selectie
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: Bekijk gecommite bestanden <kbd>&lt;enter&gt;</kbd>: Bekijk gecommite bestanden

View File

@ -72,7 +72,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>S</kbd>: Spłaszcz wszystkie commity naprawcze powyżej zaznaczonych commitów (autosquash) <kbd>S</kbd>: Spłaszcz wszystkie commity naprawcze powyżej zaznaczonych commitów (autosquash)
<kbd>&lt;c-j&gt;</kbd>: Przenieś commit 1 w dół <kbd>&lt;c-j&gt;</kbd>: Przenieś commit 1 w dół
<kbd>&lt;c-k&gt;</kbd>: Przenieś commit 1 w górę <kbd>&lt;c-k&gt;</kbd>: Przenieś commit 1 w górę
<kbd>v</kbd>: Wklej commity (przebieranie) <kbd>V</kbd>: Wklej commity (przebieranie)
<kbd>B</kbd>: Mark commit as base commit for rebase <kbd>B</kbd>: Mark commit as base commit for rebase
<kbd>A</kbd>: Popraw commit zmianami z poczekalni <kbd>A</kbd>: Popraw commit zmianami z poczekalni
<kbd>a</kbd>: Set/Reset commit author <kbd>a</kbd>: Set/Reset commit author
@ -85,8 +85,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: Open commit in browser <kbd>o</kbd>: Open commit in browser
<kbd>n</kbd>: Create new branch off of commit <kbd>n</kbd>: Create new branch off of commit
<kbd>g</kbd>: Wyświetl opcje resetu <kbd>g</kbd>: Wyświetl opcje resetu
<kbd>c</kbd>: Kopiuj commit (przebieranie) <kbd>C</kbd>: Kopiuj commit (przebieranie)
<kbd>C</kbd>: Kopiuj zakres commitów (przebieranie)
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: Przeglądaj pliki commita <kbd>&lt;enter&gt;</kbd>: Przeglądaj pliki commita
<kbd>/</kbd>: Search the current view by text <kbd>/</kbd>: Search the current view by text
@ -225,8 +224,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: Open commit in browser <kbd>o</kbd>: Open commit in browser
<kbd>n</kbd>: Create new branch off of commit <kbd>n</kbd>: Create new branch off of commit
<kbd>g</kbd>: Wyświetl opcje resetu <kbd>g</kbd>: Wyświetl opcje resetu
<kbd>c</kbd>: Kopiuj commit (przebieranie) <kbd>C</kbd>: Kopiuj commit (przebieranie)
<kbd>C</kbd>: Kopiuj zakres commitów (przebieranie)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection <kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: View commits <kbd>&lt;enter&gt;</kbd>: View commits
@ -309,8 +307,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: Open commit in browser <kbd>o</kbd>: Open commit in browser
<kbd>n</kbd>: Create new branch off of commit <kbd>n</kbd>: Create new branch off of commit
<kbd>g</kbd>: Wyświetl opcje resetu <kbd>g</kbd>: Wyświetl opcje resetu
<kbd>c</kbd>: Kopiuj commit (przebieranie) <kbd>C</kbd>: Kopiuj commit (przebieranie)
<kbd>C</kbd>: Kopiuj zakres commitów (przebieranie)
<kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection <kbd>&lt;c-r&gt;</kbd>: Reset cherry-picked (copied) commits selection
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: Przeglądaj pliki commita <kbd>&lt;enter&gt;</kbd>: Przeglądaj pliki commita

View File

@ -127,8 +127,7 @@ _Связки клавиш_
<kbd>o</kbd>: Открыть коммит в браузере <kbd>o</kbd>: Открыть коммит в браузере
<kbd>n</kbd>: Создать новую ветку с этого коммита <kbd>n</kbd>: Создать новую ветку с этого коммита
<kbd>g</kbd>: Просмотреть параметры сброса <kbd>g</kbd>: Просмотреть параметры сброса
<kbd>c</kbd>: Скопировать отобранные коммит (cherry-pick) <kbd>C</kbd>: Скопировать отобранные коммит (cherry-pick)
<kbd>C</kbd>: Скопировать несколько отобранных коммитов (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Сбросить отобранную (скопированную | cherry-picked) выборку коммитов <kbd>&lt;c-r&gt;</kbd>: Сбросить отобранную (скопированную | cherry-picked) выборку коммитов
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: Просмотреть коммиты <kbd>&lt;enter&gt;</kbd>: Просмотреть коммиты
@ -153,7 +152,7 @@ _Связки клавиш_
<kbd>S</kbd>: Объединить все 'fixup!' коммиты выше в выбранный коммит (автосохранение) <kbd>S</kbd>: Объединить все 'fixup!' коммиты выше в выбранный коммит (автосохранение)
<kbd>&lt;c-j&gt;</kbd>: Переместить коммит вниз на один <kbd>&lt;c-j&gt;</kbd>: Переместить коммит вниз на один
<kbd>&lt;c-k&gt;</kbd>: Переместить коммит вверх на один <kbd>&lt;c-k&gt;</kbd>: Переместить коммит вверх на один
<kbd>v</kbd>: Вставить отобранные коммиты (cherry-pick) <kbd>V</kbd>: Вставить отобранные коммиты (cherry-pick)
<kbd>B</kbd>: Mark commit as base commit for rebase <kbd>B</kbd>: Mark commit as base commit for rebase
<kbd>A</kbd>: Править последний коммит с проиндексированными изменениями <kbd>A</kbd>: Править последний коммит с проиндексированными изменениями
<kbd>a</kbd>: Установить/убрать автора коммита <kbd>a</kbd>: Установить/убрать автора коммита
@ -166,8 +165,7 @@ _Связки клавиш_
<kbd>o</kbd>: Открыть коммит в браузере <kbd>o</kbd>: Открыть коммит в браузере
<kbd>n</kbd>: Создать новую ветку с этого коммита <kbd>n</kbd>: Создать новую ветку с этого коммита
<kbd>g</kbd>: Просмотреть параметры сброса <kbd>g</kbd>: Просмотреть параметры сброса
<kbd>c</kbd>: Скопировать отобранные коммит (cherry-pick) <kbd>C</kbd>: Скопировать отобранные коммит (cherry-pick)
<kbd>C</kbd>: Скопировать несколько отобранных коммитов (cherry-pick)
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: Просмотреть файлы выбранного элемента <kbd>&lt;enter&gt;</kbd>: Просмотреть файлы выбранного элемента
<kbd>/</kbd>: Найти <kbd>/</kbd>: Найти
@ -224,8 +222,7 @@ _Связки клавиш_
<kbd>o</kbd>: Открыть коммит в браузере <kbd>o</kbd>: Открыть коммит в браузере
<kbd>n</kbd>: Создать новую ветку с этого коммита <kbd>n</kbd>: Создать новую ветку с этого коммита
<kbd>g</kbd>: Просмотреть параметры сброса <kbd>g</kbd>: Просмотреть параметры сброса
<kbd>c</kbd>: Скопировать отобранные коммит (cherry-pick) <kbd>C</kbd>: Скопировать отобранные коммит (cherry-pick)
<kbd>C</kbd>: Скопировать несколько отобранных коммитов (cherry-pick)
<kbd>&lt;c-r&gt;</kbd>: Сбросить отобранную (скопированную | cherry-picked) выборку коммитов <kbd>&lt;c-r&gt;</kbd>: Сбросить отобранную (скопированную | cherry-picked) выборку коммитов
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: Просмотреть файлы выбранного элемента <kbd>&lt;enter&gt;</kbd>: Просмотреть файлы выбранного элемента

View File

@ -57,8 +57,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: 在浏览器中打开提交 <kbd>o</kbd>: 在浏览器中打开提交
<kbd>n</kbd>: 从提交创建新分支 <kbd>n</kbd>: 从提交创建新分支
<kbd>g</kbd>: 查看重置选项 <kbd>g</kbd>: 查看重置选项
<kbd>c</kbd>: 复制提交(拣选) <kbd>C</kbd>: 复制提交(拣选)
<kbd>C</kbd>: 复制提交范围(拣选)
<kbd>&lt;c-r&gt;</kbd>: 重置已拣选(复制)的提交 <kbd>&lt;c-r&gt;</kbd>: 重置已拣选(复制)的提交
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: 查看提交 <kbd>&lt;enter&gt;</kbd>: 查看提交
@ -112,8 +111,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: 在浏览器中打开提交 <kbd>o</kbd>: 在浏览器中打开提交
<kbd>n</kbd>: 从提交创建新分支 <kbd>n</kbd>: 从提交创建新分支
<kbd>g</kbd>: 查看重置选项 <kbd>g</kbd>: 查看重置选项
<kbd>c</kbd>: 复制提交(拣选) <kbd>C</kbd>: 复制提交(拣选)
<kbd>C</kbd>: 复制提交范围(拣选)
<kbd>&lt;c-r&gt;</kbd>: 重置已拣选(复制)的提交 <kbd>&lt;c-r&gt;</kbd>: 重置已拣选(复制)的提交
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: 查看提交的文件 <kbd>&lt;enter&gt;</kbd>: 查看提交的文件
@ -153,7 +151,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>S</kbd>: 压缩在所选提交之上的所有“fixup!”提交(自动压缩) <kbd>S</kbd>: 压缩在所选提交之上的所有“fixup!”提交(自动压缩)
<kbd>&lt;c-j&gt;</kbd>: 下移提交 <kbd>&lt;c-j&gt;</kbd>: 下移提交
<kbd>&lt;c-k&gt;</kbd>: 上移提交 <kbd>&lt;c-k&gt;</kbd>: 上移提交
<kbd>v</kbd>: 粘贴提交(拣选) <kbd>V</kbd>: 粘贴提交(拣选)
<kbd>B</kbd>: Mark commit as base commit for rebase <kbd>B</kbd>: Mark commit as base commit for rebase
<kbd>A</kbd>: 用已暂存的更改来修补提交 <kbd>A</kbd>: 用已暂存的更改来修补提交
<kbd>a</kbd>: Set/Reset commit author <kbd>a</kbd>: Set/Reset commit author
@ -166,8 +164,7 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
<kbd>o</kbd>: 在浏览器中打开提交 <kbd>o</kbd>: 在浏览器中打开提交
<kbd>n</kbd>: 从提交创建新分支 <kbd>n</kbd>: 从提交创建新分支
<kbd>g</kbd>: 查看重置选项 <kbd>g</kbd>: 查看重置选项
<kbd>c</kbd>: 复制提交(拣选) <kbd>C</kbd>: 复制提交(拣选)
<kbd>C</kbd>: 复制提交范围(拣选)
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: 查看提交的文件 <kbd>&lt;enter&gt;</kbd>: 查看提交的文件
<kbd>/</kbd>: 开始搜索 <kbd>/</kbd>: 开始搜索

View File

@ -57,8 +57,7 @@ _說明:`<c-b>` 表示 Ctrl+B、`<a-b>` 表示 Alt+B,`B`表示 Shift+B_
<kbd>o</kbd>: 在瀏覽器中開啟提交 <kbd>o</kbd>: 在瀏覽器中開啟提交
<kbd>n</kbd>: 從提交建立新分支 <kbd>n</kbd>: 從提交建立新分支
<kbd>g</kbd>: 檢視重設選項 <kbd>g</kbd>: 檢視重設選項
<kbd>c</kbd>: 複製提交 (揀選) <kbd>C</kbd>: 複製提交 (揀選)
<kbd>C</kbd>: 複製提交範圍 (揀選)
<kbd>&lt;c-r&gt;</kbd>: 重設選定的揀選 (複製) 提交 <kbd>&lt;c-r&gt;</kbd>: 重設選定的揀選 (複製) 提交
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: 檢視提交 <kbd>&lt;enter&gt;</kbd>: 檢視提交
@ -153,8 +152,7 @@ _說明:`<c-b>` 表示 Ctrl+B、`<a-b>` 表示 Alt+B,`B`表示 Shift+B_
<kbd>o</kbd>: 在瀏覽器中開啟提交 <kbd>o</kbd>: 在瀏覽器中開啟提交
<kbd>n</kbd>: 從提交建立新分支 <kbd>n</kbd>: 從提交建立新分支
<kbd>g</kbd>: 檢視重設選項 <kbd>g</kbd>: 檢視重設選項
<kbd>c</kbd>: 複製提交 (揀選) <kbd>C</kbd>: 複製提交 (揀選)
<kbd>C</kbd>: 複製提交範圍 (揀選)
<kbd>&lt;c-r&gt;</kbd>: 重設選定的揀選 (複製) 提交 <kbd>&lt;c-r&gt;</kbd>: 重設選定的揀選 (複製) 提交
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: 檢視所選項目的檔案 <kbd>&lt;enter&gt;</kbd>: 檢視所選項目的檔案
@ -194,7 +192,7 @@ _說明:`<c-b>` 表示 Ctrl+B、`<a-b>` 表示 Alt+B,`B`表示 Shift+B_
<kbd>S</kbd>: 壓縮上方所有的“fixup!”提交 (自動壓縮) <kbd>S</kbd>: 壓縮上方所有的“fixup!”提交 (自動壓縮)
<kbd>&lt;c-j&gt;</kbd>: 向下移動提交 <kbd>&lt;c-j&gt;</kbd>: 向下移動提交
<kbd>&lt;c-k&gt;</kbd>: 向上移動提交 <kbd>&lt;c-k&gt;</kbd>: 向上移動提交
<kbd>v</kbd>: 貼上提交 (揀選) <kbd>V</kbd>: 貼上提交 (揀選)
<kbd>B</kbd>: Mark commit as base commit for rebase <kbd>B</kbd>: Mark commit as base commit for rebase
<kbd>A</kbd>: 使用已預存的更改修正提交 <kbd>A</kbd>: 使用已預存的更改修正提交
<kbd>a</kbd>: 設置/重設提交作者 <kbd>a</kbd>: 設置/重設提交作者
@ -207,8 +205,7 @@ _說明:`<c-b>` 表示 Ctrl+B、`<a-b>` 表示 Alt+B,`B`表示 Shift+B_
<kbd>o</kbd>: 在瀏覽器中開啟提交 <kbd>o</kbd>: 在瀏覽器中開啟提交
<kbd>n</kbd>: 從提交建立新分支 <kbd>n</kbd>: 從提交建立新分支
<kbd>g</kbd>: 檢視重設選項 <kbd>g</kbd>: 檢視重設選項
<kbd>c</kbd>: 複製提交 (揀選) <kbd>C</kbd>: 複製提交 (揀選)
<kbd>C</kbd>: 複製提交範圍 (揀選)
<kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool) <kbd>&lt;c-t&gt;</kbd>: Open external diff tool (git difftool)
<kbd>&lt;enter&gt;</kbd>: 檢視所選項目的檔案 <kbd>&lt;enter&gt;</kbd>: 檢視所選項目的檔案
<kbd>/</kbd>: 開始搜尋 <kbd>/</kbd>: 開始搜尋

View File

@ -418,7 +418,6 @@ type KeybindingCommitsConfig struct {
PickCommit string `yaml:"pickCommit"` PickCommit string `yaml:"pickCommit"`
RevertCommit string `yaml:"revertCommit"` RevertCommit string `yaml:"revertCommit"`
CherryPickCopy string `yaml:"cherryPickCopy"` CherryPickCopy string `yaml:"cherryPickCopy"`
CherryPickCopyRange string `yaml:"cherryPickCopyRange"`
PasteCommits string `yaml:"pasteCommits"` PasteCommits string `yaml:"pasteCommits"`
MarkCommitAsBaseForRebase string `yaml:"markCommitAsBaseForRebase"` MarkCommitAsBaseForRebase string `yaml:"markCommitAsBaseForRebase"`
CreateTag string `yaml:"tagCommit"` CreateTag string `yaml:"tagCommit"`
@ -812,9 +811,8 @@ func GetDefaultConfig() *UserConfig {
ResetCommitAuthor: "a", ResetCommitAuthor: "a",
PickCommit: "p", PickCommit: "p",
RevertCommit: "t", RevertCommit: "t",
CherryPickCopy: "c", CherryPickCopy: "C",
CherryPickCopyRange: "C", PasteCommits: "V",
PasteCommits: "v",
MarkCommitAsBaseForRebase: "B", MarkCommitAsBaseForRebase: "B",
CreateTag: "T", CreateTag: "T",
CheckoutCommit: "<space>", CheckoutCommit: "<space>",

View File

@ -14,6 +14,7 @@ var _ types.IController = &BasicCommitsController{}
type ContainsCommits interface { type ContainsCommits interface {
types.Context types.Context
types.IListContext
GetSelected() *models.Commit GetSelected() *models.Commit
GetCommits() []*models.Commit GetCommits() []*models.Commit
GetSelectedLineIdx() int GetSelectedLineIdx() int
@ -64,13 +65,8 @@ func (self *BasicCommitsController) GetKeybindings(opts types.KeybindingsOpts) [
}, },
{ {
Key: opts.GetKey(opts.Config.Commits.CherryPickCopy), Key: opts.GetKey(opts.Config.Commits.CherryPickCopy),
Handler: self.checkSelected(self.copy),
Description: self.c.Tr.CherryPickCopy,
},
{
Key: opts.GetKey(opts.Config.Commits.CherryPickCopyRange),
Handler: self.checkSelected(self.copyRange), Handler: self.checkSelected(self.copyRange),
Description: self.c.Tr.CherryPickCopyRange, Description: self.c.Tr.CherryPickCopy,
}, },
{ {
Key: opts.GetKey(opts.Config.Commits.ResetCherryPick), Key: opts.GetKey(opts.Config.Commits.ResetCherryPick),
@ -271,12 +267,8 @@ func (self *BasicCommitsController) checkout(commit *models.Commit) error {
}) })
} }
func (self *BasicCommitsController) copy(commit *models.Commit) error {
return self.c.Helpers().CherryPick.Copy(commit, self.context.GetCommits(), self.context)
}
func (self *BasicCommitsController) copyRange(*models.Commit) error { func (self *BasicCommitsController) copyRange(*models.Commit) error {
return self.c.Helpers().CherryPick.CopyRange(self.context.GetSelectedLineIdx(), self.context.GetCommits(), self.context) return self.c.Helpers().CherryPick.CopyRange(self.context.GetCommits(), self.context)
} }
func (self *BasicCommitsController) openDiffTool(commit *models.Commit) error { func (self *BasicCommitsController) openDiffTool(commit *models.Commit) error {

View File

@ -5,6 +5,7 @@ import (
"github.com/jesseduffield/lazygit/pkg/commands/models" "github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/gui/modes/cherrypicking" "github.com/jesseduffield/lazygit/pkg/gui/modes/cherrypicking"
"github.com/jesseduffield/lazygit/pkg/gui/types" "github.com/jesseduffield/lazygit/pkg/gui/types"
"github.com/samber/lo"
) )
type CherryPickHelper struct { type CherryPickHelper struct {
@ -45,26 +46,31 @@ func (self *CherryPickHelper) Copy(commit *models.Commit, commitsList []*models.
return self.rerender() return self.rerender()
} }
func (self *CherryPickHelper) CopyRange(selectedIndex int, commitsList []*models.Commit, context types.Context) error { func (self *CherryPickHelper) CopyRange(commitsList []*models.Commit, context types.IListContext) error {
startIdx, endIdx := context.GetList().GetSelectionRange()
if err := self.resetIfNecessary(context); err != nil { if err := self.resetIfNecessary(context); err != nil {
return err return err
} }
commitSet := self.getData().SelectedShaSet() commitSet := self.getData().SelectedShaSet()
// find the last commit that is copied that's above our position allCommitsCopied := lo.EveryBy(commitsList[startIdx:endIdx+1], func(commit *models.Commit) bool {
// if there are none, startIndex = 0 return commitSet.Includes(commit.Sha)
startIndex := 0 })
for index, commit := range commitsList[0:selectedIndex] {
if commitSet.Includes(commit.Sha) {
startIndex = index
}
}
for index := startIndex; index <= selectedIndex; index++ { // if all selected commits are already copied, we'll uncopy them
if allCommitsCopied {
for index := startIdx; index <= endIdx; index++ {
commit := commitsList[index]
self.getData().Remove(commit, commitsList)
}
} else {
for index := startIdx; index <= endIdx; index++ {
commit := commitsList[index] commit := commitsList[index]
self.getData().Add(commit, commitsList) self.getData().Add(commit, commitsList)
} }
}
return self.rerender() return self.rerender()
} }

View File

@ -198,7 +198,6 @@ func chineseTranslationSet() TranslationSet {
YouAreHere: "您在这里", YouAreHere: "您在这里",
RewordNotSupported: "当前不支持交互式重新基准化时的重新措词提交", RewordNotSupported: "当前不支持交互式重新基准化时的重新措词提交",
CherryPickCopy: "复制提交(拣选)", CherryPickCopy: "复制提交(拣选)",
CherryPickCopyRange: "复制提交范围(拣选)",
PasteCommits: "粘贴提交(拣选)", PasteCommits: "粘贴提交(拣选)",
SureCherryPick: "您确定要将选中的提交进行拣选到这个分支吗?", SureCherryPick: "您确定要将选中的提交进行拣选到这个分支吗?",
CherryPick: "拣选 (Cherry-Pick)", CherryPick: "拣选 (Cherry-Pick)",

View File

@ -163,7 +163,6 @@ func dutchTranslationSet() TranslationSet {
YouAreHere: "JE BENT HIER", YouAreHere: "JE BENT HIER",
RewordNotSupported: "Herformatteren van commits in interactief rebasen is nog niet ondersteund", RewordNotSupported: "Herformatteren van commits in interactief rebasen is nog niet ondersteund",
CherryPickCopy: "Kopieer commit (cherry-pick)", CherryPickCopy: "Kopieer commit (cherry-pick)",
CherryPickCopyRange: "Kopieer commit reeks (cherry-pick)",
PasteCommits: "Plak commits (cherry-pick)", PasteCommits: "Plak commits (cherry-pick)",
SureCherryPick: "Weet je zeker dat je de gekopieerde commits naar deze branch wil cherry-picken?", SureCherryPick: "Weet je zeker dat je de gekopieerde commits naar deze branch wil cherry-picken?",
CherryPick: "Cherry-Pick", CherryPick: "Cherry-Pick",

View File

@ -251,7 +251,6 @@ type TranslationSet struct {
RewordNotSupported string RewordNotSupported string
ChangingThisActionIsNotAllowed string ChangingThisActionIsNotAllowed string
CherryPickCopy string CherryPickCopy string
CherryPickCopyRange string
PasteCommits string PasteCommits string
SureCherryPick string SureCherryPick string
CherryPick string CherryPick string
@ -1090,7 +1089,6 @@ func EnglishTranslationSet() TranslationSet {
RewordNotSupported: "Rewording commits while interactively rebasing is not currently supported", RewordNotSupported: "Rewording commits while interactively rebasing is not currently supported",
ChangingThisActionIsNotAllowed: "Changing this kind of rebase todo entry is not allowed", ChangingThisActionIsNotAllowed: "Changing this kind of rebase todo entry is not allowed",
CherryPickCopy: "Copy commit (cherry-pick)", CherryPickCopy: "Copy commit (cherry-pick)",
CherryPickCopyRange: "Copy commit range (cherry-pick)",
PasteCommits: "Paste commits (cherry-pick)", PasteCommits: "Paste commits (cherry-pick)",
SureCherryPick: "Are you sure you want to cherry-pick the copied commits onto this branch?", SureCherryPick: "Are you sure you want to cherry-pick the copied commits onto this branch?",
CherryPick: "Cherry-pick", CherryPick: "Cherry-pick",

View File

@ -202,7 +202,6 @@ func japaneseTranslationSet() TranslationSet {
YouAreHere: "現在位置", YouAreHere: "現在位置",
// LcRewordNotSupported: "Rewording commits while interactively rebasing is not currently supported", // LcRewordNotSupported: "Rewording commits while interactively rebasing is not currently supported",
CherryPickCopy: "コミットをコピー (cherry-pick)", CherryPickCopy: "コミットをコピー (cherry-pick)",
CherryPickCopyRange: "コミットを範囲コピー (cherry-pick)",
PasteCommits: "コミットを貼り付け (cherry-pick)", PasteCommits: "コミットを貼り付け (cherry-pick)",
// SureCherryPick: "Are you sure you want to cherry-pick the copied commits onto this branch?", // SureCherryPick: "Are you sure you want to cherry-pick the copied commits onto this branch?",
CherryPick: "Cherry-Pick", CherryPick: "Cherry-Pick",

View File

@ -199,7 +199,6 @@ func koreanTranslationSet() TranslationSet {
YouAreHere: "현재 위치", YouAreHere: "현재 위치",
RewordNotSupported: "Rewording commits while interactively rebasing is not currently supported", RewordNotSupported: "Rewording commits while interactively rebasing is not currently supported",
CherryPickCopy: "커밋을 복사 (cherry-pick)", CherryPickCopy: "커밋을 복사 (cherry-pick)",
CherryPickCopyRange: "커밋을 범위로 복사 (cherry-pick)",
PasteCommits: "커밋을 붙여넣기 (cherry-pick)", PasteCommits: "커밋을 붙여넣기 (cherry-pick)",
SureCherryPick: "정말로 복사한 커밋을 이 브랜치에 체리픽하시겠습니까?", SureCherryPick: "정말로 복사한 커밋을 이 브랜치에 체리픽하시겠습니까?",
CherryPick: "체리픽", CherryPick: "체리픽",

View File

@ -131,7 +131,6 @@ func polishTranslationSet() TranslationSet {
YouAreHere: "JESTEŚ TU", YouAreHere: "JESTEŚ TU",
RewordNotSupported: "Przeredagowanie commitów podczas interaktywnej zmiany bazy nie jest obecnie wspierane", RewordNotSupported: "Przeredagowanie commitów podczas interaktywnej zmiany bazy nie jest obecnie wspierane",
CherryPickCopy: "Kopiuj commit (przebieranie)", CherryPickCopy: "Kopiuj commit (przebieranie)",
CherryPickCopyRange: "Kopiuj zakres commitów (przebieranie)",
PasteCommits: "Wklej commity (przebieranie)", PasteCommits: "Wklej commity (przebieranie)",
SureCherryPick: "Czy na pewno chcesz przebierać w skopiowanych commitach na tej gałęzi?", SureCherryPick: "Czy na pewno chcesz przebierać w skopiowanych commitach na tej gałęzi?",
CherryPick: "Przebieranie", CherryPick: "Przebieranie",

View File

@ -243,7 +243,6 @@ func RussianTranslationSet() TranslationSet {
RewordNotSupported: "Переформулировка коммитов при интерактивном перебазировании в настоящее время не поддерживается", RewordNotSupported: "Переформулировка коммитов при интерактивном перебазировании в настоящее время не поддерживается",
ChangingThisActionIsNotAllowed: "Изменение этого типа записи todo перебазирования не допускается", ChangingThisActionIsNotAllowed: "Изменение этого типа записи todo перебазирования не допускается",
CherryPickCopy: "Скопировать отобранные коммит (cherry-pick)", CherryPickCopy: "Скопировать отобранные коммит (cherry-pick)",
CherryPickCopyRange: "Скопировать несколько отобранных коммитов (cherry-pick)",
PasteCommits: "Вставить отобранные коммиты (cherry-pick)", PasteCommits: "Вставить отобранные коммиты (cherry-pick)",
SureCherryPick: "Вы уверены, что хотите выборочно применить (cherry-picked) отобранные коммиты в эту ветку?", SureCherryPick: "Вы уверены, что хотите выборочно применить (cherry-picked) отобранные коммиты в эту ветку?",
CherryPick: "Выборочная отборка (Cherry-Pick)", CherryPick: "Выборочная отборка (Cherry-Pick)",

View File

@ -274,7 +274,6 @@ func traditionalChineseTranslationSet() TranslationSet {
RewordNotSupported: "在互動變基期間改寫提交目前不支持", RewordNotSupported: "在互動變基期間改寫提交目前不支持",
ChangingThisActionIsNotAllowed: "不允許更改此類變基待辦事項", ChangingThisActionIsNotAllowed: "不允許更改此類變基待辦事項",
CherryPickCopy: "複製提交 (揀選)", CherryPickCopy: "複製提交 (揀選)",
CherryPickCopyRange: "複製提交範圍 (揀選)",
PasteCommits: "貼上提交 (揀選)", PasteCommits: "貼上提交 (揀選)",
SureCherryPick: "你確定要將複製的提交揀選到此分支嗎?", SureCherryPick: "你確定要將複製的提交揀選到此分支嗎?",
CherryPick: "揀選 (Cherry-pick)", CherryPick: "揀選 (Cherry-pick)",

View File

@ -0,0 +1,85 @@
package cherry_pick
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var CherryPickRange = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Cherry pick range of commits from the subcommits view, without conflicts",
ExtraCmdArgs: []string{},
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
shell.
EmptyCommit("base").
NewBranch("first-branch").
NewBranch("second-branch").
Checkout("first-branch").
EmptyCommit("one").
EmptyCommit("two").
Checkout("second-branch").
EmptyCommit("three").
EmptyCommit("four").
Checkout("first-branch")
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
t.Views().Branches().
Focus().
Lines(
Contains("first-branch"),
Contains("second-branch"),
Contains("master"),
).
SelectNextItem().
PressEnter()
t.Views().SubCommits().
IsFocused().
Lines(
Contains("four").IsSelected(),
Contains("three"),
Contains("base"),
).
// copy commits 'four' and 'three'
Press(keys.Universal.RangeSelectDown).
Lines(
Contains("four").IsSelected(),
Contains("three").IsSelected(),
Contains("base"),
).
Press(keys.Commits.CherryPickCopy)
t.Views().Information().Content(Contains("2 commits copied"))
t.Views().Commits().
Focus().
Lines(
Contains("two").IsSelected(),
Contains("one"),
Contains("base"),
).
Press(keys.Commits.PasteCommits).
Tap(func() {
t.ExpectPopup().Alert().
Title(Equals("Cherry-pick")).
Content(Contains("Are you sure you want to cherry-pick the copied commits onto this branch?")).
Confirm()
}).
Lines(
Contains("four"),
Contains("three"),
Contains("two"),
Contains("one"),
Contains("base"),
).
Tap(func() {
// we need to manually exit out of cherry pick mode
t.Views().Information().Content(Contains("2 commits copied"))
}).
PressEscape().
Tap(func() {
t.Views().Information().Content(DoesNotContain("commits copied"))
})
},
})

View File

@ -61,6 +61,7 @@ var tests = []*components.IntegrationTest{
cherry_pick.CherryPick, cherry_pick.CherryPick,
cherry_pick.CherryPickConflicts, cherry_pick.CherryPickConflicts,
cherry_pick.CherryPickDuringRebase, cherry_pick.CherryPickDuringRebase,
cherry_pick.CherryPickRange,
commit.AddCoAuthor, commit.AddCoAuthor,
commit.Amend, commit.Amend,
commit.Commit, commit.Commit,

View File

@ -1101,16 +1101,12 @@
"default": "t" "default": "t"
}, },
"cherryPickCopy": { "cherryPickCopy": {
"type": "string",
"default": "c"
},
"cherryPickCopyRange": {
"type": "string", "type": "string",
"default": "C" "default": "C"
}, },
"pasteCommits": { "pasteCommits": {
"type": "string", "type": "string",
"default": "v" "default": "V"
}, },
"markCommitAsBaseForRebase": { "markCommitAsBaseForRebase": {
"type": "string", "type": "string",