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^   //  回退到上一版本,然后重新修改后提交

原文地址:https://www.cnblogs.com/dzqdzq/p/13291609.html