Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15490528
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类: LINUX

2010-09-16 20:14:15

一.创建跟踪分支
创建跟踪分支,可以使用如下4种方式
1.使用repo start
2.使用git branch -t pool origin/master
3.使用git checkout -b pool origin/master
4.批量创建repo forall -c 'repo start pool .'
(可以使用repo abandon pool删除分支)

二.创建完跟踪分支之后,就可以直接同步merge远程代码到上面建立的比如pool跟踪分支了
repo sync

三.使用如下脚本gd或gd2查看自己本地所有修改了的但还未push回reporsitory的内容
---lgit_diff脚本-------------
#!/bin/bash
path=$1

if [ $path ] && [ -d $path ] ; then
    cd $path
    [ $2 ] && name_only="--name-only"
else
    [ $path ] && name_only="--name-only" && path=''
fi

remote=`git remote`
local_name="`git branch | sed '/\*/!d;s/\*\ //'`"
#remote_name="`git repo-config -l | \
#    sed "/^branch\.$local_name\.merge=/!d;s/^branch\.$local_name\.merge=//" | \
#    sed 's/^.*\///'`"
remote_name="`git repo-config -l | \
    sed "/^branch\.$local_name\.merge=/!d;s/^branch\.$local_name\.merge=//"`"

[ "$remote_name" == "" ] && echo "[ $local_name ] not a track branch --> `pwd`" && exit 0

mydiffs="$remote_name"
[ "$(echo $remote_name | cut -d'/' -f1)" = "$remote_name" ] && mydiffs="$remote/$remote_name"

diffs=`git diff $mydiffs --name-only`

if [ "$diffs" ]; then
    echo "=========================================="
    [ $path ] && echo $path
    [ "$name_only" = "" ] && echo
#   repo sync .
    git diff $mydiffs $name_only
fi

[ $path ] && cd - > /dev/null

---gd脚本-------------
#!/bin/bash
# repo sync
repo forall -c 'pwd' | xargs -l1 -I file lgit_diff file $1

---gd2脚本-------------
#!/bin/bash
repo sync
repo forall -c 'pwd' | xargs -l1 -I file lgit_diff file $1

四.进入相应修改目录,直接git reset去掉无用的log
git reset hashid
git commit -am '写一些此次提交综合的说明文字'

五.使用如下脚本进行check in或者
使用repo forall -c 'pwd' | xargs -l1 Sync2GitServerReporsitory统一提交多个变更的git库
---Sync2GitServerReporsitory脚本-------------
#!/bin/bash
path=$1
[ $path ] && cd $path

remote="`git remote`"
local_name="`git branch | sed '/\*/!d;s/\*\ //'`"
remote_name="`git repo-config -l | \
    sed "/^branch\.$local_name\.merge=/!d;s/^branch\.$local_name\.merge=//" | \
    sed 's/^.*\///'`"

[ "$remote_name" == "" ] && echo "[ $local_name ] not a track branch --> `pwd`" && exit 0

# We must Create a tracking branch, could use the following 3 ways
# 1. repo start $remote_name .
# 2. git branch -t pool origin/master
# 3. git checkout -b pool origin/master

git pull $remote $remote_name
git push $remote $local_name:$remote_name

[ $path ] && cd - > /dev/null
阅读(2153) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-09-17 15:57:00

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com