git基础可了解:tian-jq.gitee.io/2020/02/15/…
缓存管理
git stash 缓存工作区内容
git stash list 显示工作区内容
git stash pop 弹出stash列表最新的缓存
git stash apply stash@{0} 应用指定缓存
git stash clear 清除所有缓存
git初始化、版本提交
初始化
git init
版本提交
git add . git add 文件名 git commit -m "备注内容" git push
git add . 和git add 文件名区别
git add .:提交所有修改的文件,
git add 文件名:提交指定文件
git push推送到远程版本库
push的内容我们先不管,push这个命令其实和提交没关系
版本记录log
git log git reflog git shortlog
常用参数:--all --oneline --graph
git log 和git reflog
git log:方便查看commit的版本,但是版本回退后,使用git log 看不到回退版本号之后的版本记录
git reflog: 版本回退后,仍然可以看到所有的版本记录 方便查看每个操作步骤所在的版本,可以根据版本号自由前进后退
git shortlog:按作者对每个提交分组,并展示每个提交信息的第一行,这种方式能很容易看出谁参与了工作。
常用参数
--all:显示所有记录
--oneline:以一行的格式显示一个版本
--graph:绘制一幅表示分支结构提交历史的ASCII图
--decorate:让git log展示所有指向每个提交引用(如分支,标签等)
参数位置不分先后;
习惯命令:git log --all --oneline --graph --decorate
撤销 管理
工作区 撤销
git checkout -- 文件名
暂存区 撤销
git reset HEAD 文件名 或则git reset HEAD
git reset --hard HEAD
git reset HEAD 文件名和 git reset HEAD的区别?
加文件名:撤销指定文件的修改
不加文件名:撤销所有暂存区的修改
--hard的作用
有了参数--hard,直接把工作区的内容也修改了,不加--hard的时候只是操作了暂存区,不影响工作区,
--hard一步到位,不加--hard需要分开执行,两步操作。
这里选择性使用!
版本库 撤销
git reset 版本号 或则 git reset HEAD^
git reset --hard 版本号 git reset --hard HEAD^
git reset 版本号 和 git reset HEAD^的比较
git reset 版本号:通过git log获得版本号(这里的版本号可长可短,能唯一确定某一commit即可),回退到任意版本
git reset HEAD^:快捷操作,回退到上一版本,同理可使用git reset HEAD^^回退两个版本,以此类推
加--hard的区别
加--hard:直接退回到之前版本
不加--hard:修改会退回到工作区
此处的区别和暂存区的--hard类似,有了参数--hard,直接忽略掉工作区修改这一步。
总结
a、如果还没 git add file ,使用该指令进行撤销: git checkout -- fileName
b、如果已经git add file , 但是没有 git commit -m "" 分两步操作:
b-1、git reset HEAD file 或则 git reset HEAD
b-2、git status
b-3、git checkout -- file
(或则一步操作直接删除修改:git reset --hard HEAD)
c、如果已经git add file 并且已经 git commit ,那么回退版本办法是:
c-1、通过 git log 或者 git reflog
c-2、找到对应的commit id进行回退:git reset 版本号 或则 git reset HEAD^(注意:
根据需求选择使用:--hard)
版本管理
版本回退
git reset --hard 版本号 git reset --hard HEAD^
--hard参数的作用,根据情况选择
git reset 版本号:通过git log获得版本号,回退到任意版本
git reset HEAD^:快捷操作,回退到上一版本,同理可使用git reset HEAD^^回退两个版本,以此类推
git reset --hard 版本号 git revert -n 版本号
git reset --hard 版本号:通过reset的方式,把head指针指向之前的某次提交,reset之后,后面的版本就找不到了;
这种操作存在一个问题,服务器上的代码虽然被还原了,但假如有多个人在使用,他们本地的版本依然是比服务器上的版本高的,所以,别人再重新提交代码的话,你撤销的操作又会被重新,你上面的操作也就白操作了。解决办法是,让别人把本地的分支先删掉,然后重新从服务器上拉取分支。
git revert -n 版本号:这种方式不会把版本往前回退,而是生成一个新的版本(-n :new)
对于刚才出现的问题,用这个命令就可以避免,因为版本在往前走,而不是后退,所以其他成员只需要更新一下代码就可以了。
分支管理
分支管理
新建 切换 删除 分支
git branch 分支名 git checkout 分支名 git checkout -b 分支名
-d -D
git branch 分支名:新建分支
git checkout 分支名 :切换分支
git checkout -b 分支名:创建并切换分支
-d: 删除分支
-D: 强制删除分支
分支合入
(评论区有更多注解)
git merge 分支名
git rebase 操作
了解git rebase:链接
远程管理
下拉
git clone 项目地址
添加远程版本库
it remote add <remote_name> <remote_address> # 添加远程仓库
同步
git pull 远程分支:比较简单、暴力,直接更新到本地仓库
git fetch 远程分支 + git merge 分支:更加安全,先和本地仓库进行对比,解决可能存在的冲突项,再merge
提交
git push -u <remote_name> master # 推送本地仓库至远程仓库
一般先推送到自己的github版本库,再向远程主仓库提起PR