月度归档:2015年04月

git使用rebase模式

一、概念上的用法:

1、同分支拉取使用:

git pull --rebase

2、不同分支衍合:

## local machine
(develop)$: git pull origin develop --rebase

## 切换到 feature 分支,衍合develop分支,如有冲突,解决冲突后continue,再次 commit
(develop)$: git checkout feature/user-extension
(feature/user-extension)$: git rebase develop
(feature/user-extension)$: ## ... 解决冲突
(feature/user-extension)$: git rebase --continue

(feature/user-extension)$: git commit origin feature/user-extension

二、本人实际用法:

同分支进行rebase,不同分支间进行merge。

其中同分支有两种情况:

1、本地分支无任何最新提交,远程有新提交。
执行 git pull 直接拉取即可。

2、本地分支有新提交,远程也有新提交。
执行 git pull –rebase 衍合远程分支。

参考:
http://blog.csdn.net/jackystudio/article/details/12309627
http://git-scm.com/book/zh/v1/Git-分支-分支的衍合
http://blog.isming.me/2014/09/26/git-rebase-merge/

http://blog.yorkxin.org/posts/2011/07/29/git-rebase/
http://hy2014.github.io/2014/07/25/git-rebase/
http://segmentfault.com/q/1010000000181403

git阻止本地有冲突文件时候push

目的是防止新手乱操作,老手误操作。

在每个git项目根目录下有个隐藏文件夹.git, 该文件夹下有个hooks目录,复制hooks目录下的pre-push.smaple并更名为pre-push文件,即 项目根目录/.git/hooks/pre-push 文件,编辑粘贴以下代码:

#!/bin/sh
git diff-tree --no-commit-id --name-only HEAD -z -- |
xargs -0 sh -c '
    for f; do
        if git show :"$f" | grep "< <<<<<< HEAD"; then
            echo "$f has some conflicts,can not push"
            exit 1;
        fi
        if git show :"$f" |grep ">>>>>>>"; then
            echo "$f has some conflicts,can not push"
            exit 1;
        fi
    done
    exit 0;
' -

然后保存即可。

来源于:http://blog.sina.com.cn/s/blog_61d8d9640102vaht.html