标签: git-reset

在git reset --hard之后,uncommited和unstated文件会发生什么?

我正在尝试理解git reset命令.我有一个包含文件file_1的初始commit_A.

  • 现在我在我的工作目录中添加了file_2,我没有上传.如果我git reset --hard现在运行,file_2仍然在工作目录中.

  • 但是,如果我暂存file_2然后运行git reset --hard,则file_2将被取消暂停并从工作目录中删除.

为什么在第二种情况下将file_2从工作目录中删除而在第一种情况下不删除?

git git-reset

1
推荐指数
1
解决办法
129
查看次数

撤消 git add、commit 和 push 而不会丢失未跟踪的文件

我不小心添加、提交并将我所有未跟踪的文件推送到远程存储库,在那里它们会令我的合作者烦恼。

从那以后,我还进行了另外两次提交,其中一次是通过 git pull 与远程合并。

我想撤消这一系列操作并将我的目录恢复到以前的状态(包括未跟踪的文件)。

使用我尝试过的所有命令(签出、还原、重置、变基),我的未跟踪文件由于撤消提交而丢失。

我该怎么办?

git undo git-rebase git-revert git-reset

1
推荐指数
1
解决办法
535
查看次数

无法提交文件,意外地用mv重命名

我不小心用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 github git-reset git-branch git-mv

1
推荐指数
1
解决办法
1797
查看次数

删除暂存文件并重置为原始版本

如果我在暂存区域中有一个文件(显示在 中git diff --cached)并且我想完全删除它,我该怎么做?
正在做

git reset HEAD -- file  
git checkout -- file  
Run Code Online (Sandbox Code Playgroud)

是的,但是这 2 个操作有 1 个命令吗?

git git-reset git-stage

1
推荐指数
1
解决办法
3494
查看次数

如何重置master并将分支保留在git中?

假如我做

$ 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 git-reset

0
推荐指数
1
解决办法
1270
查看次数

Git跟踪未跟踪的文件而不添加提交

我运行了“ 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 version-control git-reset git-stage git-untracked

0
推荐指数
1
解决办法
1654
查看次数

`git rebase` 与 `git reset --hard` ......它们删除最近的 N 次提交是否相同?

我理解,一般来说,git rebase -i并且git reset用于非常不同的事情。

但是在删除最近的 N 次提交的情况下,在我看来它们是(或可以是)相同的。我什至做了一个实验(我的存储库有两个不同的本地副本),据我所知,它们是相同的。我只是发布这个问题,以防有人可以指出我可能遗漏了什么。所以这就是我所做的。

我需要删除最近的 11 次提交(不管为什么)。

我尝试了两种方法,它们看起来完全相同;只是想知道我是否遗漏了什么,因为它们并不完全相同:

  1. git rebase -i HEAD~12
  • 从我不想要的 11 个提交中删除提交行,只保留它们之前的提交(交互式 rebase 文件顶部的那个)。
  • 变基成功
  1. git reset --hard HEAD~12

这两种方法似乎做了完全相同的事情。那是对的吗?

非常感谢。只是想比我现在更深入地了解 git。

git git-rebase git-reset

0
推荐指数
1
解决办法
152
查看次数

Tortoise 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 tortoisegit git-reset

0
推荐指数
1
解决办法
4671
查看次数

git reset --soft“ HEAD ^ 6”是什么意思?

我跑完git reset --soft "HEAD^6"之后在本地回购区中误跑了git reset --soft "HEAD^"

现在我可以找到超过100个具有本地更改的文件

什么git reset --soft "HEAD^6"意思

编辑:对于那些会问我为什么这样做的人,这是一个错字。

git git-reset

-1
推荐指数
1
解决办法
155
查看次数