git的基本操作
1、提交代码的流程图

2、连接远程代码仓库
连接远程代码仓库分两种情况,
1是在github上建立仓库之后在本地进行git clone,这种方式比较简单;
2是在本初始化一个仓库和代码仓库进行绑定
git init
git remote add origin git地址
git push -u origin master
3、提交代码的流程
1、文件在工作区暂未提交时使用git status查看文件状态是红色的modified

2、使用git add 文件名 是将文件从工作区提交到暂存区,且提交不会产生返回值,使用git status查看状态为绿色的modified状态

3、使用git commit -m '解释语‘ 是将文件从暂存区提交到版本库中,有返回值显示修改的文件git status查看状态为nothing to commit,working tree clean

4、时光穿梭机
1,查看信息
使用git log 和git log --pretty=oneline查看提交的版本日志

使用 git reflog查看历史命令
查看工作区和暂存区的区别,工作区和版本库的区别
git diff 文件名 查看工作区和暂存区的区别

git diff HEAD -- 文件本查看工作区和版本库的区别

查看分支合并的情况
git log --graph --pretty=oneline --abbrev-commit 在主分支上查询、

2、回退版本
在使用git log查看日志中HEAD表示当前的版本
git reset --hard HEAD^ 表示回退到上一个版本
git reset --hard HEAD^^ 表示回退到上二个版本
git reset --hard HEAD~100 表示回退到上100个版本
git reset --hard commit ID 表示回退到指定版本号的版本
3、撤销修改
1,在工作区对文件进行了修改但是没有添加到暂存区中,使用git checkout -- 文件名 可以把修改的部分撤销,还原到上一个commit后的状态
2,在工作区对文件进行修改之后保存到了暂存区中,然后没有commit又在工作区中对文件进行了修改,使用git checkou --文件名 ,可以把对工作区的修改进行撤销,还原保存到暂存区的状态。
3,在工作区对文件进行修改之后保存到暂存区中,想修改的文件还原到工作区中,使用git reset HEAD 文件名,把保存到暂存区的文件还原到工作区,但是添加的部分不会撤销。
5、分支管理
1、创建分支
git checkout -b 分支名 等价于git branch 分支名 和 git checkout 分支名 这两条命令表示先创建再切换到分支上

2、查看当前所有分支
g it branch

3、切换分支
git checkout master 表示切换到主分支上
4、合并分支
流程图
git checkout -b dev

修改之后
git add ./
git commit -m '在dev上进行更新'

git checkout master 切换到主分支
git merge dev 合并dev分支 默认使用的是fast-forward模式

git branch -d dev 注意如果没有合并分支是不能删除分支的,如果需要删除只能git branch -D dev 强行删除分支

5、解决冲突
当两个分支都有了不同的更新,或者说主分支有比feature1分支新的地方时就会产生冲突

git merge dev 和并


如果两个增加的修改的地方不在一个文件中的,不会形成冲突,合并时master直接会在两处都会增加
使用非快速模式合并代码
git merge --no-ff -m '使用 no-ff 模式合并’ dev
6、Bug分支
当master上有一个问题需要修正,但是dev上面又有了修改了,需要从dev上拉一个分支修改master上问题,但是dev新修改的不影响到master的修改,所以1.dev拉的分支
还原到commit状态,2,但是需要保存dev新增的内容
git stash 暂存dev的工作现场
git checkout master 切换到主分支修改Bug
git checkout -b issue-101 创建分支修复Bug,add 、commit
git checkout master 切回主分支准备合并分支
git merge --no--ff -m '合并删除分支 issue-101' issue-101
git branch -d isssue-101
git checkout dev
git stach list 查看暂存的现场列表
git stash apply 恢复现场但是不删除stash的内容,后使用git stash drop 删除stash 的内容
git stash pop 恢复现场同时删除stash的内容
主分支Bug修复了,但是dev上存在同样的Bug,需要在dev上进行重放
git cherry-pick commit ID 在dev上进行重放,其中commit ID为修复But提交的ID
7、多人协作
查看远程库信息 git remote -v

推送分支
git push origin master 推送主分支
git push origin dev 推送dev分支
在多人协作上面一般都是在dev上修改东西的,而git clone只会git pull master分支到本地仓库中。我们需要创建远程仓库的dev带本地
git checkout -b dev origin/dev
修改了dev里面的东西时准本提交时一定要先git pull 之后在push
git pull
git push origin dev
如果失败可能本地和远程远程仓库dev同时进行更新就会产出冲突,解决方式如下
git pull
1如果报

先建立链接git branch --set-upstream-to=origin/dev dev
2如果报

先本地解决冲突,之后在push
git push origin dev
问题汇总:
如果远程仓库的代码和本端某个仓库的代码完全没有关联,也就是说本端的代码不是从远程某个commit id 处开始拉的。或者本端的master 和dev仓库是单独的不相关的,就是报
fatal: refusing to merge unrelated histories 这个错误


如图master和dev没有交叉点,它们俩没有任务关联的。
git pull --allow-unrelated-histories
如果解决不了 ,把没有关联的删除重新down代码下来

浙公网安备 33010602011771号