Git分支管理及工具(简略笔记)

一.分支

分支可以使多人开发时开发进程各不影响。

1.分支的创建

$ git branch (分支名)

此时当前分支仍然在master上,切换到新分支需要执行命令:

$ git checkout (分支名)

2.分支的合并

在分支执行完动作后需要将分支内容并回主分支。命令行git merge(文件名)。

分支冲突时,单用merge无法正常合并,此时我们可以先git status查看unmerged的文件,这些有分割线进行分割。此处摘录部分教程。

  • 手动合并

    选择要保留的代码,然后再把>>>>>, ======, <<<<<<这些提示行给去掉。最后重新进行add commit的操作即可。

  • 放弃合并

    当我们发现冲突所导致的改动量很大时,我们可以选择放弃该次的合并。我们可以使用git merge --abort放弃此次的融合。如果我们在运行了git merge之后又进行了一些人为的改动,那么在abort之后,所进行的改动也会被回滚掉。

  • mergetool

    git官方开发了一个专门用来合并的工具,叫做git mergetool(下图所示),它会将找到一份两个分支的祖先代码作为base(基准),然后再将两个分支的改动都列举出来作为对比,让我们在git编辑器当中决定要留下什么。

3.分支推送到远程

可使用git remote -v查看远程库的详细信息。推送时使用命令行git push origin (分支名)。

4.分支的删除

  • 删除本地分支:
    git branch -d (分支名)
  • 删除远程分支

       git push origin --delete (分支名)

5.分支的重命名

git branch -m oldBranchName newBranchName

二.工具

1.引用修订版本

1.引用 Commit 的记录

SHA-1哈希值可以通过git log | more后commit的信息来确定。

git show (SHA-1值)可以查看某次提交信息。当然可以只写前6位甚至4位,以求简略。简略值可以通过git log --abbrev -commit来查看。

2.引用分支

如果你要查看一个分支的最后一次对象,可以通过分支名查看。查看本地分支列表通过git branch查看。显示结果中*表示当前工作的分支。查看远程分支后加-r。

然后git show (分支名)即可查看。

3.引用日历

命令行git reflog。

每当你的 HEAD 所指向的位置发生了变化,Git 就会将这个信息存储到引用日志这个历史记录里。 你也可以通过 reflog 数据来获取之前的提交历史。 如果你想查看仓库中 HEAD 在 2 次前的所指向的提交,你可以使用 @{n} 来引用 reflog 中输出的提交记录。

2.交互式暂存

运行 git add 后加 -i 或者 --interactive 选项的时候,Git 会进入一个交互式命令模式。

之后,在 Waht now>> 提示符后输入u或者2,它会提示你要暂存哪个文件。然后输入u后显示的要存文件的序号,回车即可。

如果想要查看已暂存内容的区别,可以使用 d 或 6(区别)命令。 它会显示暂存文件的一个列表,可以从中选择想要查看的暂存区别。

暂存补丁需要输入p或者5。通过yn选择是否要暂存每一区块,或通过a暂存从这到后面所有当前文件的修改。

3.贮藏与清理

命令行git stash。修改后暂时不想提交,但想切换分支时使用它,将变更先推入栈。

git stash list可查看stash列表。

切换至最后 stash 变更,直接执行 git stash apply 即可,当然如果有多个,可以通过 git stash apply stash@{n} 中的 n 来获取指定的的变更。

而对于清理可以使用git clean(会移除未跟踪文件)。

-f -d移除工作目录中所有未追踪的文件以及空的子目录,(-f强制删除,-d清理目录)-n可进行查看。-n -x可以移除掉忽略文件的内容。交互删除-i。

4.搜索

默认情况下git grep会查找你的工作目录文件。git grep (目录名)。

通过-n或者--line-number显示匹配的行号。

通过-c或者--count输出统计信息。

通过-p 或者 --show-function 显示每个匹配字符串所在的方法或函数。

对于目录,git log后加-s可知道新增的提交删除内容,-L选项进行行日志搜索,它可以展示代码中一行或者一个函数的历史。

 5.子模块

添加子模块git submodule add

可以通过git diff看到详细信息,更漂亮的差异输出可以加--submodule.

初始化本地配置文件git submodule init

从该项目中抓取所有数据并检出父项目中列出的合适的提交git submodule update

更新子模块可以使用git submodule update --remote

6 打包

命令行git bundle。详细情况见教程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值