3 回答
TA贡献1877条经验 获得超1个赞
如果要还原对工作副本所做的更改,请执行以下操作:
git checkout .
如果要还原对索引所做的更改(即已添加的内容),请执行此操作。警告这会将您所有未推送的提交重置为master!:
git reset
如果要还原已提交的更改,请执行以下操作:
git revert <commit 1> <commit 2>
如果要删除未跟踪的文件(例如,新文件,生成的文件):
git clean -f
或未跟踪的目录(例如,新目录或自动生成的目录):
git clean -fd
TA贡献1900条经验 获得超5个赞
注意:您可能还想运行
git clean -fd
如
git reset --hard
将不删除未跟踪文件,其中为git的清洁将从跟踪根目录不在下git的跟踪中删除任何文件。警告-请务必小心!首先使用git-clean进行空运行会很有帮助,以查看它将删除什么。
当您收到错误消息时,这也特别有用
~"performing this command will cause an un-tracked file to be overwritten"
这可能会在执行多项操作时发生,一种是当您和您的朋友都添加了一个同名的新文件时更新工作副本,但他先将其提交到了源代码管理中,并且您不必担心删除未跟踪的副本。
在这种情况下,进行空运行还将帮助您显示将被覆盖的文件列表。
TA贡献1810条经验 获得超4个赞
重新克隆
GIT=$(git rev-parse --show-toplevel)
cd $GIT/..
rm -rf $GIT
git clone ...
s删除本地非推送的提交
还原对跟踪文件所做的更改
s恢复已删除的跟踪文件
s删除列出的文件/目录.gitignore(如构建文件)
s删除未跟踪且不在其中的文件/目录 .gitignore
?您不会忘记这种方法
?浪费带宽
以下是我每天都会忘记的其他命令。
清理并重置
git clean --force -d -x
git reset --hard
s删除本地非推送的提交
还原对跟踪文件所做的更改
s恢复已删除的跟踪文件
s删除列出的文件/目录.gitignore(如构建文件)
s删除未跟踪且不在其中的文件/目录 .gitignore
清洁
git clean --force -d -x
s删除本地非推送的提交
还原对跟踪文件所做的更改
s恢复已删除的跟踪文件
s删除列出的文件/目录.gitignore(如构建文件)
s删除未跟踪且不在其中的文件/目录 .gitignore
重启
git reset --hard
s删除本地非推送的提交
还原对跟踪文件所做的更改
s恢复已删除的跟踪文件
s删除列出的文件/目录.gitignore(如构建文件)
s删除未跟踪且不在其中的文件/目录 .gitignore
笔记
确认以上所有条件的测试用例(使用bash或sh):
mkdir project
cd project
git init
echo '*.built' > .gitignore
echo 'CODE' > a.sourceCode
mkdir b
echo 'CODE' > b/b.sourceCode
cp -r b c
git add .
git commit -m 'Initial checkin'
echo 'NEW FEATURE' >> a.sourceCode
cp a.sourceCode a.built
rm -rf c
echo 'CODE' > 'd.sourceCode'
也可以看看
git revert 进行新的提交以撤消先前的提交
git checkout 及时返回到先前的提交(可能需要先运行以上命令)
git stash与git reset上述相同,但是您可以撤消它
- 3 回答
- 0 关注
- 1755 浏览
添加回答
举报