git 笔记
创建仓库: git init
添加新文件文件到stage: git add <file1> <file1> ...
git add . 表示添加当前目录的改动到暂存区stage
保存stage到仓库(相当于快照): git commit -m "注释"
说明:stage就是暂存区
说明:
工作区可以理解为整个项目目录。
仓库(版本库.git目录)是工作区的一部分, 记录整个项目哪些需要版本管理,哪些需要忽略.gitignore。
暂存区是工作区到版本库管理的临时区域。可以假想中间区域。 任何时候工作内容要进行版本管理的时候都要经过暂存区。
经常会出现这种情况 change file -> add file -> change file -> commit 。 它只会提交第一次修改,因为第二次修改没有进入stage
如Untracked files就是没有跟踪的文件,也就是还没有进行版本管理,不在版本库中。
On branch master Changes 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.txt Untracked files: (use "git add <file>..." to include in what will be committed) LICENSE no changes added to commit (use "git add" and/or "git commit -a")
修改文件提交到stage:git add <change file>
说明: git 有stage的概念。 add rm 等命令都是对这一阶段的操作, 然后把这一阶段的操作都保存起来,就用git commit.
查看当前仓库状态: git status
查看当前仓库变化的具体内容: git diff
说明:是版本库和工作区的内容进行比较。 如:git diff HEAD -- readme.txt
从stage撤销文件: git restore --staged <file>...
查看仓库日志(也就是git commit的操作日志): git log 或者漂亮的输出: git log --pretty=oneline
回退到上一个版本: git reset --hard HEAD^
回退到上上个版本: git reset --hard HEAD^^
回退到上上上个版本: git reset --hard HEAD^^^
回退到上100个版本: git reset --hard HEAD~100
说明:执行git reset --hard之后,本地的内容就会回到相应的版本。 且仓库日志里没有你回退的记录了。即从仓库里删除了版本。
如果回退错误了,需要进行还原:git reset --hard 33a0c1f
说明:33a0c1f 是你要回退的ID,可以通过git reflog命令找到相应commit_id.
查看命令历史记录:git reflog
丢弃本地工作区修改:git checkout -- file
如果想丢弃修改但已经添加到暂存区的文件:git reset HEAD <file>...
如果想还原修改但已经提交到本地仓库的文件( 前提是没有提交到远程仓库):
git reset --hard HEAD^ // 回退到上一版本,然后重新修改后提交