git log 查看自己修改的行数_git_github_03

实验楼在线教育:55 个 Linux 教程和练手项目合集​zhuanlan.zhihu.com
a139adfeb1a8fd18d1d98792e5118887.png
知识点:忽略部分文件
      rebase 命令
      stash 命令
      Git 树名

二、忽略某些文件
项目中经常会生成一些 Git 系统不需要追踪(track)的文件。
典型的是在编译生成过程中产生的文件或是编程器生成的临时备份文件。
当然,如果你不追踪(track)这些文件,平时可以不使用 git add 去把它们加到缓存区中,
但是这样会很快变成一件烦人的事,你发现项目中到处有未追踪(untracked)的文件。
这样也使 git add . 和 git commit -a 变得实际上没有用处,同时 git status 命令的输出也会有它们。

如何解决这些问题呢?
你可以在你的顶层工作目录中添加一个叫 .gitignore 的文件,
来告诉 Git 系统要忽略掉哪些文件,下面是文件内容的示例。
以'#' 开始的行被视为注释。, 
.gitignore 的文件内容为:
foo.txt #忽略掉所有文件名是 foo.txt 的文件
*.html  #忽略所有生成的 html 文件
!foo.html #如果 foo.html 这个文件不能忽略,可以写个例外
*.[oa]    #忽略所有 .o 和 .a 文件


三、rebase
假设你现在基于远程分支 origin,创建一个叫 mywork 的分支。
$ cd /home/shiyanlou/gitproject
$ git checkout -b mywork origin
现在我们在这个分支做一些修改,然后生成两个提交(commit)。
$ vim file.txt
$ git commit
$ vim otherfile.txt
$ git commit

但是与此同时,有些人也在 origin 分支上做了一些修改并且做了提交了。
这就意味着 origin 和 mywork 这两个分支各自 前进 了,它们之间 分叉 了。

在这里,你可以用 pull 命令把 origin 分支上的修改拉下来并且和你的修改合并;
结果看起来是会出现一个新的 合并的提交 (merge commit):
但是,如果你想让 mywork 分支历史看起来像没有经过任何合并一样,你也许可以用 git rebase:
$ git checkout mywork
$ git rebase origin
这些命令会把你的 mywork 分支里的每个提交(commit)取消掉,并且把它们临时保存为
补丁(patch)(这些补丁放到 .git/rebase 目录中),然后把 mywork 分支更新到最新的 origin 分支,
最后把保存的这些补丁应用到 mywork 分支上。

当 mywork 分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。
 如果运行垃圾收集命令(pruning garbage collection), 这些被丢弃的提交就会删除。

在 rebase 的过程中,也许会出现冲突(conflict)。在这种情况,Git 会停止 rebase 并会让你去解决冲突;
在解决完冲突后,用 git-add 命令去更新这些内容的索引(Index), 然后,你无需执行 git-commit,只要执行:

$ git rebase --continue
这样 git 会继续应用(apply)余下的补丁。
在任何时候,你可以用 --abort 参数来终止rebase的行动,并且 mywork 分支会回到 rebase 开始前的状态。
$ git rebase --abort


四、交互式 rebase
你也可以选择进行交互式的 rebase。这种方法通常用于在向别处推送提交之前对它们进行重写。
交互式 rebase 提供了一个简单易用的途径让你在和别人分享提交之前对你的提交进行分割、
合并或者重排序。在把从其他开发者处拉取的提交应用到本地时,你也可以使用交互式 rebase 对它们进行清理。

如果你想在 rebase 的过程中对一部分提交进行修改,你可以在 git rebase 命令中
加入 -i 或 --interactive 参数去调用交互模式:
$ git rebase -i origin/master
这个命令会执行交互式 rebase 操作,操作对象是那些自最后一次从 origin 
仓库拉取或者向origin 推送之后的所有提交。

若想查看一下将被 rebase 的提交,可以用如下的 log 命令:
$ git log github/master..
一旦你完成对提交信息的编辑并且退出编辑器,这个新的提交及提交信息会被保存起来。
如果指定进行 edit 操作,git 会完成同样的工作,但是在对下一提交进行操作之前,
它会返回到命令行让你对提交进行修正,或者对提交内容进行修改。

例如你想要分割一个提交,你需要对那个提交指定 edit 操作:
你会进入到命令行,撤销(revert)该提交,然后创建两个(或者更多个)新提交。假设提交 21d80a5 修改
了两个文件,file1 和 file2,你想把这两个修改放到不同的提交里。你可以在进入命令行之后进行如下的操作:
$ git reset HEAD^
$ git add file1
$ git commit -m 'first part of split commit'
$ git add file2
$ git commit -m 'second part of split commit'
$ git rebase --continue
交互式 rebase 的最后一个作用是丢弃提交。如果把一行删除而不是指定 pick 、squash和
 edit 中的任何一个,git 会从历史中移除该提交。

五、交互式添加
交互式添加提供友好的界面去操作 Git 索引(index),同时也提供了可视化索引的能力。
只需简单输入 git add -i,即可使用此功能。Git 会列出所有修改过的文件及它们的状态:
$ git add -i
在这个例子中,我们可以看到有5个修改过的文件还没有被加入到索引中(unstaged),
甚至可以看到每个文件增加和减少的行数。紧接着是一个交互式的菜单,
列出了我们可以在此模式中使用的命令。

如果我们想要暂存(stage)这些文件,我们可以键入 2 或者 u 进入更新(update)模式。
然后我们可以通过键入文件的范围(本例中是1-4)来决定把哪些文件加入到索引之中。
现在我们可以看到前4个文件已经被暂存,但是最后一个没有。
基本上,这是一个更加紧凑的查看状态的方式,
实质上的信息与我们在命令行中运行 git status 是一致的:
$ git status

aea6bf1795b2bcc3e9785ae98e562a80.png

4d0c5322e2f7a8feebae24d687a818be.png

Github 快速上手实战教程
1.2 实验知识点
	SSH 公私钥的基本使用
	Github 的基本使用
	Git 工具的基本使用
1.3 实验环境
	git: Git 管理工具
	ssh-keygen:SSH 公私钥管理工具
	xfce终端

b920bb357b4f0bfc037d2f0b97ba1f45.png

8d7e4062f0666e7d3b3d8fe87e54f9ba.png

6b3eb4007542c85e04890d88f328a328.png

fac3ad24f176cf751c708bcc7169932d.png

158c8b0bbdcfb26ba20b7111b874e121.png

29e3e7dc88e6d7496b55775da22c85e2.png

f232668112c8985e0bb82fdc6791a30f.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值