假设您有一个git repo文件夹,位于/path/to/myrepo_git
。假设您已经在工作副本/path/to/myrepo_git/a.txt
,/path/to/myrepo_git/b.txt
和/path/to/myrepo_git/subdir/c.txt
中进行了更改。
现在,说您要放弃这些更改。如果您位于git repo根目录(此处为/path/to/myrepo_git
)中,那么这很简单:
user@PC:/path/to/myrepo_git $ git checkout -- .
但是,如果您位于git repo文件夹的子目录中,我想您首先必须到达git repo的根,然后才能使用git checkout
摆脱所有更改,否则git checkout
只会删除子目录中的更改-例如,您可以这样做:
user@PC:/path/to/myrepo_git/subdir $ cd "$(git rev-parse --show-toplevel)"
user@PC:/path/to/myrepo_git $ git checkout -- .
user@PC:/path/to/myrepo_git $ cd subdir/ # to go back to where I was before
所以,我的问题是-是否有单个git命令,因此即使我当前在子目录中,我也可以丢弃工作副本中的所有更改(这样,在完成该过程后,我仍然会保留在同一个子目录中?
答案 0 :(得分:4)
您可以为git checkout
命令使用任何路径,所以可以这样做
git checkout -- "$(git rev-parse --show-toplevel)"