襄阳南漳县城乡建设局网站,石家庄百度搜索优化,什么是境外电商?,北京值得去的互联网公司首先#xff0c;我们得了解git reset命令的形式之一#xff1a;
git reset [mode] [commit]
此命令的作用是恢复HEAD分支到commit位置#xff0c;并根据mode决定是否恢复index file和working tree。恢复是指将staging area和working tree…首先我们得了解git reset命令的形式之一
git reset [mode] [commit]
此命令的作用是恢复HEAD分支到commit位置并根据mode决定是否恢复index file和working tree。恢复是指将staging area和working tree的状态还原到commit的状态如果不指定commit则默认为last commit。如果没有pick哪个mode即omitted mode则mode默认为–mixed。commit可以为commit的hash id或引用值。
此外mode还有两个值–soft和–hard。
–soft不会改动(touch) index file和working tree但是会撤销head到commit之间的all history这是三个模式所共有的作用。
$ git statusOn branch mainChanges not staged for commit:(use git add file... to update what will be committed)(use git restore file... to discard changes in working directory) modified: README.mdno changes added to commit (use git add and/or git commit -a)$ git add README.md$ git statusOn branch mainChanges to be committed:(use git restore --staged file... to unstage) modified: README.md$ git log --graph --oneline\* 0a071ac (HEAD - main) A\* 0c888f4 Initial Commit$ git reset --soft 0c888f4$ git statusOn branch mainChanges to be committed:(use git restore --staged file... to unstage) modified: README.md$ git log --graph --oneline\* 0c888f4 (HEAD - main) Initial Commit可以观察到commit A的committed changes都reset为staged changes to be committed。原本已经stage等待commit的changes不会被reset。HEAD指向commitHEAD到commit的提交都会被undo。
–mixed在–soft的基础上进一步reset它会恢复index到commit时的状态。已经在index中的changes会reset回working treenote that modify working tree≠reset working tree。
$ git reset 0c888f4Unstaged changes after reset:M README.mdgit reset会报告影响到的changes。
–hard会在–mixed的基础上恢复working tree的状态。被跟踪的changes会被丢弃。
Any untracked files or directories in the way of writing any tracked files are simply deleted.
Git文档中的这句话我不是太理解通过询问ChatGPT翻译为任何阻碍跟踪文件的写入的未跟踪文件或目录将被删除。
下面是一个Stack Overflow对该疑问的解释代码例子
There is a case in which git reset --hard has effects on untracked files.$ touch a.txt$ git add .$ git commit -mA$ echo hello a.txt$ git add .$ git commit -mB$ git rm a.txt$ echo world a.txt$ git status -sThe status output isD a.txt?? a.txtThe a.txt in the index is removed and the one in the work tree is untracked.$ cat a.txtworldReset in the mode of --hard,$ git reset --hard$ cat a.txthello$ git statusOn branch masternothing to commit, working tree cleanThe untracked a.txt in the work tree is deleted. But we could also say it’s been overwritten with the tracked a.txt in HEAD.