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/...自动地初始化并更新仓库中的每一个子模块.

转载于:https://www.cnblogs.com/fei-hsueh/p/6106281.html

Git相关命令及用法相关推荐

  1. repo,git相关命令使用

    ###git download [https://git-scm.com/downloads] #repo: repo命令参数: abandon Permanently abandon a devel ...

  2. Git学习5:Git常用命令简明用法

    不要使用git commit -a 该命令可以对本地所有的变更文件(包括对本地修改和删除的文件)执行提交操作,但是不包括未被版本库跟踪的文件. git命令补充说明 显示.git目录所在的位置 git ...

  3. git clean命令的用法

    git clean命令用来从你的工作目录中删除所有没有tracked过的文件. git clean经常和git reset --hard一起结合使用. 记住reset只影响被track过的文件, 所以 ...

  4. git stash命令的用法

    stash的字面意思:隐藏,储藏 当我们以多人协同工作的方式基于同一个github仓库进行开发时,免不了遇到多人同时在本机对同一文件进行编辑的情况出现. 看一个具体的场景,当我使用git pull时, ...

  5. git相关常用基本用法命令及分支操作指南命令

    Git 基本操作 Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比. Git 常用的是以下 6 个命令:git clone.git push.git add .git commit.gi ...

  6. git remote 命令的用法

    查看关联的远程仓库信息 # 查看关联的远程仓库的名称     git remote     # 查看关联的远程仓库的详细信息     git remote -v 添加远程仓库的关联 远程仓库的名称一般 ...

  7. Git npm相关命令

    Git 相关命令 查看用户名和密码 配置用户名和密码 查看git项目远程地址 添加git远程仓库 查看提交记录 查看已有tag 打标签 在某次提交记录上打标签 推送标签到远程 推送单个指定tag到远程 ...

  8. git常用命令操作方法

    git命令–切换分支 https://blog.csdn.net/qq_38335037/article/details/82755912?utm_medium=distribute.pc_relev ...

  9. 【Git学习】 如何通过git log命令来打印出在两个commit之间的所有不同的author提交的记录

    一.需求描述 每次集成提测,都会有一大批的人员合并代码到develop分支,然后jenkins编译完成之后,得写提测记录.之前负责提测的人员都是直接复制jenkins的修改记录页面的文字.如下所示: ...

最新文章

  1. 申请 SSL 证书 --Nginx 配置Https 最佳实践
  2. HTC Vive会是HTC的下一个增长引擎吗?
  3. matlab验证Ross随机过程(第二版)P19页的结果
  4. 学习笔记(52):Python实战编程-Radiobutton
  5. CNN框架的搭建及各个参数的调节
  6. 深度学习实践指南(五)—— 求解异或问题
  7. Leap手心发射线,碰撞点用小球表示,并用Line Renderer画出来
  8. matlab半峰宽计算公式,半峰宽单位换算(峰宽与半峰宽转换公式)
  9. Java时间与日期类(Calendar类的方法应用与打印日历)
  10. 在Ubuntu中安装中文输入法
  11. rpc服务器不可用自动重启,出现RPC服务器不可用的解决方法
  12. 教你学习JavaScript的this入门到进阶最全用法
  13. 【iOS】 app 的优化
  14. Kubernetes 中的 requests 和 limits详解
  15. linux强制移除pdf密码,linux-使用PDFtk删除pdf文件的最后一页?
  16. 数字孪生技术助力高炉数字化建设的可行性
  17. 如何计算Eden区的大小
  18. Bacon分解做交错DID数据、代码以及参考文献
  19. 360手机刷机:360N7刷机
  20. R语言使用mgcv包中的gam函数拟合广义加性模型(Generalized Additive Model,GAMs):从广义加性模型GAM中抽取学习到的样条函数(spline function)

热门文章

  1. 利用缓冲流读取跟写入
  2. GoF23种设计模式之行为型模式之策略模式
  3. 中文 WordPress 工具箱(1.2)与WP-Stats(2.2)冲突的解决办法
  4. 像目标主机一样的tcp流重组
  5. HDFS Federation机制
  6. (81)Verilog HDL:状态机一段式
  7. parameter与localparam使用区别
  8. html5多颜色灯笼旋转,HTML5 Canvas 漂亮的斑马条纹灯笼
  9. QCostomPlot 示例注解 2
  10. Openssl 嵌入式arm移植笔记