当前位置: 首页 > news >正文

找事做的网站/外贸全网营销推广

找事做的网站,外贸全网营销推广,wordpress 自动跳转,武汉网站优化公司今天是Git系列课程第五课,上一课我们做了Git本地提交前的准备工作,今天痞子衡要讲的是Git本地提交操作。当我们在仓库工作区下完成了文件增删改操作之后,并且使用git add将文件改动记录在暂存区之后,便可以开始将其提交到Git本地仓…

今天是Git系列课程第五课,上一课我们做了Git本地提交前的准备工作,今天痞子衡要讲的是Git本地提交操作。

当我们在仓库工作区下完成了文件增删改操作之后,并且使用git add将文件改动记录在暂存区之后,便可以开始将其提交到Git本地仓库。

1.本地文件改动提交git commit

Git空间本地的改动完成之后可以直接提交,有如下三种提交命令选项:

1.1将暂存区内容提交git commit -m ["description"]

暂存区里目前只有app/app.c文件,我们先将其提交至仓库。

// 将暂存区里所有改动提交到本地仓库,提交标题为"Initial application" jay@pc MINGW64 /d/my_project/gittest (master)$ git commit -m "Initial application"

[master 0a0c0fc] Initial application
1 file changed, 7 insertions(+)
create mode 100644 app/app.c

// 查看本地提交日志,确认提交是否已记录在仓库中 jay@pc MINGW64 /d/my_project/gittest (master)$ git log

commit 0a0c0fcec8a1ef56bfc6a24e68bbf1436b2ef2cf (HEAD -> master)
Author: Jay Heng
Date: Sat Mar 10 21:58:36 2018 +0800
Initial application
commit 867df08b4e13649e30926b483279dddce32750c2 (origin/master, origin/HEAD)
Author: Jay Heng
Date: Sat Mar 10 20:11:04 2018 +0800
second commit

1.2追加提交git commit --amend -m ["description"]

工作区里面还有app/test.c文件处于Untracked状态,我们想将其也加到1.1的提交里合并成一个提交。

// 将Untracked状态的test.c文件添加到暂存区,用于新提交 jay@pc MINGW64 /d/my_project/gittest (master)$ git add app/test.c

// 将暂存区里新改动追加提交到本地仓库,与上一次提交进行合并,并修改提交标题为"Initial application and test" jay@pc MINGW64 /d/my_project/gittest (master)$ git commit --amend -m "Initial application and test"

[master 589f65b] Initial application and test
Date: Sat Mar 10 21:58:36 2018 +0800
2 files changed, 7 insertions(+)
create mode 100644 app/app.c
create mode 100644 app/test.c

// 查看本地提交日志,确实两次提交被合并成了一个 jay@pc MINGW64 /d/my_project/gittest (master)$ git log

commit 589f65b386dd4475bb884c40ea1441d8449fdcd1 (HEAD -> master)
Author: Jay Heng
Date: Sat Mar 10 21:58:36 2018 +0800
Initial application and test
commit 867df08b4e13649e30926b483279dddce32750c2 (origin/master, origin/HEAD)
Author: Jay Heng
Date: Sat Mar 10 20:11:04 2018 +0800
second commit

1.3非Untracked文件的改动全部提交git commit -a -m ["description"]

我们新增一个名叫platform.c空白文件,并将其git add到暂存区;且对已提交的空白test.c文件修改恢复其一开始的内容。此时我们工作区(test.c)和暂存区(platform.c)均存在文件改动。有没有可能一次性将test.c和platform.c改动提交上去,答案当然是有。

// 将platform.c改动添加到暂存区 jay@pc MINGW64 /d/my_project/gittest (master)$ git add app/platform.c

// 查看Git空间当前状态,test.c改动在工作区,platform.c改动在暂存区 jay@pc MINGW64 /d/my_project/gittest (master)$ git status

On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)

Changes to be committed:
(use "git reset HEAD ..." to unstage)
new file: app/platform.c
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
modified: app/test.c

// 将Git空间内非Untracked改动之外的所有改动(无论是工作区/暂存区)一次性提交到本地仓库,此处为test.c和platform.c jay@pc MINGW64 /d/my_project/gittest (master)$ git commit -a -m "Add initial platform and update test"

[master 610feaf] Add initial platform and update test
2 files changed, 6 insertions(+)
create mode 100644 app/platform.c

// 查看Git空间当前状态,没有任何改动记录,说明test.c和platform.c改动已被提交到仓库 jay@pc MINGW64 /d/my_project/gittest (master)$ git status

On branch master
Your branch is ahead of 'origin/master' by 2 commits.
(use "git push" to publish your local commits)

nothing to commit, working tree clean

// 查看本地提交日志,又多了一次名为"Add initial platform and update test"的新提交 jay@pc MINGW64 /d/my_project/gittest (master)$ git log

commit 610feafbf5264b66dd0515f90cce79169aebd995 (HEAD -> master)
Author: Jay Heng
Date: Sun Mar 11 07:46:16 2018 +0800
Add initial platform and update test
commit 589f65b386dd4475bb884c40ea1441d8449fdcd1
Author: Jay Heng
Date: Sat Mar 10 21:58:36 2018 +0800
Initial application and test

需要注意的是git commit -a虽然是-all的简写,但其并不是将Git空间内所有改动全部提交,其不会提交工作区里新建的文件(Untracked状态)。

2.补丁包方式提交

Git是分布式版本控制系统,一个项目常常由多个人一起开发,有时候我们想把本地的改动交给别人去完成提交,传统的做法是把你改动的所有文件全部提取出来打包发送给对方,但显然这样做比较繁琐,而且你的提交描述也容易丢失。Git提供了一种很好方式解决这个需求,即生成一个patch,这个patch就是你本地的一次提交的所有信息,你只需要把这个patch发给别人就可以了。

2.1生成补丁包git format-patch

git format-patch命令是以本地提交为基础的,让我们先看看目前本地有多少提交:

// 图形化方式查看本地仓库里的历史提交,共记录4个提交 jay@pc MINGW64 /d/my_project/gittest (master)$ gitkd1dd87ae730645dbd807b60776cc2882.png

由上图可知,仓库里一共有4次提交,其中两次已推送到远程,还有两次在本地未推送:

2.1.1指定任意单个提交git format-patch -1 [commit]

让我们试着将"Initial application and test"这个提交生成patch:

// 将SHA-1号前7位为589f65b的提交生成一个patch jay@pc MINGW64 /d/my_project/gittest (master)$ git format-patch -1 589f65b0001-Initial-application-and-test.patch

此时在gittest仓库目录下便可以看到生成的.patch文件,让我们用文本编辑器打开它看一看,确实包含了这个提交的所有改动。

From 589f65b386dd4475bb884c40ea1441d8449fdcd1 Mon Sep 17 00:00:00 2001
From: Jay Heng 
Date: Sat, 10 Mar 2018 21:58:36 +0800
Subject: [PATCH] Initial application and test---
 app/app.c  | 7 +++++++
 app/test.c | 0
 2 files changed, 7 insertions(+)
 create mode 100644 app/app.c
 create mode 100644 app/test.c
diff --git a/app/app.c b/app/app.c
new file mode 100644
index 0000000..20fe868--- /dev/null+++ b/app/app.c@@ -0,0 +1,7 @@+#include +#include +int main(void)+{+    printf("hello world\n");+    return 0;+}
\ No newline at end of file
diff --git a/app/test.c b/app/test.c
new file mode 100644
index 0000000..e69de29-- 
2.16.2.windows.1

2.1.2当前提交之前n个提交git format-patch -n

如果一次想把本地未推送的提交全部生成patch,也可以试试-n参数,-1代表生成最近的一次提交的patch,-2代表生成最近两次提交的patch,以此类推。这个参数也可以用HEAD替换,HEAD^ 等效于-1,HEAD^^等效于-2,HEAD~n等效于-n。

// 将最近3次提交全部生成patch jay@pc MINGW64 /d/my_project/gittest (master)$ git format-patch HEAD~3

0001-second-commit.patch
0002-Initial-application-and-test.patch
0003-Add-initial-platform-and-update-test.patch

// 依然是将最近3次提交全部生成patch jay@pc MINGW64 /d/my_project/gittest (master)$ git format-patch -3

0001-second-commit.patch
0002-Initial-application-and-test.patch
0003-Add-initial-platform-and-update-test.patch

2.1.3某个提交之后的所有提交git format-patch [commit]

如果你觉得用-n参数显得有点繁琐,比如本地有很多个提交,你需要先往回数一共有多少个。还有一个方法是直接指定某个提交,以某个提交为基准往后的所有提交全部生成patch,比如我们以"second commit"为基准:

// 将SHA-1号前7位为867df08的提交之后的所有提交全部生成patch jay@pc MINGW64 /d/my_project/gittest (master)$ git format-patch 867df08

0001-Initial-application-and-test.patch
0002-Add-initial-platform-and-update-test.patch

2.2应用补丁包git am

2.1.3节生成了2个补丁包,让我们试着用一下这两个补丁包,在用之前我们需要先把本地仓库中这两次提交撤销并且也不保留在工作区(即完全删除)。

// 将最近两次提交在仓库里直接删除,不留痕迹 jay@pc MINGW64 /d/my_project/gittest (master)$ git reset --hard HEAD~2

HEAD is now at 867df08 second commit

// 查看本地提交日志,确实最近两次提交已被删除 jay@pc MINGW64 /d/my_project/gittest (master) $ gitk518ad5543a2fb72794f2504fcfe07e27.png

jay@pc MINGW64 /d/my_project/gittest (master)$ git status

On branch master
Your branch is up to date with 'origin/master'.

Untracked files:
(use "git add ..." to include in what will be committed)
0001-Initial-application-and-test.patch
0002-Add-initial-platform-and-update-test.patch
nothing added to commit but untracked files present (use "git add" to track)

2.2.1指定单个补丁包git am [patch path]

让我们试着将0001-Initial-application-and-test.patch打入我们的仓库。

// 将名为0001-Initial-application-and-test的patch文件打入仓库 jay@pc MINGW64 /d/my_project/gittest (master)$ git am 0001-Initial-application-and-test.patch

Applying: Initial application and test

// 查看本地提交日志,确实patch已经进入仓库 jay@pc MINGW64 /d/my_project/gittest (master)$ gitk30a13eb08addd642c3dc35f05cdd3b73.png

细心的朋友可能会注意到,同一个patch在生成和打入的时候SHA-1号是不一样的,是的,Git会保证任何时候任何人在任何本地仓库生成的任何提交都是唯一的。

2.2.2指定目录下所有补丁包git am [patch dir/*.patch]

让我们试着将gittest目录下的所有patch全部打入我们的仓库,需要注意的是由于2.2.1中已经将编号为0001 patch打入了仓库,所有我们需要先将这个patch文件删除,否则在打入的时候会报错。

// 将gittest目录下的所有patch文件全部打入仓库 jay@pc MINGW64 /d/my_project/gittest (master)$ git am *.patch

Applying: Add initial platform and update test

// 查看本地提交日志,确实patch已经都进入仓库 jay@pc MINGW64 /d/my_project/gittest (master)$ gitke8fc565ae96926b0fea881c1e6f4843d.png

http://www.lbrq.cn/news/1320121.html

相关文章:

  • 网络规划设计 网站建设/郑州优化公司有哪些
  • 怎样做黄色网站/前端培训班一般多少钱
  • 网站建设架构细节/廊坊关键词排名首页
  • 如何查看网站的流量/搜索引擎优化的内容
  • 网站开发安全需求/关键词搜索排名推广
  • 做网站毕业设计存在的问题/互联网最赚钱的行业
  • 苏州高端网站设计企业/免费外链工具
  • 承德市网站建设/阿里巴巴seo排名优化
  • 想学做网站学什么编程语言/google网站登录入口
  • 企业网站模板建设/百度用户服务中心电话
  • 北京网站建设东轩seo/关键词优化seo优化排名
  • 编辑html/排名轻松seo 网站
  • 杭州网站设计予尚/域名注册管理机构
  • 宝鸡做网站哪家好/aso优化方法
  • WordPress手机APP源码/怎样进行seo推广
  • 北戴河网站建设/青岛谷歌优化
  • 乐昌网站建设/香港seo公司
  • 东莞常平嘉华学校/360手机优化大师下载
  • 蕴川路上海网站建设/太原seo软件
  • 谁告诉你j2ee是做网站的/精准客户数据采集软件
  • 三星商城app下载/网站优化排名首页
  • b2b网站制作/网站没有友情链接
  • 网上做翻译兼职网站/今日最新消息
  • 网站建设新模式/磁力宝最佳搜索引擎入口
  • 网站建设公司问候语/友情链接检查工具
  • 中国的网站域名是什么/南京seo外包平台
  • 云空间免费空间/网站seo方法
  • 做自主外贸网站和后台费用多少/aso优化平台
  • 做网站用php还是java/腾讯营销平台
  • 怎嘛做网站/5188关键词挖掘
  • 通俗易懂解释Java8 HashMap
  • 一种基于入侵杂草优化算法(IWO)的聚类算法,并与K-Means、高斯混合模型(GMM)进行对比,Matlab
  • 【redis】基于工业界技术分享的内容总结
  • React ahooks——副作用类hooks之useThrottleFn
  • VSCode Python 与 C++ 联合调试配置指南
  • PyTorch深度学习快速入门学习总结(四)