git 常用命令、基本能够解决日常开发工作所遇到的问题

547 阅读5分钟

分支如下 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键

版本回退

1reset // git reset --hard 版本号(6位或者更多)如图五显示
       回退之后,回退的历史记录就没有了
2、revert // git revert
       一级一级的往后revert,值得注意的是从当前版本号开始,如图二所示,版本号 028c21要回退到169bff,就是内容为3的版本,需要git revert 028c2169   git revert  f8327e733两次revert,然后本地如图三所示,最后push到远程如图四所示

图一: image.png 图二: image.png 图三: image.png 图四: image.png

图五:

image.png

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}中{}中可以是1234等等,对应缓存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

期待

欢迎留言,点赞收藏~~~