我经常使用git stash并git stash pop保存和恢复工作树中的更改.昨天我的工作树上有一些变化,我已经藏起来了,然后我对工作树做了更多改动.我想回去查看昨天发生的变化,但git stash pop似乎删除了对相关提交的所有引用.
我知道如果我使用git stash那么.git/refs/stash包含用于创建存储的提交的引用.而.git/logs/refs/stash包含整个存储.但那些参考文献已经消失了git stash pop.我知道提交仍然在我的存储库中,但我不知道它是什么.
有没有一种简单的方法来恢复昨天的隐藏提交引用?
请注意,这对我来说并不重要,因为我有每日备份,可以回到昨天的工作树来获取我的更改.我问,因为必须有一个更简单的方法!
有没有办法使用命令git ls-files,只显示未跟踪的文件?
我问的原因是因为我使用以下命令来处理所有已删除的文件:
git ls-files -d | xargs git rm
Run Code Online (Sandbox Code Playgroud)
对于未跟踪的文件,我想要类似的东西:
git some-command --some-options | xargs git add
Run Code Online (Sandbox Code Playgroud)
我能够找到-o选项git ls-files,但这不是我想要的,因为它也显示了被忽略的文件.我还能够提出以下长而丑陋的命令:
git status --porcelain | grep '^??' | cut -c4- | xargs git add
Run Code Online (Sandbox Code Playgroud)
似乎我必须在这里使用更好的命令.如果没有,我如何创建自定义git命令?
是否有可能要求git diff在其diff输出中包含未跟踪的文件?或者我最好的选择是添加我创建的新文件以及我编辑和使用的现有文件
git diff --cached
Run Code Online (Sandbox Code Playgroud)
?
如果我运行git stash -u,我可以存储未跟踪的文件.但是,所说的未跟踪文件根本没有出现git stash show stash@{0}.有没有办法在不应用存储的情况下显示未跟踪的存储文件?
我对git很新,我正试图以正确的方式设置我的存储库.
基本上我的应用程序是各种平台,因此该平台的实现基于主分支,但对这些文件以及一些其他文件进行了一些小的修改.
我尝试将其设置为分支,因此我有一个master分支,implementation_1并且implementation_2.
但据我所知,这意味着本地所有分支都存储在一个目录中,它们的分离只能通过git.
我想是有3个本地目录,master,imp_1,和imp_2.如果我对imp_1目录中的一个核心文件进行了更改,我希望能够将该更改合并到master分支中并从那里合并到imp_2.
我开始认为这些需要是3个不同的存储库(实现是核心的分支).这是要走的路吗?在那种情况下,我将如何处理上述情况?
所以这就是发生了什么:我在一个分支'A'上并在那个分支上做了一个Git藏匿.然后我切换到另一个分支'B'.我导航回分支'A',但没有做Git stash pop.我切换到主分支然后回到分支'A'.我现在试图去一个git stash pop但是似乎无法恢复我的更改..我需要恢复该代码但是每当我执行git stash pop时,我的文件更改都没有列出.我没有提交任何代码.
有没有办法恢复我所做的更改?非常感谢这方面的任何帮助.
我不是git的专家,但我已经使用它几年了.最近我注意到一些与藏匿有关的奇怪行为.它似乎只对我有用.
例如,今天我试图隐藏4个未提交的更改.1个文件被添加到存储,其余3个保留为未提交的更改.尝试了几次,在第一次尝试后,我刚刚收到"没有保存的本地更改",但状态仍显示3个未提交的更改.
然而,巧合的是,我发现当我第一次进行先前无法改变的变化时,它们将被正常隐藏.我玩过,这是可重复的:如果所有更改都未提交,则只保留一个更改.如果"问题"的变化被暂存,那么所有的变化都会被搁置(无论是否"好"变更是否上演都无关紧要,它将始终存储).
这是一个错误还是我做错了什么?
我正在使用Git for Windows 2.8.2和Git Extensions 2.48.05.
我是否尝试通过Git Extensions GUI或通过控制台存储更改并不重要.
编辑:如果我在存储之前暂存所有4个更改,当我进行存储弹出时,3个问题的更改将像以前一样暂存,但是总是存储的良好更改是未提交的.因此,存储弹出不会将状态转换为存储之前的状态.这也是可重复的.
我正在使用Visual Studio 2017的团队资源管理器来处理git存储库。
每次使用git stash或时git stash pop,我都需要打开Git Bash控制台并导航到我的项目文件夹并运行命令。
有什么办法可以隐藏在Visual Studio(2017)中吗?
有没有可能开始跟踪git中的文件而不将它们添加到索引?
我有新的文件,我想生存下来git clean,但可能会在下次提交之前更改.我现在只是将它们添加到索引中,然后在提交之前再次添加它们吗?
git ×10
git-stash ×4
diff ×1
git-ls-files ×1
git-rm ×1
git-stage ×1
git-status ×1
github ×1
recovery ×1