举例工作中常用git命令
查看提交记录命令:git reflog
切换到主分支: git checkout master
其他常用的按着经验说
撤销本次提交误操作
想撤销提交到索引区的文件,可以通过git reset HEAD file
想撤销提交到本地仓库的文件,可以通过git reset –soft HEAD^n恢复当前分支的版本库至上一次提交的状态,索引区和工作空间不变更
可以通过git reset –hard HEAD^n恢复当前分支的版本库、索引区和工作空间至上一次提交的状态
修改提交的历史信息
修改最近一次提交的历史记录,就可以用git commit –amend命令;vim编辑的方式
4个区域(3个本地)
工作区:平时存放项目代码的地方
暂存区:临时存放改动,事实上一个文件,保存即将提交到文件列表信息,一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)
仓库区(或本地仓库):安全存放数据的位置,里面有提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
远程仓库:托管代码的服务器,可以简单的认为是你项目组中的一台电脑,用于远程数据交换;
git stash命令
命令git stash是把工作区修改的内容存储在栈区
使用情况
解决冲突文件时,会先执行git stash,然后解决冲突;
遇到紧急开发任务但目前任务不能提交时,会先执行git stash,然后进行紧急任务的开发,然后通过git stash pop取出栈区的内容继续开发;
切换分支时,当前工作空间内容不能提交时,会先执行git stash再进行分支切换;
git add . 和 git add * 区别
git add . 会把本地所有untrack的文件都加入暂存区,并且会根据.gitignore做过滤,但是git add * 会忽略.gitignore把任何文件都加入
在项目中,并不是所有文件都需要保存到版本库中,例如“target”目录及目录下的文件就可以忽略。在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件或目录。
git add和git commit的区别
git add添加文件,实际上:把修改的文件添加到暂存区;
git commit提交更改,实际上:把暂存区的所有内容提交到当前分支。
git fetch和git pull命令之间的区别
git pull 命令从中央存储库中提取特定分支的新更改或提交,并更新本地存储库中的目标分支
git fetch 也用于相同的目的,但它的工作方式略有不同。当你执行 git fetch 时,它会从所需的分支中提取所有新提交,并将其存储在本地存储库中的新分支中。如果要在目标分支中反映这些更改,必须在 git fetch 之后执行git merge。只有在对目标分支和获取的分支进行合并后才会更新目标分支
HEAD、工作树和索引之间的区别
HEAD文件包含当前分支的引用(指针);
工作树是把当前分支检出到工作空间后形成的目录树,一般的开发工作都会基于工作树进行
索引index文件是对工作树进行代码修改后,通过add命令更新索引文件;GIT系统通过索引index文件生成tree对象
git cherry-pick
命令git cherry-pick可以把branch A的commit复制到branch B上。
把本地仓库的内容推向一个空的远程仓库
git remote add origin XXXX;//XXXX是你的远程仓库地址
代码的review
创建review分支,然后再创建自己的个人分支,当你完成自己的业务逻辑的时候,再合并到review分支.给组长做代码的review