zoukankan      html  css  js  c++  java
  • Git相关命令及用法

    add commit push

    git add *
    git commit -m ""
    git push -u origin branch

    在删除某一些文件时, 应使用git add .. 否则, 会出现Changes not staged for commit: ...

    添加子模块

    子模块的操作必须非常小心, 因为其中有很多坑.

    第一次添加子模块

    git submodule add git://github.com/chneukirchen/rack.git rack

    删除某个子模块

    git rm --cached pathOfSubmodule

    然后删除_config.yml以及.git/config文件中相关记录

    更改子模块后提交对子模块的修改

    进入子模块所在目录

    git add *
    git commit -m ""
    git push

    主项目提交

    我们可以直接像正常git文件一样的流程进行提交, 但是如果我们忘记提交子模块的变动, 而新的项目和子模块的变动又相关. 那么其他人从远程仓库中clone的文件可能并不能正确运行(缺少必要的子模块变动).

    所有推荐使用以下两种方法:
    1. git push --recurse-submodules=check. 若有子模块的变动没有推送, 那么该push会失败.
    2. git push --recurse-submodules=on-demand. 若有子模块的变动没有推送, 那么它会先推送子模块的变动, 然后再推送主项目.

    子模块的更新

    其他人如果对子模块进行了修改, 在git pull之后, 再调用以下git submodule update更新子模块.

    调用git submodule update也更新子模块的相关内容, 但是会将子模块留在一个称作 detached HEAD的状态. 这意味着没有本地工作分支(例如 “master”)跟踪改动。 所以你做的任何改动都不会被跟踪。即使你使用了commit提交了一些变动, 在你下一次使用git submodule update时, 这些变动会全部丢失.

    所以需要进入每一个你希望对其进行修改的子模块,git checkout branchName检出一个分支. 从远程仓库中更新本地文件时, 使用git submodule update --remote --merge, 也可以使用--rebase.

    如果忘记了--rebase或者--merge, git会将子模块更新为远程仓库上的状态, 而且该项目将再一次进入 detached HEAD 的状态. 解决方法:

    1. 检出包含之前本地更改的分支
    2. 然后手动的merge或者rebase任何一个远程分支即可.

    即使没有提交子模块的更改也某有问题, 此时git只会抓取更改, 而不会覆盖本地内容.

    克隆一个带子模块的项目

    克隆一个包含子模块的项目.git clone下来之后, 该子模块并不会被clone下来.需要调用以下两个命令:
    1. git submodule init来下载本地所需的子模块配置文件文件
    2. git submodule update来下载主项目中列出的合适的子模块提交

    也可以使用git clone --recursivegit clone --recursive https://github.com/...自动地初始化并更新仓库中的每一个子模块.

  • 相关阅读:
    进程哪一个cpu
    AT&T 和 Intel 汇编语法的主要区别
    机器学习之一:线性回归、梯度下降算法
    解决Webstom 2017中,输入法候选框无法显示问题
    即时通信系统Openfire分析之八:集群管理
    即时通信系统Openfire分析之七:集群配置
    即时通信系统Openfire分析之六:路由表 RoutingTable
    即时通信系统Openfire分析之五:会话管理
    即时通信系统Openfire分析之四:消息路由
    即时通信系统Openfire分析之三:ConnectionManager 连接管理
  • 原文地址:https://www.cnblogs.com/fei-hsueh/p/6106281.html
Copyright © 2011-2022 走看看