前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git 教程 -- 基于自己学习记录

Git 教程 -- 基于自己学习记录

作者头像
希希里之海
发布2019-04-17 17:01:53
6860
发布2019-04-17 17:01:53
举报
文章被收录于专栏:weixuqin 的专栏

Git 教程 -- 基于自己学习记录

1. 引言

由于学校布置了一项熟悉 git 和 svn 操作的实验,所以自己重新温习了下 git,记录过程在这。

2. 注册登录 GitHub。
1.png
1.png
3. 选择一个仓库克隆到本地,这里以我自己的一个私人项目为例,克隆到本地。
代码语言:javascript
复制
git clone https://github.com/weixuqin/love_source.git   //克隆项目到本地
2.png
2.png
4. 创建dev 分支,并切换到dev分支。
代码语言:javascript
复制
git checkout -b dev     //创建dev分支
git branch      //查看当前分支
3.png
3.png

合并分支, 删除分支。

代码语言:javascript
复制
vim README.md                   //修改操作
git add README.md               //提交
git commit -m "branch test"     //提交
git checkout master             //切回master分支
git merge dev                   //合并分支
git branch -d dev               //删除dev分支
git branch                      //查看当前分支
4.png
4.png

衍合分支。

代码语言:javascript
复制
git rebase dev
5.png
5.png

合并(merge)和衍合的区别:

merge把两个分支最新的快照以及两者的共同祖先进行三方合并,合并的结果是产生一个新的提交对象。 衍合是把在一个分支里发生的变化补丁在另一个分支重新打一遍。 衍合最后生成的快照,其实和普通的三方合并的快照内容一模一样。虽然最后整合得到的结果没有任何区别, 但是衍合能产生一个更为整洁的提交历史。如果观察一个衍合过的分支的历史记录,看起来会更清楚:仿佛所有修改都是在一跟线上先后进行的,尽管实际上他们原本是同时并行发生的。

5. 撤销操作。

回退到上一个版本

reset 用法:

代码语言:javascript
复制
git reset --hard HEAD^
6.png
6.png

revert 用法:

代码语言:javascript
复制
git revert HEAD

git revert 和 git reset的区别

  1. git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
  2. 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
  3. git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。

丢弃工作区的修改:

我们在已经提交的test.txt文件中添加一句话:

真是愚蠢!

使用 git checkout -- test.txt 撤销这句话的内容。

7.png
7.png

撤销暂存区的修改:

我们在已经提交的test.txt文件中添加一句话:

真是愚蠢!

并将test.txt文件add到暂存区。

使用 git reset HEAD test.txt 将test.txt,重新放回工作区。

8.png
8.png
6. git标签管理。

创建标签:git tag <name>

git tag 查看所有标签。

删除标签:git tag -d <tagname>

9.png
9.png
7. git fetch 和 push 用法。

fetch是将远程分支下载下来,但不会进行合并,

push是将本地分支上传到远程分支。

这里只进行fetch的演示,因为远程的git仓库我不想修改。

10.png
10.png
8. Git打补丁。

Git 提供了两种补丁方案,一是用 git diff 生成的UNIX标准补丁 .diff 文件,二是 git format-patch 生成的 Git 专用 .patch 文件。 .diff 文件只是记录文件改变的内容,不带有 commit 记录信息,多个 commit 可以合并成一个 .diff文件。 .patch 文件带有记录文件改变的内容,也带有 commit 记录信息,每个 commit 对应一个 .patch 文件。

a. 创建patch 文件的常用命令行。

某次提交(含)之前的几次提交:

代码语言:javascript
复制
git format-patch [commit sha1 id]-n     //n指从sha1 id对应的commit开始算起n个提交。
11.png
11.png

某两次提交之间的所有patch:

代码语言:javascript
复制
git format-patch [commit sha1 id]..[commit sha1 id]
12.png
12.png

b. 创建diff文件的常用方法。

代码语言:javascript
复制
git diff  [commit sha1 id] [commit sha1 id] >  [diff文件名]
13.png
13.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-04-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Git 教程 -- 基于自己学习记录
    • 1. 引言
      • 2. 注册登录 GitHub。
        • 3. 选择一个仓库克隆到本地,这里以我自己的一个私人项目为例,克隆到本地。
          • 4. 创建dev 分支,并切换到dev分支。
            • 5. 撤销操作。
              • 6. git标签管理。
                • 7. git fetch 和 push 用法。
                  • 8. Git打补丁。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档