git命令及自己的总结

这是看完《廖雪峰git教程》后记录下的常用命令

git config --global user.name "Caijt" //全局设置你的名字(必须设置,不然无法commit)

git config --global user.email "59001731@qq.com" //全局设置你的邮箱(必须设置,不然无法commit)

git init //将一个目录初始化为仓库

git add 123.txt //将文件123.txt增加到暂存区
git add . //将所有修改的文件增加到暂存区

git commit -m "提交的标题" //将暂存区的文件提交到分支
git commit -a -m "提交的标题"//相关于git add .后再commit)

git diff [文件名]//查看工作区跟暂存区的文件差异 
git diff HEAD //查看暂存区跟最新提交的所有文件差异

git rm //删除工作区的文件交提交到暂存区

git log //查看提交日志(加上参数 --pretty=oneline 缩小单行输出,--graph查看分支合并图)
git log -3 //查看最近3个日志

git reset --hard HEAD^ //分支提交回退到上一个版本并覆盖工作区及暂存区文件(HEAD代表当前版本,HEAD^代表上一个版本,HEAD^^代表上上一个版本,HEAD~100代表前100个版本)
git reset --hard commit_id //根据commit_id回退到对应版本
git reset --soft HEAD^ //分支提交回退到上一个版本,但工作区的文件不覆盖,回退的修改提交到暂存区
git reset HEAD^ //分支回退到上一个版本,暂存区清空,工作区文件不覆盖

git reflog //列出所有命令日志

ssh-keygen -t rsa -C "59001731@qq.com" //创建SSH KEY

git remote add origin git@github.com:Caijt/git1.git //在本地仓库添加远程仓库(github)的关联,其中远程仓库名origin可以自定义
git remote -v 查看远程仓库

git push origin <本地分支>:<远程分支> //将本地分支推送到远程分支上 
git push origin :master //删除远程分支,相同于推送一个本地空分支到远程分支上,等同于 git push origin --delete master

git clone git@github.com:Caijt/git2.git //远程克隆远程仓库到本地

git merge dev //将当前分支跟dev分支进行合并(默认使用快速合并方式,--no-ff参数不使用快速合并方式)

git branch dev //以当前分支克隆并创建分支dev
git branch -d dev //将分支dev删除(-D强制删除)
git branch -r //查看远程分支
git branch -vv //查看本地分支与远程分支的关联关系
git branch --set-upstream-to origin/dev 设置本地分支与远程分支的关联

git checkout -- 123.txt //撤销工作区123.txt文件的修改,恢复到提交暂存区之前的状态
git checkout dev //切换到dev分支
git checkout -b dev origin/dev  //创建远程分支dev到本地dev分支

git stash //将工作区跟暂存区的修改内容先保存起来
git stash list //查看暂存列表
git stash apply xxxx //恢复暂存列表
git stash drop //xxxx 删除暂存列表
git stash pop //将最近的暂存推出来并删除

git pull origin 远程分支:本地分支 //将远程分支文件拉取到本地

git tag v1.0 //创建标签 默认为HEAD指向的分支 
git tag v1.0 commit_id //为commit_id版本创建标签
git tag //查看所有标签
git tag -d v1.0 //删除本地仓库标签
git push origin :refs/tags/v1.0 //删除远程仓库标签
git push origin v1.0 //推送v1.0标签到远程仓库
git push origin --tags //推送所有标签到远程仓库

##自己的总结

先总结下三个概念,工作区暂存区版本库,工作区就是我们项目目录除.git外其它的文件,版本库就是.git目录,暂存区是版本库一个区域。

感觉这个教程有些命令说得比较简单,不好记忆,对我这种记忆力稍弱的人,可能过一段时间就容易忘了。

比如撤销工作区的修改,跟撤销暂存区的修改,同是撤销操作,为啥一个用checkout,一个用reset呢?

后面根据我的研究,可以这样理解,checkout是从版本库的分支或暂存区拿出来覆盖到工作区的意思,是对工作区文件的修改,reset是重置版本库分支或暂存区文件的意思,是对于库存版文件的修改,当我用git checkout -- 123.txt 就是把版本库中暂存区的123.txt覆盖到工作区上,当我用git checkout branch1时,是把版本为中分支branch1拿出来覆盖到工作区上并切换到分支branch1

而当我用git reset HEAD 123.txt把暂存区的修改撤销时,因为HEAD代表当前分支的最新提交,所以其实就是将暂存区中的123.txt重置到分支最新提交的123.txt,这个操作不会影响到工作区,我也试用过git reset HEAD^ 123.txt,结果就是将暂存区的123.txt重置到上一个提交的123.txt,所以准确来说这是重置命令,只是操作起来的结果像撤销。这样理解就更加形象。

那当我用git reset --hard 版本id时,为啥用影响到工作区呢,就是这个--hard的参数,加上这个参数就会覆盖掉工作区的文件,后面我就尝试了只用了git reset 版本id,发现只是版本库文件发生了变化,工作区文件没影响,其实这个命令,跟我用git reset 版本id,然后再用git checkout .(将暂时区的文件全部覆盖到工作)效果是一样的。还有一个参数--soft,这个是将版本库中的分支提交重置并将后面修改的文件重置暂存区里,跟直接用git reset 版本id的区别就是,有--soft参数的命令可以直接commit,没参数的命令,还得add到暂存区后再commit

写得有点乱,写到后面我都不太清楚我在说什么了。。哈哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值