zoukankan      html  css  js  c++  java
  • 【Git】Git-常用命令备忘录(三)

    git作为一个vcs(version control system),是越用越香,那么还有哪些比较香的地方呢!?

    1.远程仓库中拉取指定分支

    一定遇到这种情况,github看到一个心仪的开源仓库,但是分支太多,我们只想要我们需要的分支。

    git clone -b <指定分支名> <远程仓库地址>
    

    2.递归克隆

    项目里包含的一些库或者一些模块是存在了别的仓库,可以用递归来克隆回来。一次性就能解决所有的依赖模块

    git clone --recursive https://github.com/dotnet/aspnetcore.git
    

    3.切换到指定分支

    分支众多,要切换到指定分支

    #branch分支管理
    git branch
    git switch 分支名
    

    4.创建标签

    git tag v1.0
    #默认标签是打在最新提交的commit上
    

    5.为指定的commit id创建标签

    上面标签,是为最新的一次提交创建的。但是我们想吃后悔药——为之前的提交创建标签,该怎么做呢!?

    $ git log --pretty=oneline --abbrev-commit
    $ git tag 标签值 commitId
    
    #查看标签信息
    $ git show 标签值
    

    6.删除标签

    $ git tag -d v0.1
    
    #删除远程标签
    $ git tag -d v0.9
    $ git push origin :refs/tags/v0.9
    

    7.推送标签至远程仓库

    #推送指定标签至远程
    $ git push origin v0.1
    
    #推送全部标签至远程
    $ git push origin --tags
    

    8.切换至标签

    #tag标签管理
    git tag
    #切换
    git checkout tag值
    

    9.本地没有远程标签

    #查看本地标签
    git tag -l
    
    #查看远程标签
    git ls-remote -t
    
    #删除本地标签
    git tag -d 待删除的标签值
    
    #拉取远程的标签
    git fetch origin --prune-tags
    
    #再次查看本地标签
    git tag
    

    10.gitignore文件重新生效

    从gitee 创建仓库,可选择创建不同项目下.gitignore文件模板。但是我们修改.gitignore文件,并不生效。.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的,把要忽略的文件改为未track状态

    git rm -r --cached .  #清除缓存   取消跟踪所有文件,但不删除本地文件
    git add . #重新trace file  
    git commit -m "update .gitignore" #提交和注释  
    git push origin master #可选,如果需要同步到remote上的话  
    

    11.本地关联远程

    一般情况,常规操作是先在github或者gitee创建远程仓库,然后

    git clone 
    git add -A
    git commit -m ""
    git push -u origin master
    

    但是还有一种情况,先通过git init创建的本地仓库,突然发现今天写的代码太优美了,要整个远程仓库存起来。

    #初始化-建立本地仓库
    git init
    
    #把本地仓库与远程仓库关联
    git remote add origin git@gitee.com:RandyField/xxxxx.git
    
    #push
    git push -u origin master
    
    #但是可能会出现如下错误
     ! [rejected]        master -> master (non-fast-forward)
    error: failed to push some refs to 'git@gitee.com:RandyField/xxxxx.git'
    hint: Updates were rejected because the tip of your current branch is behind
    hint: its remote counterpart. Integrate the remote changes (e.g.
    hint: 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    
    #原因是创建远程仓库,和本地仓库没有关联,也具有差异
    
    #把远程仓库和本地同步,消除差异,把两段不相干的分支进行强行合并
    git pull origin master --allow-unrelated-histories 
    
    git add -A
    git commit -m "[dev]init"
    git push -u origin master
    

    12.变基->快进合并

    将提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样(将一个分支的修改操作在另一个分支最新的提交基础上在依次应用)。

    #小明童鞋,克隆
    git clone xxx.git
    
    #小明童鞋,创建了dev分支
    git switch -c dev
    
    git add .
    git commit -m "c"
    
    git add xxx.go
    git commit -m "update xxx.go"
    
    git add App.vue
    git commit -m "update App.vue"
    
    #大明童鞋,克隆
    git clone xxx.git
    git add main.js
    git push -u origin master
    
    #小明童鞋
    git switch master
    git pull
    git switch dev
    git rebase master
    #有冲突,需要手动合并文件解决,解决冲突后使用git add表示冲突已经解决
    git add .
    #表示继续下一个冲突
    git rebase --continue
    #切换至master
    git switch master
    #快进合并
    git merge dev
    
    
    # 其他命令
    git rebase --skip #表示跳过当前冲突,
    git rebase --abort #表示退出rebase模式,回到运行git rebase master命令之前的状态
    
    

    rebase干了什么?

    • 找到masterdev最近一个共同的父commit对象
    • 并找出这个共同的父commit对象到dev分支最新提交对象之间的所有对象,将这些对象依次添加至master分支最新一次提交后。这个过程很像将一个数组追加到另一个数组,没错append操作。
    • 这时我们git rebase master会提示有冲突(因为我们在master和dev可能修改了相同的文件),对冲突文件进行手工合共,然后git add .标记冲突解决,git rebase --continue告诉Git冲突已经解决。
    • dev分支上变基(git rebase master)。这时我们回到msater分支执行 git merge dev就可以进行"快进(fast-forward)"模式合并。

    参考链接

    https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA

    https://www.jianshu.com/p/6960811ac89c

    https://blog.csdn.net/fly_zxy/article/details/82586861

  • 相关阅读:
    android:sharedUserId
    SystemProperties cannot be resolved错误
    Mybatis(二)|搭建mybatis环境之注解版-简单搭配
    Eclipse构建Maven的SpringMVC项目
    IDEA新手使用教程(详解)(经典)
    IntelliJ IDEA 教程
    用注解的方式实现Mybatis插入数据时返回自增的主键Id
    eclipse使用git提交项目
    eclipse中使用自带git的常用操作
    myeclipse10.7安装git插件
  • 原文地址:https://www.cnblogs.com/RandyField/p/12846825.html
Copyright © 2011-2022 走看看