1、工作区域和文件状态
1.1、工作区域
git的数据管理分为四个区域:
- 工作区(Working Directory)
本地工作目录,是我们电脑上的目录,是我们实际编写代码的区域,修改完工作区的文件后可以使用
git add命令
将工作区中的文件添加到暂存区。
- 暂存区(Stage/Index)
暂存区是一个临时的存储区域。暂存区的作用是帮助我们管理代码提交的过程,通过将修改内容添加到暂存区,可以将不同修改内容分批次地提交到本地仓库。暂存区实际上是一个文件,保存即将提交的文件列表信息。可以用
git reset命令
将暂存区中的文件恢复到工作区,也可以用git commit命令
将暂存区中的文件提交到本地仓库。
- 本地仓库(Repository)
本地仓库就是使用
git init
或使用git clone
创建的那个仓库,包含了完整的项目历史和元数据,是git存储代码和版本信息的主要位置。可以使用git checkout命令
从本地仓库中切换到不同的分支或版本。
- 远程仓库(Remote Directory)
远程仓库是托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换。远程仓库的内容能够被分布在多个地点的处于协作关系的本地仓库修改。可以使用
git push命令
将本地仓库中的数据同步到远程仓库。
1.2、文件状态
git中的文件的状态:
- 未跟踪
是我们新创建的、还没有被git管理起来的文件。可以使用
git add命令
来跟踪一个文件,如果不想被跟踪可以使用git rm命令
来删掉或git rm --cache
保留在目录里但是不被跟踪
- 未修改
是我们已经被管理起来,但文件内没有修改的文件
- 已修改
是我们修改过的文件,但还没有添加到暂存区的文件。修改完成之后使用
git add
把它设置成已暂存状态
- 已暂存
是我们修改过的文件,并添加到暂存区的文件。如果不想设置已暂存状态可以使用
git reset HEAD
加文件名来恢复成已修改状态。已暂存的文件可以使用git commit命令
来提交此次修改
2、常用命令
2.1、初始化配置
设置你的用户名
与邮件地址
这个随便填,本质就是一个标记而已
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
2.2、获取 Git 仓库
在你新建的项目目录内:
git init #初始化本地仓库
git clone <url> #克隆现有的仓库
2.3、添加、修改和提交
git add . #添加所有改动过的文件(到跟踪状态)
git add aaa #添加指定文件aaa
git commit -m 'xx' #提交 xx是说明
git commit -am 'xxx' #将add和commit合为一步
git commit -amend #修改最后一次提交
git rm xx #删除文件
git rm -cached #停止跟踪文件但不删除
2.4、查看提交历史与状态
git log #查看提交历史
git log --stat #显示commit历史,以及每次commit发生变更的文件
git log -p #查看指定文件的提交历史
git branch -v #每个分支最后的提交
git status #查看当前状态
git diff #查看变更内容
2.5、撤销操作
git reset -hard HEAD #撤销工作目录中所有未提交文件的修改内容
git checkout HEAD #撤销指定的未提交文件的修改内容
git checkout HEAD. #撤销所有文件
git revert #撤销指定的提交
2.6、分支与标签
git branch #显示所有本地分支
git branch [branch-name] #创建一个新的分支
git branch -a #查看所有的分支和远程分支
git branch -d [branch-name] #删除分支
git checkout [branch-name] #切换到指定分支,并更新工作区
git tag #显示已存在的tag
git tag -a v2.0 -m 'xxx' #增加v2.0的tag
git tag -d #删除标签
2.7、合并
git merge [branch] #合并指定分支到当前分支
git merge origin/master #合并远程master分支至当前分支
2.8、Git 远程仓库
git remote -v #查看当前的远程仓库
git remote add <remote> <url> #git remote add可以添加一个远程仓库
git remote rm #删除远程仓库
git remote show #查看指定远程版本库信息
git fetch #从远程库提取代码
git pull origin master #获取远程分支master并merge到当前分支
git push origin master #将当前分支push到远程master分支
git push origin :hotfixes/BJVEP933 #删除远程仓库的hotfixes/BJVEP933分支
git push --tags #把所有tag推送到远程仓库