我正在尝试理解git reset命令.我有一个包含文件file_1的初始commit_A.
现在我在我的工作目录中添加了file_2,我没有上传.如果我git reset --hard现在运行,file_2仍然在工作目录中.
但是,如果我暂存file_2然后运行git reset --hard,则file_2将被取消暂停并从工作目录中删除.
为什么在第二种情况下将file_2从工作目录中删除而在第一种情况下不删除?
我不小心添加、提交并将我所有未跟踪的文件推送到远程存储库,在那里它们会令我的合作者烦恼。
从那以后,我还进行了另外两次提交,其中一次是通过 git pull 与远程合并。
我想撤消这一系列操作并将我的目录恢复到以前的状态(包括未跟踪的文件)。
使用我尝试过的所有命令(签出、还原、重置、变基),我的未跟踪文件由于撤消提交而丢失。
我该怎么办?
我不小心用mv重命名了一个git下的文件.我将文件从小写重命名为大写,保持名称相同.
mv abc.java ABC.java
之后我也做了更改并提交了文件.
我现在如何对该文件进行实际的git重命名?Git bash似乎不理解ABC.java和abc.java之间的区别.
我不确定master(由其他人)发生了什么变化,但在转移到分支后,我无法将更改提交给文件.它说旧的文件索引仍然存在.
$ git commit -m"重命名为大写"ABC.java致命:不会添加文件别名'dir1/ABC.java'('dir1/abc.java'已存在于索引中)
当我执行git状态时,它会显示重命名的文件但不允许我提交重命名的文件.如果我尝试删除abc.java(实际上至少在本地不存在),再次(我认为由于不区分大小写)git删除新的.
如果我克隆了一个新的repo,那么repo仍然会删除带有旧名称(abc.java)的文件,但是我的所有更改都会在其中出现最近失败的文件.
如果我在暂存区域中有一个文件(显示在 中git diff --cached)并且我想完全删除它,我该怎么做?
正在做
git reset HEAD -- file
git checkout -- file
Run Code Online (Sandbox Code Playgroud)
是的,但是这 2 个操作有 1 个命令吗?
假如我做
$ git checkout master
$ touch foo.py
$ git commit -m "oops" foo.py
$ git checkout -b new_branch
$ touch bar.py
$ git commit -m "changes" bar.py
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试推迟对new_branch的更改时,我得到
Local branch 'master' is ahead of remote branch 'origin/master'
Run Code Online (Sandbox Code Playgroud)
如何在不丢失new_branch上的更改(foo.py,bar.py)的同时重置master?
我读了git reset页面,它看起来可能涉及--keep,但是我不知道。
我运行了“ git reset”命令,但是我的未暂存更改已放入文件夹中。运行git status后,我得到如下内容:
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: file1
modified: file2
modified: file3
modified: file4
modified: file5
Untracked files:
(use "git add <file>..." to include in what will be committed)
folder1
folder2
folder3
folder4
Run Code Online (Sandbox Code Playgroud)
每个文件夹都包含我修改过的多个文件,但是由于某种原因被归类到这些文件夹中。
我需要将这些更改分成多个拉取请求,因此“ git commit -a”将不会执行。
我看到的最佳解决方案是“ git add -all”,复制“ git status”,然后再次“ git reset”,但这似乎很费劲。
有更好的解决方案吗?
我理解,一般来说,git rebase -i并且git reset用于非常不同的事情。
但是在删除最近的 N 次提交的情况下,在我看来它们是(或可以是)相同的。我什至做了一个实验(我的存储库有两个不同的本地副本),据我所知,它们是相同的。我只是发布这个问题,以防有人可以指出我可能遗漏了什么。所以这就是我所做的。
我需要删除最近的 11 次提交(不管为什么)。
我尝试了两种方法,它们看起来完全相同;只是想知道我是否遗漏了什么,因为它们并不完全相同:
git rebase -i HEAD~12git reset --hard HEAD~12这两种方法似乎做了完全相同的事情。那是对的吗?
非常感谢。只是想比我现在更深入地了解 git。
我正在使用 Tortoise GIT,并且想放弃最近的提交并恢复到特定的提交。
我的尝试如下。
当我尝试推送时出现错误
[rejected] my branch -> mybranch (non-fast-forward)
hint: Updates were rejected because the tip of your current branch is
behind hint: its remote counterpart. Integrate the remote changes
(e.g. hint: 'git pull ...') before pushing again.
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
有关信息,我尝试选择提交并选择恢复,但是这在从另一个分支合并的两个提交上失败了。因此,我想跳过恢复并重置到这些提交之前的版本。
我没有权限强制推送。
如果我执行拉动,这只会恢复到原来的头部。
谢谢你的帮助。
我跑完git reset --soft "HEAD^6"之后在本地回购区中误跑了git reset --soft "HEAD^"
现在我可以找到超过100个具有本地更改的文件
什么git reset --soft "HEAD^6"意思
编辑:对于那些会问我为什么这样做的人,这是一个错字。
git ×9
git-reset ×9
git-rebase ×2
git-stage ×2
git-branch ×1
git-mv ×1
git-revert ×1
github ×1
tortoisegit ×1
undo ×1