分支如下 dev-m / dev-p
本地创建分支,并推送到远程
当前分支是:dev-m
git branch dev-p // dev-p就是分支名字
git push origin dev-p //把分支推送到远程
git checkout dev-p //切换分支到dev-p
//到这里分支已经切换到:dev-p
git branch -a //查看所有分支
下面是(全部/单独)添加某个文件(夹)
当前分支:dev-p
git add . // “ . ” 全部更改的都提交
git add pages //pages就是文件夹 (如果是文件git add test.txt)
git commit -m "添加这次提交说明记录"
git push origin dev-p
方法一:合并分支(从dev-p合并到dev-m分支)
当前分支是dev-p
git checkout dev-m
git pull
git merge dev-p
git push origin dev-m
方法二:合并分支(从dev-m合并到dev-p分支)
当前分支:dev-p
git fetch origin dev-m //创建临时缓存分支,dev-m必须是你要合并的分支的名称
git diff dev-m //查看dev-m 分支的修改记录
git merge dev-m //把缓存分支合并到当前分支dev-p
git branch -d dev-m // 删除本地缓存分支dev-m,不影响远程的dev-m分支
git push origin dev-p //提交至远程分支
--------------------------------------------------------------------------
如果冲突,就先解决冲突文件,然后在操作:
git add .
git commit -m "解决冲突"
git push origin dev-p
解决冲突
手动去texts.txt修改冲突的地方
<<<<<<< HEAD
dev-m分支的内容
======= 分开来,上部分指当前(dev-m)分支的内容,下面属于dev-p的内容
dev-p分支的内容
>>>>>>> dev-p
可能有多个文件冲突,注意Auto-merging 后面的文件名
注:
从dev-p的内容合并到dev-m中,提交成功,还差一步
切换至dev-p中,把dev-m也合并到dev-p实现两个分支内容同步
撤销已经修改的某个文件/文件夹
1、在没有git add .的情况
git checkout . // 全部撤销修改
git checkout pages // 只撤销pages文件夹内容
git checkout text.txt //只撤销text.txt文件的内容
2、已经git add .的情况
git reset HEAD // 表示从缓存区撤销回到第一步,git reset HEAD text.txt表示text.txt这个文件撤销回到第一步
git checkout . // 即可
3、已经git commit -m ""
git commit --amend -m "" // commit的说明重置,或者说修改
4、已经commit了,又修改,然后在上传,走git add . git commit -m "",就会出现两次提交记录,如下图
5、解决第4点出现两次commit问题
git add test2222.txt
git commit --amend --no-edit
查看分支提交记录
git log //可以看到每次提交的commit
git log -p // 修改记录
注:退出--->因为状态下,按 q 退出;往下看---> enter键
版本回退
1、reset // git reset --hard 版本号(6位或者更多)如图五显示
回退之后,回退的历史记录就没有了
2、revert // git revert
一级一级的往后revert,值得注意的是从当前版本号开始,如图二所示,版本号 028c21要回退到169bff,就是内容为3的版本,需要git revert 028c2169 git revert f8327e733两次revert,然后本地如图三所示,最后push到远程如图四所示
图一: 图二: 图三: 图四:
图五:
stash缓存
在一个分支上修改,但是同时又想切回其他分支,肯定是切换不了的,这时候怎么办呢
可以把当前分支修改放置缓存区中
git stash // (时间可能比较久,注意)
那么怎么把缓存区的工作内容切回来呢?
git stash list // 查看缓存区有多少缓存
git stash pop // 默认列表中第一个切回当前工作区,并删除缓存区这条记录
git stash apply // 默认列表中第一个切回当前工作区,并不删除缓存区这条记录
git stash show -p stash@{0} // 查看缓存记录修改记录
stash缓存实际应用
git stash
git pull
git stash pop (或者git stash apply,还是建议使用apply吧,缓存还在)
手动解决冲突文件(修改同一文件这个冲突比较好改,修改同一文件中同一个地方,就麻烦些了)
git add .
git commit -m "说明"
git push origin dev-p
补充:
git stash list 查看缓存列表
git stash show / git stash show stash@{0} 前面是简写形式,查看这个修改了那些文件
git stash / git stash save "说明这次缓存内容" 前面是简写形式,如果不添加save,默认记录commit的说明
git stash pop / git stash pop stash@{0} 前面简写形式,stash@{0}中{}中可以是1,2,3,4等等,对应缓存list中的序号(或者说id)
git stash drop stash@{0} 删除第一项缓存项
高级:
git stash -a/-u save "说明提交记录"
-a所有文件都缓存,包括git忽略文件
-u包含新增文件,而不会存git忽略文件
合并指定文件夹
从dev-m合并某个文件到dev-p的过程:
当前分支是dev-m
切换分支到dev-p: git checkout dev-p
当前分支是dev-p (注意需要git pull最新的代码)
创建一个临时分支,并且切换到临时分支:git checkout -b p-tmp
从dev-m分支复制需要合并的文件夹到临时分支p-tmp: git checkout dev-m ./src/views/home
把临时分支内容提交到缓存区:git commit -m "缓存说明" ----不可少哦
重新切换到目标分支dev-p : git checkou dev-p
把临时分支合并到目标分支:git merge p-tmp
(有冲出就手动解决冲突,解决完成 git add . git commit)
提交至远程分支git push origin dev-p
最后看看还需要删除本地临时分支git branch -d p-tmp
OK ...
合并文件之后回退
当前分支是:dev-m ,要合并dev-p分支
git merge dev-p
出现一下情况:
1、出现冲突了,发现冲突,还没有git add . ,想要回到merge前,git merge --abort ,意思是:放弃这次合并
2、出现冲突了,发现冲突,已经git add . ,想要回到merge前,git merge --abort ,意思是:放弃这次合并
3、出现冲突了,发现冲突,已经git commit -m "" ,想要回到merge前,git revert -m 1 HEAD ,意思是:新建一个commit说明,并且回到合并之前的状态,(可能还要重提提交呢)(慎用git reset --hard commit_id 回退到指定的commit节点)
修改git的账号密码
https://jingyan.baidu.com/article/642c9d3435a6e9644a46f732.html
需要某一个commit与当前commit合并代码
git reflog // 查看commit记录
git cherry-pick commit3
期待
欢迎留言,点赞收藏~~~