最近项目使用git进行版本控制,由于之前用svn,所以对git不是太熟悉,网上一通乱找git各命令含义,

以下内容感觉讲的很详细,可以很清楚理解git提交流程,博主把重要的信息用红字标注了,更加显眼。

推荐使用TortoiseGit来进行git操作,非常方便,下载地址 https://tortoisegit.org/download/

以下内容转载自:https://blog.csdn.net/jason19966/article/details/88884578

相关资料参考2:https://blog.csdn.net/weixin_39618217/article/details/80985301

add和commit
我们可以把一个git仓库分为3个区,分别是工作区、暂存区、版本库。
工作区里存放的是我们正在操作的文件信息;每次add操作就会将工作区文件的修改信息添加到暂存区;每次commit 操作会将暂存区里的修改内容添加到版本库里。

git add :表示把中工作区中被修改过或已删除文件或新增的文件信息添加到暂存区。
常用命令 :git add filename 添加指定文件到暂存区;git add -A 添加工作区中所有被修改过或已删除文件或新增的文件信息添加到暂存区。

git commit :把暂存区里的内容提交到版本库里,每次commit都生成一个新的版本,对应一个commit id。
常用命令:git commit -m “commit message”

git fetch 、pull、push
git fetch: 获取远程仓库里的分支的最新版本到本地,不进行合并。所取回的更新,在本地主机上可以用”远程主机名/分支名”的形式读取。
常用命令:git fetch <远程仓库名> 获取远程仓库里的所有的分支的最新版本,可以简写成 git fetch;
git fetch <远程仓库名> <远程分支名> 获取远程仓库里指定分支的最新版本。
备注:git branch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支。
示例:git fetch origin dev2 拉取远程仓库的dev2分支的更新到本地,此时FETCH_HEAD指向origin/dev2分支。

git pull :获取远程仓库里的分支的最新版本到本地,与本地分支进行合并。
常用命令:git pull <远程仓库名> <远程分支名>:<本地分支名> 获取指定远程分支,与指定本地分支合并。当远程分支和本地当前分支合并的时候,

可以省略":<本地分支名>",可以通过git status 查看当前分支。
备注:git pull 相当于git fetch + git merge,fetch不会自动merge。
示例:git pull origin dev2:dev 获取远程仓库origin的dev2分支并和本地的dev分支合并。

git push : 将本地仓库分支的更新,推送到远程仓库。
常用命令:git push <远程仓库名> <本地分支名>:<远程分支名> 将本地指定分支的更新,推送到远程指定分支。当远程分支和本地分支同名的时候,

可以省略":<远程分支名>"。
示例:git push origin dev:dev2。将本地分支dev 推送到origin上的dev2上,若origin上没有dev2分支,则创建一个dev2分支。
git push origin :dev2 。删除origin上的dev2 分支,相当于将一个空的本地分支推送到origin的dev2分支上。

多人协作中版本推送到远程仓库的流程
整理好本地仓库的版本:使用git add 和git commit生成一个新的版本;
尝试直接将本地的更新推送到远程仓库。使用 git push。
若push 失败,则说明远程仓库的分支版本领先本地,即从上次pull或者fetch后,有人提交过更新。解决方案如下。
3.1 获取远程的最新版本与本地分支合并,使用git pull 或者git fetch + git merge。
3.2 合并时,若出现冲突,手动解决冲突后,使用git add 和git commit生成一个新的版本。
3.3 使用git push 将合并后的版本推送到远程仓库。

希望能帮助到对git迷茫的你。

【记录】gitLab git命令add commit fetch pull push的更多相关文章

  1. Git 协作:Fetch Pull Push Branch Remote Rebase Cherry-pick相关

    前言 学习git的时候,我们首先学习的是最常用的,自己独立开发Software时用的命令: git init //初始化git仓库 git add <file_name> //将文件添加到 ...

  2. Docker DevOps实战:GitLab+Jenkins(1)- GitLab容器搭建、使用SourceTree pull/push项目

    GitLab容器搭建 # 创建GitLab容器# --restart always #重启,容器自动重启# --privileged=true #容器内使用root权限 [root@localhost ...

  3. Git学习 --> 个人常用命令add,commit以及push

    Git命令行配置1 安装Github2 安装msysgit3 要配置用户名和油箱  git config --global user.name <用户名> 我的命令就是:git confi ...

  4. 我所记录的git命令(非常实用)

    一.前言 记录一下工作中常用到的git命令,只是简单的笔记,欢迎大家交流... [ 顺便问下园友们,怎么感觉博客园发布的博客搜索有时都搜不到,后台编辑能填的都填写了,还是觉得搜索排名不高? 相同的标题 ...

  5. 使用git命令修改commit提交信息

    很多时候我们在提交代码时可能会把commit提交信息写错了,这个时候我们就可以用到下面的git命令来修改commit提交信息 git commit --amend 输入"i"之后进 ...

  6. 2.每人自己建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令。比较项目的新旧版本的差别。答题人:张立鹏

    第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步.如果没有,打开Shell ...

  7. 第二章——建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令。比较项目的新旧版本的差别-----答题者:徐潇瑞

    1.首先下载安装git,很简单所以就不详细说了,当弹出一个类似的命令窗口的东西,就说明Git安装成功 2.因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识 3.接着,注册githu ...

  8. 第二章-如何使用github建立一个HelloWorld项目,git的add/commit/push/pull/fetch/clone等基本命令用法。--答题人:杨宇杰

    1.配置Git 首先在本地创建ssh 秘钥:在git bash输入: $ ssh-keygen -t rsa -C "your_email@youremail.com" eg:$ ...

  9. Git命令add和commit的区别

    要想弄明白git add和git commit的区别,首先我们需要知道三个概念:工作区(Working Directory).版本库(Repository).暂存区(Stage or index). ...

随机推荐

  1. vs 删除代码中空行

    原文:vs 删除代码中空行 ^\s*\n 正则表达式

  2. Java中的动态代理(jdk和cglib)

    JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类 ...

  3. 设计模式--简单工厂(Simple Factory)

    工厂模式是最常用的一种创建型模式,通常所说的工厂模式一般是指工厂方法模式.本篇是是工厂方法模式的“小弟”,我们可以将其理解为工厂方法模式的预备知识,它不属于GoF 23种设计模式,但在软件开发中却也应 ...

  4. CentOS 7.3 环境配置java和tomcat开机启动

    Centos7下添加开机自启动服务和脚本  https://blog.csdn.net/GMingZhou/article/details/78677953 安装部分参考我的博文,仅参考他的开机启动部 ...

  5. 【串线篇】实现一个RestfulCRUD

    一.概述 利用SpringMVC做一个CRUD(增删改查)符合Rest风格的: C:Create:创建 R:Retrieve:查询 U:Update:更新 D:Delete:删除 <%@tagl ...

  6. [BOOKS]Big Data: Principles and best practices of scalable realtime data systems

  7. proxy-target-class="false"与proxy-target-class="true"区别

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484063.html <aop:aspectj-autoproxy proxy-target- ...

  8. [NOIP模拟测试37]反思+题解

    一定要分析清楚复杂度再打!!!窝再也不要花2h20min用暴力对拍暴力啦!!! 雨露均沾(滑稽),尽量避免孤注一掷.先把暴力分拿全再回来刚正解. 即使剩下的时间不多了也优先考虑认真读题+打暴力而非乱搞 ...

  9. 线程类中使用spring注解报空指针异常

    springboot项目开发中,作为服务端,实现了线程类,在此类中添加spring注解@Source注入的service,报空指针异常. 查原因后,发现是线程中,不支持spring注解,因为sprin ...

  10. java并发编程笔记(三)——线程安全性

    java并发编程笔记(三)--线程安全性 线程安全性: ​ 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现 ...