当前位置:   article > 正文

git笔记_git fetch did not send all necessary objects

git fetch did not send all necessary objects

目录

基于当前分支,创建分支,并push到远端

清除关联:

git合并dev分支的指定的多个commit 到 master分支

git log 带作者筛选

如何把B分支的代码合并到A分支;

本地下载了 master 分支,如何切换到远端test分支?

系统笔记


开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支

git checkout dev
git pull
git checkout master
git merge dev
git push -u origin master

当master代码改动了,需要更新开发分支(dev)上的代码

git checkout master
git pull
git checkout dev
git merge master
git push -u origin dev

 

理论学习:

https://git-reference.readthedocs.io/zh_CN/latest/Getting-Started/

恢复到之前版本,撤销commit

 

摘樱桃(idea)

1、创建特性分支,修改后提交;

2、切换目标分支:git checkout  release;

3、查看log: 可以看到刚刚 push的 记录

4、右键选择 cherry-pick ,点击后,会将提交 合并+commit 到当前分支;

      右键前,可以先多选, 这样可以把多次commit 一块合并到当前分支

5、直接push ;

基于当前分支,创建分支,并push到远端

idea-->New Branch -->填入分支名称--->checkout到新的分支---》push分支 ---》over

(当前分支为空的话,可以把代码拷贝进来)

清除关联:

git会进入当前文件目录,

然后执行如下命令:

find . -name ".git" | xargs rm -Rf

该项目就会去除git的版本控制了。再修改的话也不会影响git的版本库。

 

git合并dev分支的指定的多个commit 到 master分支

  1. 切换到dev分支
  2. git checkout branch
  3. 查找commitid ,带筛选条件,只查自己提交的
  4. $ git log --author=zhandsan
  5. commit 591cced7f43e9d7d039bc2e72f0f6195740fa19e (HEAD -> xxljob-20200106, origin/xxljob-20200106)
  6. Author: zhandsan <**************>
  7. Date: Tue Feb 18 17:38:01 2020 +0800
  8. 备注****************
  9. commit cbbd4b8f89e758e247f9903ebcf823ac0d64d9fa (origin/test, test)
  10. Author: zhandsan <**************>
  11. Date: Mon Feb 17 16:55:21 2020 +0800
  12. 备注****************
  13. commit e7d5c444255b7700cb95f0fe447106c347597636
  14. Author: zhandsan <**************>
  15. Date: Thu Jan 16 17:14:24 2020 +0800
  16. 备注****************
  17. commit ed0172a74b1871fb87528ad8b6f56456253923ad
  18. Author: zhandsan <**************>
  19. Date: Thu Jan 16 16:18:58 2020 +0800
  20. 备注****************
  21. # 记路上面的 commit 591cced7f43e9d7d039bc2e72f0f6195740fa19e
  22. #切换到master 分支
  23. git checkout master
  24. #摘樱桃 git cherry-pick id1 id2 id3 多个id用空格分开
  25. $ git cherry-pick ed0172a74b1871fb87528ad8b6f56456253923ad e7d5c444255b7700cb95f0fe447106c347597636 cbbd4b8f89e758e247f9903ebcf823ac0d64d9fa 591cced7f43e9d7d039bc2e72f0f6195740fa19e
  26. error: could not apply ed0172a7... 备注****************
  27. hint: after resolving the conflicts, mark the corrected paths
  28. hint: with 'git add <paths>' or 'git rm <paths>'
  29. hint: and commit the result with 'git commit'

git log 带作者筛选

git log --author=cuijunfd                                                                                                                                                                                                           

如何把B分支的代码合并到A分支;

场景:从test 创建了分支 test-a;

开发一段时间后,test分支代码变了,需要将test最新的代码同步到test-a 分支;

处理:1、本地先切换到 test-a 分支, 然后pull ,pull的时候 远端选 test分支(pull结束后,已经自动commit了,此时可以直接push提交代码到test-a远端)。

本地下载了 master 分支,如何切换到远端test分支?

1、命令行: git checkout test

     检查: git branch -avv

2、idea : 如下,点击“show 49 More” ,在弹出的列表汇总选择需要切换的远端分支,

   弹出框中会自动带出“test” 分支名称 。

 

如果本地已经有test分支了(之前用上面的方式切换过),可以直接在Local Branches操作

 

常见报错处理-error: You have not concluded your merge (MERGE_HEAD exists)

https://www.cnblogs.com/goloving/p/10330337.html

原因可能是在以前pull下来的代码自动合并失败。

解决方案一:保留本地的更改,中止合并->重新合并->重新拉取

$:git merge --abort
$:git reset --merge
$:git pull

git pull之后然后重新解决冲突,再push,(记得需要稍微跟自己push的要有一点区别,要不然又会造成这样的情况)

 解决方案二:舍弃本地代码,远端版本覆盖本地版本(慎重)

$:git fetch --all
$:git reset --hard origin/master
$:git fetch

系统笔记

 

git 底层有一个kv的数据库 ,hashMap

 

测试: git hash-object - w  test.txt     # set

     git cat-file -p lasjflsafdlsadfjsalf     # get lasjflsafdlsadfjsalf 为key

     

     二次  git hash-object - w  test.txt  # key 会被覆盖

 

git原理: 直接取文件内容入库。 svn 则是保存的文件

 

git支持多个远程仓库? 当git用户数量很大的时候(分成多个团队),

一个仓库会比较卡,压力大。可以再增加一个git服务器。 还可以再增加git远程备份服务。

一个本地项目,对应多个远程连接,如何配置???

 

命令学习:

 

git init  my_project    #创建一个仓库, 生成 .git

cd my_project

echo test.txt

 

git status

 

git  add  test.txt   # 既然locah 暂存区

 

git status  # 随时查看, 会有提示,下一步操作

 

git rm --cached text.txt # 从暂存区删除

 

git add -A   #add  all

 

git commit  test.txt  -m "first commit"  # 提交操作 -m 注释 

 

git commit  -am  "注释:all cmmit"

 

######### 远程仓库提交》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

## 先在gitlab 创建仓库

git remote add origin http:// 远程仓库地址  # 远程仓库 名字 origin

git  push origin

 

git push --set-upstream orgin master

 

多个git命令可以 分号 间隔,一次执行

测试: git add -A ;git commit -am 'commit test' ;git push;  #一次执行

 

分支管理:

git branch

git branch -a  //查看远程和本地仓库所有分支git

git branch -av

git branch -avv  查看本地与远程关联信息, 第二个v

 

 

#1基于当前分支新建分支

git branch  <branch name>

git branch dev  #基于当前分支创建dev 分支

git branch test dev # 基于dev 创建test分支

 

 

#2基于远程分支创建一个分支

git branch

git branch  test2 origin/master  #基于远程 origin/master 创建 test2分支

git

#3基于提交新建分支

git branch <bramch name> <commit id>

git log  # 查看提交log

git brach branch4commit  73884hk21h4321h4k1h243h2k34k243h234h1   #基于 "73884hk21h4321h4k1h243h2k34k243h234h1" 提交 创建分支 branch4commit

 

#4基于tag创建一个分支

 

 

#删除分支

git branch -d test        #删除test 分支

git branch -d test test2  #删俩分支

 

#切换分支

git checkout <branch name>

 

#合并分支

git merge <merge target>

 

#解决冲突, 此时 status 为mergeing 状态 ,

#需要手动修改后重新提交。

不是同一行冲突,git会自动mergy

 

#############远程管理##############

git remote -v

 

git remote add  newName http:xxx.xx.com.cn

#添加到第二个远程仓库

git remote add origin2 http://git.xxx.com/cjf/myp.git

 

git remote 此时会返回两个仓库 newName  origin2

 

git push  # git branch -avv 查看当前分支关联的远程分支是那个 ,git branch 就会push到关联分支

如何push到第二个远程仓库?指定 ,master push 到 origin2

git push --set-upstream origin2 master

 

git branch origin # push到 origin分支

 

######上面的操作命令太复杂,idea操作会方便很多

右键菜单: git -> reposistory->Remotes  可以看到多个远程仓库

push的时候,可以选择远程仓库。 也可以直接新增远程仓库 。

push弹出框中 ,蓝色链接 可以 点开,选择的 ,或者 define Remote 新增一个远程仓库

 

#####远程仓库删除

git remove [-v]

eg: git remote remove origin

#上传新分支到远程

git push --set-upstream origin master  ## master push 到 origin

 

#将本地分支与远程建立关联

git branch --track --set-upstream-to-origin/test test

 

########################tag 管理 ,跟分支差不多,区别tag是只读的,tag跟里程碑关联在一起。不允许修改

#查看当前

git tag

#创建tag

git tag <tagName> <branch>

eg: git tag  tag1 dev  # 基于dev 创建tag1

eg: git tag tag2  232i42u34o234uo21u4o21u43o12u34  # 基于提交创建tag

 

 

 

 

 

 

#查看当前分支下所有提交日志

git log

可以搜索 /value  类似vi

#

git log --oneline

 

#

git log dev --oneline

 

#分支比对、关联

git log dev..master

git log master..dev

 

git checkout dev #切换到dev

git merge master  #dev 合并到 master

git log dev..master # 再次比对,没有区别了

 

#提交网络

git log --graph --oneline

git log --pretty=format:'%h %s' --graph

 

#最后一次提交

git show dev

 

############################# git 底层原理 ############################

git存储对象(hashMap)

向数据库中插入任意内容,它会返回一个用于取回该值的hash键。

如果内容不变, hash key 是不会变的。

# .git/objet 中保存了所有的版本数据

# 查找所有的git对象

find .git/objects/ -type -f

 

git hash-object -w test.txt

 

#内容回滚 ,其实就是通过早期的 hashKey 找到内容,然后写入当前文档。

git cat-file -p 34kjj324j23 > test.txt   # 34kjj324j23 ,是早期hashKey的前半部分

 

#保存的对象其实是个 blob对象

git cat-file -t 729jk2h34234

blob

 

echo "hello world " > test.txt

#所谓的本地缓存,其实就是 ./git/objects中

#hashcode 是根据内容产生的,是唯一的。

 

########## git 数对象 ,类似操作系统的目录

git cat-file -p master^{tree}

## 树中保存了: 文件类型、字符类型、hashcode 、文件名

git cat-file -p  <树的hash key>

返回:10064  blob  2l3j4l214l21j43l214l2j4l2j34l21j34  test.txt

 

树中 节点内容改变,上级会变,一直到顶级对象 。 下集不会变。

 

比对的时候,比对的是两个树,都是key值在比对,非常快

 

git分支:引用

ref目录中,

 

tag: ref/tags 也是引用

 

 

撤销:

git reset --soft HEAD^

 

eg:撤销一次commit:   git reset --soft HEAD~1

     撤销n次commit :   git reset --soft HEAD~n

 

--mixed

意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作

这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。

 

--soft

不删除工作空间改动代码,撤销commit,不撤销git add .

--hard

删除工作空间改动代码,撤销commit,撤销git add .

注意完成这个操作后,就恢复到了上一次的commit状态。

 

修改cmmit注释

git commit --amend

此时会进入默认vim编辑器,修改注释完毕后保存就好了。

 

 

 

 

 

###############  git  私服 ####################

github 开发源码存储服务

gitlab: web项目提供了源码管理的功能

码云: oschina 提供的一个商业的源码服务

码市: coding提供的一个商业化的源码服务

 

#######四种通信协议

1、Local(本地协议)

2、ssh

3、http(dump,smart)

4、git

 

local: 基于本地文件系统或共吸纳过(NFS)文件系统进行访问 ,小团队用,局域网

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/963245
推荐阅读
相关标签
  

闽ICP备14008679号