我是git的新手,并不清楚stashing是如何工作的.
假设我正在分支主服务器上工作并尝试git pull接收错误,即我的本地更改将被覆盖并需要被隐藏或提交.如果我没有上演我的任何更改并运行git stash,那么做一个git pull并成功更新,当我发生了什么git stash apply?
一般来说,如果其他人修改文件并且我运行git pull,那么当我发生时会发生什么run git stash apply?它是否会覆盖刚刚更新的文件,无论它们是否在我存储时被暂存?它是否会覆盖我刚刚更新过的每个文件,git pull以及被隐藏的文件?
我想隐藏未跟踪的文件,但我继续传递错误的选项.对我来说这听起来是对的:
git stash save [-a|--all]
Run Code Online (Sandbox Code Playgroud)
但实际上这也隐藏了文件.正确的是:
git stash save [-u|--include-untracked]
Run Code Online (Sandbox Code Playgroud)
当我运行git stash save -a并尝试git stash pop它时,我得到所有被忽略文件的无数错误:
path/to/file1.ext already exists, no checkout
path/to/file1.ext already exists, no checkout
path/to/file1.ext already exists, no checkout
...
Could not restore untracked files from stash
Run Code Online (Sandbox Code Playgroud)
所以命令失败了.
如何恢复跟踪和未跟踪的更改?git reflog不存储存储命令.
如何通过以下命令确定阻止提交被git修剪的内容?
git reflog expire --expire=now --all
git gc --prune=now
Run Code Online (Sandbox Code Playgroud)
细节
我想XYZ从我的克隆中完全删除提交(例如,提交哈希).如果以上不是正确的命令(或者如果以下任何命令/扣除不正确),请告诉我.
我知道XYZ在运行上面的剪枝后仍然在我的克隆中,因为以下内容返回日志列表:
git log XYZ
Run Code Online (Sandbox Code Playgroud)
我知道这XYZ不在任何分支中,因为以下输出没有:
git branch --contains XYZ
Run Code Online (Sandbox Code Playgroud)
我认为这XYZ不是任何存储因为以下输出没有:
git stash list
Run Code Online (Sandbox Code Playgroud)
XYZ然而,实际上是在藏匿,但git bug阻止了藏匿列表.