git_community_book_notes:ch3_junior_usage

1忽略某些文件

  1. 起因
    • 项目中经常会生成一些GIt系统不需要追踪的文件。
    • 开发中你会发现项目中到处都有未追踪的文件。git add 和 git commit -a变得不实用
  2. 解决方案
    • 再顶层工作目录中添加一个.gitignore的文件,来告诉Git系统要忽略哪些文件。
    • .gitignore可以共享,项目开发者也能共享一个忽略文件规则
    • 对特定的仓库起作用: .git/info/exclude和git配置变量core.excludesfile中指定的文件里

2REBASE

2-1REBASE基本用法

git checkout -b mywork origin
#你对本地分支做了修改,他人对origin分支修改; 产生了“分叉”
  • 使用pull命令把origin分支上的修改拉下来合并,看起来像一个新的合并提交
  • 或者 使用git rebase命令,看起来更像一个没有合并的分支

    1. 把mywork的每个提交取消掉,并保存为临时补丁,在.git/rebase目录中
    2. 把mywork分支更新到最新的origin分支
    3. 应用上面保存的补丁到mywork上
  • gitrebase发生冲突时,解决冲突

    1. 解决冲突
    2. 用git-add命令更新这些命令
    3. 执行 git rebase --continue继续应用余下的补丁

2-2交互式rebase

关键词:交互式
向别处推送提交之前对他们进行重写。
对推送之前的提交进行分割、合并或者重排序
git rebase -i origin/master

#查看被rebase的提交
git log github/master..

假如从上一次推送起有5个提交

  1. 交互式添加:提供友好界面去操作git索引
  2. 交互式的操作,按照提示进行操作。

储藏

  • 情形:开发中遇到和当前工作不相关bug需要停止当前工作
  • 解决方式:使用git stash保存当前的工作状态, 修复完bug之后执行’unstash’操作回到之前的工作状态

流程:

git stash "work in progress for foo features"
##1. 将你的本地修改储存,然后重置工作目录和索引,恢复到分支上次提交时的状态
...edit and test...
##2. 修复bug
git commit -a -m "blorpl:typofix"
##3. 修复完bug之后,使用git stash apply恢复以前的工作状态
git stash apply

储藏队列

  • git stash list命令查看你保存的储藏stashes
    每执行一次储藏,就添加到stash队列中
  • git stash clear:清空这个队列
  • git stash apply stash@{l}:使用在队列中的任意一个储藏

GIT树名

用名字表示方法:替代SHA串表示一个提交或是其它git对象

  1. sha短名
    • 只要前缀不重复,一个提交的sha名就不会和其它名字冲突
  2. 分支,remote或标签
    • 使用分支,remote或标签名来替代SHA串名
  3. 日期标识符
    • 用日期标注版本
  4. 顺序标识符
    • 表示某点前面第N个提交;master@{5}表示master前面第5个提交
  5. 多个父对象
    • 告诉你某提交的第N个直接父提交; master由a,b合并而成;master^2表示分支b
  6. 波浪号
    • 表示一个提交对象的第N级祖父节点
  7. 树对象指针
    • master^{tree}
  8. 二进制标识符
    • master:/path/to/file得到某对象blob的sha串名
  9. 区间
    • ..表示

追踪分支

用来联系本地分支和远程分支。

  • 使用情形:

    • 经常从远程仓库里拉取分支到本地,但不想用gitpull这种格式

      1. git clone自动在本地建立一个’master’分支
      2. 在使用git branch的时候加上’–track’参数
        git branch --track experimental origin/experimental
      3. 运行git pull experimental
    • 从origin抓取内容,把远程的origin/experimental分支合并进本地的experi分支

使用GIT GREP进行搜索

  • 不用签出历史文件就能查找它们
    • git grep thingsforgrep
    • 参数 -n, –name-only, -c
    • -e 组合搜索条件

GIT的撤消操作-重置,签出和撤销

用于修复错误

  • 修复未提交文件中的错误(重置)
    • git reset --hard HEAD 命令会清空所有未提交的内容
    • git checkout -- hello.rb 恢复’hello.rb’
  • 修复已提交文件中的错误
    • 马上后悔了
      • 创建一个新的提交去撤销老提交所有的的修改
      • 修改老提交
  • 创建新提交来修复错误
    • git revert HEAD创建了一个撤销了上次提交的新提交
    • git revert HEAD^:撤销了上次提交的上次提交
    • git commit 把用于撤销的提交真正的提交
  • 修改提交来修改错误
    • git commit --amend

维护GIT

git靠压缩历史信息来节约磁盘和内存空间
git gc:比较耗时

  • 保持可靠性 git fsck进行仓库的一致性检查

建立一个公共仓库

git clone --bare ~/proj proj.git
touch proj.git/git-daemon-export-ok
  1. 在~/proj目录创建一个proj.git目录,这个目录里有一个”裸git仓库”
  2. 把pro.git目录拷贝到用来托管公共仓库的主机上
  3. 通过git协议或http协议导出git仓库

建立一个私有仓库

  • 通过ssh协议来访问仓库
git clone --bare /home/user/myrepo/.git /tmp/myrepo.git
scp -r /tmp/myrepo.git myserver.com:/opt/git/myrepo.git

- 使用Gitosos的多用户访问

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值