注:用于个人记录git命令,记录日常使用过以及查询过的git用法,仅供参考与备忘。
git工作区、暂存区、版本库
- 工作区:working diretory,就是你在电脑里能看到的目录。
- 暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
git rm --cached <file>
删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制。
运行之后会出现
deleted: <file>
和
untracked files:
<file>
git撤销add和撤销commit
git checkout . #撤销工作区所有修改
git checkout -- <file> #撤销工作区某个文件修改,
#这个操作很危险,会清除工作区中未添加到暂存区的改动!
git checkout HEAD . #直接撤销add到暂存区的内容,并撤销工作区内的修改。
#结果会是nothing to commit, working tree clean
git checkout HEAD -- <file> #对暂存区文件:直接撤销修改(修改不会进入工作区)
#对工作区修改:撤销其修改
#git checkout HEAD这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
git reset HEAD #撤销所有文件的add
git reset HEAD -- <file> #撤销add。清空add命令向暂存区提交的关于file文件的修改(Ustage)
#-- 的作用是:将这之后的每个参数都视为文件名,若只有一个文件,可以不加 --
git reset --soft HEAD^ #撤销commit。
branch - How to remove local (untracked) files from the current Git working tree - Stack Overflow
清理本地untracked files
Step 1: is to show what will be deleted by using the -n
option:
# Print out the list of files and directories which will be removed (dry run)
git clean -n -d
Step 2:Clean Step - beware: this will delete files:
# Delete the files from the repository
git clean -f
- To remove directories, run
git clean -f -d
orgit clean -fd
- To remove ignored files, run
git clean -f -X
orgit clean -fX
- To remove ignored and non-ignored files, run
git clean -f -x
orgit clean -fx
Again see the