之所以写这篇文章,是因为昨天发生了一个很重要的事情,那就是我下了一天的代码,在提交的时候没有了。。。因为一些不当的git的操作,我损失了一天的劳动力,并因此付出加班到半夜的代价!因此,在网上查了一下git正确提交文件的步骤,在此做个记录。

一、我的不当操作

1、因为工作一天了,怕在远程代码库的代码被同事修改,我直接传上去会出现问题,所以想要先合并一下,也就是git  pull 下来,但是又觉得直接pull下来,十有八九会直接merge失败,因此我抖机灵一下:

git  checkout  -f

罪恶的根源:

什么是 git checkout ?

答:git checkout本意是切换分支或者创建分支,获取分支的HEAD。或者通过 git checkout master来获取当前master分支的HEAD等。但在使用 git checkout的时候需要注意:

在使用git checkout 时,如果其对应的文件被修改过,那么该修改会被覆盖掉。

git checkout -f 还有一种说法就是放弃本地的修改。所以,这个命令是罪魁祸首。需要慎重使用

2、接下来我又执行了  git pull  git push等操作,结果就是全军覆没,写了一天的东西都没了,这是个悲伤的故事。

二、关于正确的提交操作

一般来说,多人合作开发的时候,都有标准的,就是先提交commit,再pull,最后push

git add -A #需要添加到版本库中的文件 -A 就代表着所有文件(除开了 .gitignore忽略掉的文件)
git commit -m '本次提交的备注'
git pull #将远程的库和本地的库版本同步一下,因为远程库可能发生了修改(多人合作开发时)
git push

解释一下:

  1. commit 是为了告诉 git 我这次提交改了哪些东西,不然你只是改了但是 git 不知道你改了,也就无从判断比较;

  2. pull是为了本地 commit 和远程commit 的对比记录,git 是按照文件的行数操作进行对比的,如果同时操作了某文件的同一行那么就会产生冲突,git 也会把这个冲突给标记出来,这个时候就需要先把和你冲突的那个人拉过来问问保留谁的代码,然后在 git add && git commit && git pull 这三连,再次 pull 一次是为了防止再你们协商的时候另一个人给又提交了一版东西,如果真发生了那流程重复一遍,通常没有冲突的时候就直接给你合并了,不会把你的代码给覆盖掉

  3. 出现代码覆盖或者丢失的情况:比如A B两人的代码pull 时候的版本都是1,A在本地提交了2,3并且推送到远程了,B 进行修改的时候没有commit 操作,他先自己写了东西,然后 git pull 这个时候 B 本地版本已经到3了,B 在本地版本3的时候改了 A 写过的代码,再进行了git commit && git push 那么在远程版本中就是4,而且 A 的代码被覆盖了,所以说所有人都要先 commit 再 pull,不然真的会覆盖代码的

所以,以后我们都要记住,操作git的时候需要谨慎。也别是如我般的git新手,一定要小心小心再小心。幸亏昨天只是影响我自己的工作,如果是影响整个项目,那罪过就太大了。
end

git 如何正确的提交文件相关推荐

  1. GIT项目管理工具(part4)--提交文件暂存记录及同步文件至本地仓库

    本系列BLOG为鄙人学习GIT时的学习笔记.前一个知识点引出后一个知识点,后一个例子接着前一个例子. 文章目录 基本操作 3.将工作内容记录到暂存区 4.取消文件暂存记录 5.将文件同步到本地仓库 举 ...

  2. Git 本地篇之提交文件

    文章目录 1. 提交文件 1.1. 创建文件并提交到本地库 1.2. 修改文件并再次提交到本地库 2. 命令讲解 git add 基本用法 参数 -u -A 其他用法 添加指定目录 添加所有文件 小总 ...

  3. GIT如何设置只提交文件夹或者目录,而忽略内容?

    最近在做一个Django项目,使用了logs文件夹,项目框架大体如下: APITest -APITest -apps -static -templates -logs 但是提交到GIT的时候,我根目录 ...

  4. idea中的version control界面的git history不显示提交文件明细

    idea中git查看history, 以前是可以看到修改了哪些文件的: 后来不知道怎么的的,不能看到被修改了哪些文件了: 原因:旁边会有一条线,用鼠标拖下来就可以看到被修改的文件了!

  5. 【Git】Git 基础命令 ( 添加暂存文件 git add | 提交文件至版本库 git commit | 查看版本库状态 git status | 查询文件修改 git diff )

    文章目录 一.添加暂存文件 git add 二.提交文件至版本库 git commit 三.查看版本库状态 git status 四.查询文件修改 git diff 一.添加暂存文件 git add ...

  6. git 将暂存区文件提交_git基础命令之提交文件

    原标题:git基础命令之提交文件 测试百晓生 ceshibaixiaosheng 测试圈懂的最多的人,跟着百晓生一起学测试,你定会有收获.我就在你的口袋,你--有问题难得倒我吗? PS:一颗安利,百晓 ...

  7. Windows下Git Bash Here怎么整个文件夹目录上传到代码仓库(不论GitHub、GitLab、Gitee、DevCloud)

    使用Git方式clone和下载源码的方式已经很常用,可以通过SSH.HTTPS等方式下载,此处不啰嗦介绍,今天主要分享的是如何在Windows环境下,使用Git Bash命令操作文件或文件夹上传的方法 ...

  8. git如何忽略已经提交的文件 (.gitignore文件无效)

    一. 问题 在初始化git仓库的时候没有创建.gitignore文件来过滤不必要提交的文件, 后来却发现某些文件不需要提交, 但是这些文件已经被提交了, 这时候创建.gitignore文件忽略这些文件 ...

  9. git 将暂存区文件提交_Git知识

    Git 快速开始 一. 下载git 地址 : https://git-scm.com/downloads 二.git基础 1.git config 相关命令 # local 只对某一个仓库有效git ...

最新文章

  1. XGBOOST带试验源码
  2. sqlite数据库android使用教程,Android开发教程之 SQLite数据库的使用
  3. JavaScript中的对象与函数(一)
  4. 11.7 iostat: I/O信息统计
  5. 1821: 入学考试(1261采药)01背包
  6. 如何覆盖上一次commit_如何在 Linux 上一次性批量重命名一组文件?
  7. graphpad多条不同的曲线_GraphPad绘制几种常见散点图教程
  8. 运筹学及其matlab应用,运筹学基础及其MATLAB应用
  9. 【详细】endnote中英文文献混排
  10. html如何隐藏input,html如何让input隐藏
  11. 华三防火墙添加web用户_h3c防火墙用户名密码怎么样设置
  12. DTO-VO-DO-Query理解
  13. HadoopSpark
  14. mysql导入excel为什么丢行_Excel导入mysql数据丢掉
  15. 浏览器中的音视频知识总结v1.0(工作中需要和视频打交道必看!)
  16. 摄影笔记一:《李元谈摄影修炼之道》
  17. 2000,3500元个税起征点excel个人所得税计算公式
  18. activity-3、数据表介绍
  19. win7 快捷键冲突
  20. THCudaCheck FAIL file=/opt/conda/conda-bld/python/pytorch/work/aten/src/THC/THCCachingHostAllocator.

热门文章

  1. tanh relu可视化
  2. git clone early EOF解决方法
  3. ATSS EfficientDet
  4. torch bceloss nan
  5. Flask入门之Jinjia模板的一些语法
  6. opencv mat2 ffmpeg frame
  7. ubuntu16.04安装torch
  8. MediaCodec_loop 崩溃
  9. VMware vSphere 7 服务器ESXi虚拟化HA高可用解决方案
  10. Day 07 艺术家是靠天赋还是努力