工作目录、暂存区以及版本库概念
版本库:==.git==隐藏文件就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
暂存区:.git文件夹中==index==文件就是暂存区,也可以叫stage。暂存区是一个临时保存修改文件的地方
工作区 ----->暂存区 ------->版本库
工作目录:包含.git文件夹的目录就是工作目录
状态:
-
untracked末跟踪(未纳入版本控制)
-
tracked已跟踪(已纳入版本控制)
-
Unmodified 未修改状态
-
Modified 已修改状态
-
Staged 已暂存状态
-
git status //查看文件状态在工作目录下 git status -s //查看更简洁 绿色 //文件存放在暂存区有待提交 红色 //文件在工作目录未提交到暂存区
-
Git基本命令
配置基本信息
设置用户信息
git config --global user.name "用户名"
git config --global user.email "email"
查看配置信息
git config --list
git config user.name
配置的信息保存在用户下==.gitconfig==文件中
git生成
git init //初始化,在目录中会生成.git文件
git clone //从远程仓库克隆
git提交
git add //将修改工作目录覆盖原先的暂存区
git commit -m "说明" //将暂存区提交到版本库
git commit -am "说明" //将工作目录提交到版本库
git撤消
git log --查看历史操作记录
git reset HEAD~ //注:HEAD 表示最新提交的快照,而 HEAD~ 表示 HEAD 的上一个快照,HEAD~~表示上上个快照,如果表示上10个快照,则可以用HEAD ~10
此时我们的快找回滚到了第二棵数(暂存区域)
git删除文件
问题一:不小心删除文件怎么办?
git checkout -- 删除的文件 //回滚
问题二:那么如何彻底删除一个文件呢?
git rm 文件 //删除文件注意:rm 命令删除的只是工作目录和暂存区域的文件(即取消跟踪,在下次提交时不纳入版本管理)
执行git status还会提示但似乎有个文件在暂存区域和当前目录不见了!
git reset --soft HEAD~ //命令将快照回滚到上一个位置,然后重新提交
问题三:我在工作目录中增加一个 test.py 文件,然后执行 git add test.py 命令将其添加到暂存区域,此时我修改 test.py 文件的内容,那么暂存区域和工作目录就是两个不同的 test.py 文件了,此时如果我执行 git rm test.py 命令,Git 会下意识地阻止我,这是怎么办?
因为两个不同内容的同名文件,谁知道你是不是搞清楚了都要删掉?
git rm -f test.py //命令就可以把两个都删除。
问题四:我只想删除暂存区域的文件,保留工作目录的,应该怎么操作?
git rm --cached 文件名
git重命名
git ren 旧文件名 新文件名
git分支
git branch 分支名 //新建分支
git checkout 分支名 //切换分支
git merge 分支名 //合并到时master主分支上