常用的git命令
git 本地仓库相关操作
- git创建一个仓库
git init //在当前目录下生成一个仓库
git init newDir //在newDir路经下生成一个.gitm目录
-
git克隆一个仓库
git clone <url> [directory] //url为git仓库地址,directory为本地目录 //执行完成后会在当前目录下生成仓库,若要在指定目录下生成。则可以在后面加一个具体的路径 //git clone 时可以进行一个不同的协议 git clone git@github.com/schacon/grit.git --SSH协议 git clone git://github.com/schacon/grit.git --GIT协议 git clone https://github.com/schacon/grit.git --HTTPS协议
git 基本指令的使用
- git config:配置信息
- git add:添加文件到缓存命令
- git status:查看文件的状态命令
- git diff:查看更新的详细信息命令
- git commit:提交命令
- git reset HEAD:取消缓存命令
- git rm:删除命令
- git mv:移动或重命名命令
git config
我们通过git config 进行一个对于git最基本的配置
git config --global user.name '你的用户名'
git config --global user.email '你的邮箱'
git branch 和 git checkout
- git 的创建分支以及切换分支的操作
git branch -v //查看分支的最后一个提交
git branch <branch name> // 新建一个分支的操作
git branch -b <branch name> //新建一个分支并且切换到那个分支中
git checkout <branch name> // 切换分支
git branch -d <branch name> //删除一个分支,我们一般在进行合并之后要删除那个分支
- git 的合并分支的操作
git merge <branch name> //对一个分支进行一个合并的操作,就是将现在所在的分支与该分支进行一个合并操作从而实现一个合并
git diff master your-branch //这将显示指定分支(your-branch)与主分支(master)之间的文件差异
git merge
的操作会实现一个合并分支的功能,但在合并分支前我们还是需要进行一个git add .
和git commit
的操作否则就会显示一个错误的提示。只有暂存了这些原本有冲突的文件,Git 才会将它们标记为冲突已解决。因此我们使用git的时候要养成一个良好的习惯。
- 即每一个提交都要是一个完整的提交,尽量将每一个提交都是一个完整的代码。
我们也要学会对于一个分支进行一个管理,我们尽量删除我们已经不使用的分支。git branch -d <branch name>
git branch --merged
命令表示查看哪些分支已经合并到当前分支git branch --no-merged
命令表示查看所有包含未合并工作的分支
git stash
适用环境:在一个分支开发新功能,还没开发完毕,做到一半时有反馈紧急bug需要处理,但是新功能开发了一半又不想提交。
它会保存当前工作进度,会把暂存区和工作区的改动保存到一个未完结变更的堆栈中;执行完这个命令后,在运行
git status
命令,就会发现当前是一个干净的工作区,没有任何改动。
git stash
是本地的,不会上传到服务器上- 可以使用
git stash save 'message...'
添加一些注释。
git stash //隐藏当前的工作现场, 此时, git status的结果是 clean
git stash list //查看所有隐藏, 每一行的冒号前面的字符串就是标识此隐藏的id
git stash apply //重新显示标识为 id 的隐藏
git stash drop //git apply恢复隐藏后, 需要手动删除 list 列表中的记录
git stash pop //恢复最新的进度到工作区
git stash pop stash@[stash_id] // 恢复指定的进度到工作区
使用的流程:
-
一般先使用 git stash list 查看有没有已经 stash 的记录,避免自己混淆,到时候使用时不知道是哪条记录
-
查看有无用的 list,可以先使用 git stash drop n 删除,直到 list 为空。
-
执行
git stash
将自己的工作目录清空或者执行git stash save "commend"
来提供注释 -
查看刚才保存的工作进度
git stash list
-
再使用
git status
语句来看一下自己的工作区是否清空 -
现在就可以正常切换到目标分支,进行相应操作
-
其他分支处理完成,再切回来使用刚才的 stash, 还是先查看 暂缓列表
-
选择使用暂缓
git stash apply **n**
这样就可以重新使用我们的之前保留的一些工作进度
git diff
第一种情况查看工作区和暂存区之间的文件差异
git diff //用来查看工作区和暂存区之间的文件的差异
git diff -- filename //查看具体某个文件 在工作区和暂存区之间的差异
git diff -- filename1 filename2 filename3//查看多个文件在工作区和暂存区之间的差异
//【注意】:查看具体文件的时候 -- 和文件名 之间有一个 空格,文件名1 和 文件名2 和 文件名3之间也有空格
第二种情况查看工作区和版本库之间的文件差异
git diff HEAD //查看工作区与最新版本库之间的所有的文件差异
git diff 版本号 //查看工作区与具体某个提交版本之间的所有的文件差异
git diff HEAD -- filename // 查看工作区与最新版本库之间的 指定文件名的文件差异
git diff HEAD -- filename1 filename2 filename3 //查看工作区与最新版本库之间的 指定文件名的多个文件差异
git diff 版本号 -- filename //查看工作区与具体某个版本之间的 指定文件名的文件差异
git diff 版本号 -- filename1 filename2 filename3 //查看工作区与最具体某个版本之间的 指定文件名的多个文件差异
git reset
- 回滚到指定的历史版本
git log // 查看一下历史版本
- 使用
git reset --hard id
来实现一个回滚
回滚到当前仓库指向的版本
git reset --hard HEAD^
git reset --mixed //重置HEAD和暂存区 保存工作区的内容
git reset --soft //该命令的主要功能是重置HEAD,保留暂存区和工作区。
^
这个符号代表了上一个版本的意思
将暂存区恢复成和HEAD一样的情况
git reset HEAD //取消暂存区的一些内容。reset一般用来和暂存区进行一下操作
git reset HEAD -- <file> // 取消暂存区一部分内容来实现。
将工作区恢复成暂存区的内容
git checkout -- <file> //checkout用来修改工作区的一些文件恢复成和暂存区一样
远程仓库的操作
git remote -v //展示当前关联的其他仓库列表
git remote show origin //获取本地分支和远程分支的关系
git remote add origin git@github.com/schacon/grit.git //ssh协议进行与远程库的一个关联
git push local_branch:remote_branch //本地向远程提交代码
git pull //拉取远程仓库的内容