我有一些本地更改(不在单独的文件中,因此.gitignore不起作用),我不想提交.
我git reset --hard有时会在承诺清除偶尔的变化之后但是我也会失去我想要离开的有用变化.
我如何保持有用的变化?
为了还原工作树和索引中的更改,此答案(/sf/answers/406908071/)建议执行以下操作:
git reset --hard
Run Code Online (Sandbox Code Playgroud)
运行它会像运行一样git reset --hard HEAD吗?
一两个星期前,我拿了一些我用一个简单的find |sed|tar|xz|gpgbash 脚本存档的文件,把它们全部解压,然后把它们的内容放在一个 git repo 中,提交,把下一个存档内容放在 repo 中,提交(冲洗并重复)为了有一个更好的系统。
所有文件都是在我的两台计算机中的一台上编辑的,都使用 Arch Linux,在 TeXstudio 或 Vim 中。
我试图签出一个旧版本,但它翻了出来——它不会让我因为更改非常出色。我尝试了所有我知道的方法,然后去谷歌寻找我不知道的东西。
关于这个主题还有许多其他问题。不幸的是,他们的回答对我没有帮助。为了完成,我将列出问题。
$ git status
在分支 master 上
没有为提交而暂存的更改:(
使用“git add ...”更新将提交的内容)
(使用“git checkout -- ...”放弃工作目录中的更改)修改:Arcs/arc1.tex
修改:Arcs/arc2.tex
修改:Arcs/frontmatter.tex未向提交添加任何更改(使用“git add”和/或“git commit -a”)
另外,所以人们不需要看下面,我已经做了显而易见的事情。
git reset --hard
git -a commit
git stash
git pull
Run Code Online (Sandbox Code Playgroud)
以及从索引中删除所有内容并将其添加回来。
我不在 Windows 上。此外,这应该与行尾有关,因为我是唯一的用户。没有理由出现奇怪的行尾。
git reset --hard HEAD (among other possibilities)
Run Code Online (Sandbox Code Playgroud)
git stash
git stash drop
Run Code Online (Sandbox Code Playgroud)
git config core.autocrlf input
git rm --cached -r …Run Code Online (Sandbox Code Playgroud) 我尝试软重置我的分支以删除我不小心推送到 GitHub 的目录。软重置后,我仍然收到以下错误:
fatal: Unable to create '/Users/mprestemon/vagrant-local/www/national-fuel/public_html/wp-content/.git/index.lock': File exists.
Another git process seems to be running in this repository, e.g.
an editor opened by 'git commit'. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.
Run Code Online (Sandbox Code Playgroud)
我发现另一篇 StackOverflow 文章说要使用以下命令删除 .git/index.lock:
rm -f ./.git/index.lock
Run Code Online (Sandbox Code Playgroud)
当我运行该命令并尝试从另一个分支签出或拉取时,我现在得到这个 BUG:
BUG: unpack-trees.c:699: pos must point at the first entry in this directory
Run Code Online (Sandbox Code Playgroud)
我不知道如何清理我的存储库并确保所有 git …
我在尝试将文件还原到以前的提交时遇到问题,我知道我可以git checkout用来还原单个文件,但问题是我在该文件中有更改我想保留所以我想知道如何做一些上一次提交与单个文件的当前HEAD之间的"合并"?我尝试使用,git reset sha-of-my-commit path/to/my/file但它将以前的版本放在暂存区域,同时保持我的工作目录上的最新版本不确定如何在它之后合并两个文件.
我现在所做的git diff ..sha-of-my-commit path/to/my/file只是复制/粘贴缺失的行,但我相信必须有更好的方法来做到这一点吗?
我只想回到一个干净的工作目录,就像我上次提交后一样.Git向我报告了一些我没有做过的文件修改,所以我怀疑它与行结尾有关.
我已经尝试了所有常见的嫌疑人这样做:
git reset --hard
git commit -- .
git stash
git clean -fd
无论我做什么,git status总是显示与修改相同的文件.我能做什么?我在另一个分支中隐藏了未提交的更改,所以我不想只是爆炸一切,而只是"回滚"我的主分支.
编辑:输出
$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: demo/index.html
# modified: demo/js/app.js
# modified: demo/js/libs/jquery.1.7.1.js
# modified: demo/js/libs/matchMedia.js
# modified: demo/js/libs/modernizr.js
# modified: demo/js/loadr.js
# modified: dist/enquire.js
# modified: …Run Code Online (Sandbox Code Playgroud) 我想清除一些未提交文件的工作目录,但不小心跑了git reset --hard.
我意识到我丢失了之前的(未推送)提交,所以我跑了git reset --hard ORIG_HEAD.这并没有让我失去承诺.
我跑了git reflog,但提交没有在那里列出.我也跑了git fsck --lost-found,但是列表中没有提交,只有少数不相关的blob和树.
由于我找不到丢失提交的任何引用(除了.git/COMMIT_EDITMSG仍然有相关的提交消息和更改列表),我不知道如何恢复提交.
有没有什么方法可以让丢失的提交回来,或者我应该为全明星做好准备吗?
我做了一个提交,拉取并合并了一些更改,然后进行了第二次提交.当我想回到第一次提交时,我运行了命令
git reset --hard <sha hash>
Run Code Online (Sandbox Code Playgroud)
虽然响应是"HEAD现在位于<sha hash>",但我的代码看起来就像我运行该命令之前一样.通常,它会改变我以前的状态,但看起来有些东西不能正常工作.在重置头之前,是否需要运行不同的命令才能取消合并?
我跑的git status时候说:
app/assets/images/.DS_Store.orig未跟踪
我可以添加它.
据git reflog我所知,在我提交hash1之前(我认为"在合并之前").拉有一个sha hash2(git log没有显示).当我挖掘hash1和hash2时,我看到了我所做的更改,并且可以从中重建我的原始代码.不过,这似乎很奇怪.如果我尝试git reset其中任何一个,我无法在合并之前获取我的代码.
假设我要撤消先前提交引入的所有更改.
据我所知,git reset --hard <specified commit>将删除所有提交,直到指定的提交,并撤消所有更改.
另一方面,git checkout <specified commit>将更改我的目录以反映指定的提交.
所以,如果我git reset之后git checkout会有与之相同的结果git reset --hard吗?
或者,如果我git commit之后git checkout,新创建的提交是否会覆盖现有的提交?
我在git repo中提交了一个提交,并推送了它,但是不小心它包含了我们生产机器的一些密码。所以我删除了提交:
git reset --hard HEAD~1
git push --force
Run Code Online (Sandbox Code Playgroud)
确实确实从提交列表中删除了提交,但是gitlab上的提交网址仍然显示了提交的来源。
我不确定这是git仍将提交内容保存在gitlab服务器上,还是gitlab数据库以某种方式存储提交内容,但是我确实需要从gitlab服务器中完全删除该提交。
有谁知道从gitlab完全删除提交及其内容的方法吗?