相关疑难解决方法(0)

如何git reset --hard一个子目录?

更新:从Git 1.8.3开始,这将更直观地工作,请参阅我自己的答案.

想象一下以下用例:我想摆脱我的Git工作树的特定子目录中的所有更改,保留所有其他子目录.

什么是适合此操作的Git命令?

下面的脚本说明了这个问题.在How to make files注释下面插入适当的命令- 当前命令将恢复a/c/ac应该由稀疏检出排除的文件.请注意,我希望明确恢复a/aa/b,我只"知道" a,并希望下面恢复一切.编辑:我也不"知道" b,或者与其他目录位于同一级别a.

#!/bin/sh

rm -rf repo; git init repo; cd repo
for f in a b; do …
Run Code Online (Sandbox Code Playgroud)

git reset sparse-checkout git-reset

178
推荐指数
7
解决办法
12万
查看次数

Git - 丢弃添加的文件

看起来这应该是超级简单的,但寻找一个简单(或中途直截了当)的解决方案似乎是不可能的:

假设我将一堆文件添加到Git项目中."git status"现在说:

# On branch master  
# Untracked files:  
#   (use "git add <file>..." to include in what will be committed)  
#  
#   Classes/FileA.h  
#   Classes/FileA.m  
#   Classes/FileB.h  
#   Classes/FileB.m  
nothing added to commit but untracked files present (use "git add" to track)  
Run Code Online (Sandbox Code Playgroud)

然后,我决定放弃这些文件并恢复到项目中的原始状态.在继续之前我是否必须删除每个文件?!!

我试过了:

git checkout master  
Run Code Online (Sandbox Code Playgroud)

它给出了"已经'掌握''和'

git reset --hard HEAD
Run Code Online (Sandbox Code Playgroud)

但是我添加的文件仍然适用于这两种方法.

我已经阅读了整个Git教程(http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html)以及各种手册页.

为什么这么难做?!!

git

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

如何放弃未分阶段的更改

我在本地机器上做了一些更改,我不想保留它们。

当我执行拉取以从服务器获取最近的更改时,我收到一条消息,说我有未暂存的更改,我必须提交或存储它们。

但我不想这样做。我想取消它们。这该怎么做?

git

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

丢弃所有未提交的更改、修改的文件、添加的文件和未添加的文件

使用 Git 丢弃未提交更改的最佳方法是什么。

我读了这个,但想完全了解每一步在做什么。

git 撤销所有未提交或未保存的更改

git reset
Run Code Online (Sandbox Code Playgroud)

“这将取消暂存您可能使用 git add 暂存的所有文件”,取消暂存是什么意思?

这是否意味着删除任何添加的文件?

git checkout .
Run Code Online (Sandbox Code Playgroud)

“还原所有本地未提交的更改(应在 repo root 中执行)”

什么被认为是根?如果我在分支 A 并且我想忽略分支 A 上所有未提交的更改,分支 A 是否被视为根?

git clean -fdx
Run Code Online (Sandbox Code Playgroud)

“警告:-x 还将删除所有被忽略的文件,包括 .gitignore 指定的文件!您可能需要使用 -n 来预览要删除的文件。”

这是在删除我的文件吗?包括被忽略的文件?如果忽略的文件没有改变怎么办?

我只是想回到上次提交,而不用担心之后的任何更改。最简单、最安全的方法是什么?

git git-reset

2
推荐指数
2
解决办法
8495
查看次数

标签 统计

git ×4

git-reset ×2

reset ×1

sparse-checkout ×1