吴先生不爱吃辣

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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代码下来
posted on 2020-05-23 17:23  吴先生不爱吃辣  阅读(275)  评论(0)    收藏  举报