1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-02-09 13:47:11 +02:00

Merge pull request #1930 from mark2185/feature/discard-staged-only

This commit is contained in:
Jesse Duffield 2022-05-15 20:33:25 +10:00 committed by GitHub
commit f31dcd3091
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
36 changed files with 104 additions and 1 deletions

View File

@ -25,6 +25,10 @@ func NewStashCommands(
}
}
func (self *StashCommands) DropNewest() error {
return self.cmd.New("git stash drop").Run()
}
func (self *StashCommands) Drop(index int) error {
return self.cmd.New(fmt.Sprintf("git stash drop stash@{%d}", index)).Run()
}

View File

@ -12,7 +12,7 @@ import (
func (self *FilesController) createResetMenu() error {
red := style.FgRed
nukeStr := "reset --hard HEAD && git clean -fd"
nukeStr := "git reset --hard HEAD && git clean -fd"
if len(self.model.Submodules) > 0 {
nukeStr = fmt.Sprintf("%s (%s)", nukeStr, self.c.Tr.LcAndResetSubmodules)
}
@ -64,6 +64,28 @@ func (self *FilesController) createResetMenu() error {
},
Key: 'c',
},
{
LabelColumns: []string{
self.c.Tr.LcDiscardStagedChanges,
red.Sprint("stash staged and drop stash"),
},
Tooltip: self.c.Tr.DiscardStagedChangesDescription,
OnPress: func() error {
self.c.LogAction(self.c.Tr.Actions.RemoveStagedFiles)
if !self.helpers.WorkingTree.IsWorkingTreeDirty() {
return self.c.ErrorMsg(self.c.Tr.NoTrackedStagedFilesStash)
}
if err := self.git.Stash.SaveStagedChanges("[lazygit] tmp stash"); err != nil {
return self.c.Error(err)
}
if err := self.git.Stash.DropNewest(); err != nil {
return self.c.Error(err)
}
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}})
},
Key: 'S',
},
{
LabelColumns: []string{
self.c.Tr.LcSoftReset,

View File

@ -265,6 +265,7 @@ type TranslationSet struct {
LcDiscardAllChangesToAllFiles string
LcDiscardAnyUnstagedChanges string
LcDiscardUntrackedFiles string
LcDiscardStagedChanges string
LcHardReset string
LcViewResetOptions string
LcCreateFixupCommit string
@ -491,6 +492,7 @@ type TranslationSet struct {
HardResetAutostashPrompt string
UpstreamGone string
NukeDescription string
DiscardStagedChangesDescription string
Actions Actions
Bisect Bisect
}
@ -594,6 +596,7 @@ type Actions struct {
NukeWorkingTree string
DiscardUnstagedFileChanges string
RemoveUntrackedFiles string
RemoveStagedFiles string
SoftReset string
MixedReset string
HardReset string
@ -883,6 +886,7 @@ func EnglishTranslationSet() TranslationSet {
LcDiscardAllChangesToAllFiles: "nuke working tree",
LcDiscardAnyUnstagedChanges: "discard unstaged changes",
LcDiscardUntrackedFiles: "discard untracked files",
LcDiscardStagedChanges: "discard staged changes",
LcHardReset: "hard reset",
LcViewResetOptions: `view reset options`,
LcCreateFixupCommit: `create fixup commit for this commit`,
@ -1109,6 +1113,7 @@ func EnglishTranslationSet() TranslationSet {
CheckoutPrompt: "Are you sure you want to checkout '%s'?",
UpstreamGone: "(upstream gone)",
NukeDescription: "If you want to make all the changes in the worktree go away, this is the way to do it. If there are dirty submodule changes this will stash those changes in the submodule(s).",
DiscardStagedChangesDescription: "This will create a new stash entry containing only staged files and then drop it, so that the working tree is left with only unstaged changes",
Actions: Actions{
// TODO: combine this with the original keybinding descriptions (those are all in lowercase atm)
CheckoutCommit: "Checkout commit",
@ -1193,6 +1198,7 @@ func EnglishTranslationSet() TranslationSet {
NukeWorkingTree: "Nuke working tree",
DiscardUnstagedFileChanges: "Discard unstaged file changes",
RemoveUntrackedFiles: "Remove untracked files",
RemoveStagedFiles: "Remove staged files",
SoftReset: "Soft reset",
MixedReset: "Mixed reset",
HardReset: "Hard reset",

View File

@ -0,0 +1 @@
ref: refs/heads/master

View File

@ -0,0 +1 @@
02f629e46dbaa03b58196cced3df07b02c0daf22

View File

@ -0,0 +1,8 @@
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[user]
email = CI@example.com
name = CI

View File

@ -0,0 +1 @@
Unnamed repository; edit this file 'description' to name the repository.

View File

@ -0,0 +1,6 @@
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~

View File

@ -0,0 +1,5 @@
0000000000000000000000000000000000000000 22f24c5fcc97c1ff826ecb66b60bdc01937f6052 CI <CI@example.com> 1652009263 +0200 commit (initial): file0
22f24c5fcc97c1ff826ecb66b60bdc01937f6052 9e7ff93a5c67a0ef098e9e436961746f333edf98 CI <CI@example.com> 1652009263 +0200 commit: file1
9e7ff93a5c67a0ef098e9e436961746f333edf98 02f629e46dbaa03b58196cced3df07b02c0daf22 CI <CI@example.com> 1652009263 +0200 commit: file2
02f629e46dbaa03b58196cced3df07b02c0daf22 02f629e46dbaa03b58196cced3df07b02c0daf22 CI <CI@example.com> 1652009266 +0200 reset: moving to HEAD
02f629e46dbaa03b58196cced3df07b02c0daf22 02f629e46dbaa03b58196cced3df07b02c0daf22 CI <CI@example.com> 1652009266 +0200 reset: moving to HEAD

View File

@ -0,0 +1,3 @@
0000000000000000000000000000000000000000 22f24c5fcc97c1ff826ecb66b60bdc01937f6052 CI <CI@example.com> 1652009263 +0200 commit (initial): file0
22f24c5fcc97c1ff826ecb66b60bdc01937f6052 9e7ff93a5c67a0ef098e9e436961746f333edf98 CI <CI@example.com> 1652009263 +0200 commit: file1
9e7ff93a5c67a0ef098e9e436961746f333edf98 02f629e46dbaa03b58196cced3df07b02c0daf22 CI <CI@example.com> 1652009263 +0200 commit: file2

View File

@ -0,0 +1,3 @@
x��Á
Â0=ç+ö.È&ݦ.ˆ=õ3’æ )%‚Ÿo>ÁÛ0 ÌZKÙY‘K;²২ª)Úqò!Y€ï1KfSv
Qg§½ëIóB�yyáʱã¶Öò$ëGǬÎtåN¦Û>iø37yÛÁæÙ2+à

View File

@ -0,0 +1,3 @@
x+)JMU°΄d040031QHΛΜI5`°±Ί²ΰ�Φ¶wΑ‡ήw.½ωhοTΣ[H
�Ώe“ς"Η¨ΰSς,αΚgu"��YH
�$x~5(ν;χrΥΆπ�ώ–WΪσ-ΤΠ–+^

View File

@ -0,0 +1,2 @@
x�ŽÁ
Â0D=ç+ö.Èv›n<õ3²É ¦-5‚Ÿo.Þ½ üáŵ”¹uã¡îªÀ,ú˜BNŽÇ˜}O(YF묈ËÁyg­3[Øu©€”™¼ZNö2¸ÎsŒšú”q¤ˆí‰È„w}¬;Ü'¸Ü§›~BÙžzŠk¹BÇ!zb†#¶dZÛ¤ªþ97ó’ôë%¼uþYAžŸJæ  BP

View File

@ -0,0 +1,2 @@
x�ŽA
Â0E]çÙ 2™$"BW=F2™Á‚µ¥Dðøæî>�÷àó¶®K·.ã©"¶A"æÌ ¹p)Ø<iåTrÔæ=PÈ�‚3{9äÝ-¢bਣIìT¯H•¨ÔÆà²OJÑ”On‡�f{›æ‡|˺¿äÂÛz·Ž"d$oÏ0–tœêò§nty‰3?ÄÇ9Ø

View File

@ -0,0 +1,2 @@
x+)JMU03c040031QHヒフI5`ーアコイ燹ヨカwチ�w.ス��モ[H
矢y�5�来ミ(桍ァ ^-ンW(x9

View File

@ -0,0 +1 @@
02f629e46dbaa03b58196cced3df07b02c0daf22

View File

@ -0,0 +1 @@
test0

View File

@ -0,0 +1 @@
test1

View File

@ -0,0 +1 @@
hello there

View File

@ -0,0 +1 @@
hello there

View File

@ -0,0 +1 @@
{"KeyEvents":[{"Timestamp":1175,"Mod":0,"Key":256,"Ch":32},{"Timestamp":1991,"Mod":0,"Key":256,"Ch":68},{"Timestamp":2923,"Mod":0,"Key":256,"Ch":83},{"Timestamp":4453,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":213,"Height":56}]}

View File

@ -0,0 +1,26 @@
#!/bin/sh
set -e
cd $1
git init
git config user.email "CI@example.com"
git config user.name "CI"
echo test0 > file0
git add .
git commit -am file0
echo test1 > file1
git add .
git commit -am file1
echo test2 > file2
git add .
git commit -am file2
echo "hello there" > file1
echo "hello there" > file2
echo "hello there" > file3

View File

@ -0,0 +1 @@
{ "description": "Discarding staged changes", "speed": 5 }