mirror of
https://github.com/tj/git-extras.git
synced 2026-09-10 07:26:17 -04:00
add git-sync
This commit is contained in:
parent
e7083decec
commit
12e416a324
10
Commands.md
10
Commands.md
|
|
@ -43,6 +43,7 @@
|
|||
- [`git setup`](#git-setup)
|
||||
- [`git squash`](#git-squash)
|
||||
- [`git summary`](#git-summary)
|
||||
- [`git sync`](#git-sync)
|
||||
- [`git touch`](#git-touch)
|
||||
- [`git undo`](#git-undo)
|
||||
- [`git unlock`](#git-unlock)
|
||||
|
|
@ -987,3 +988,12 @@ $ git psykorebase master feature
|
|||
```
|
||||
|
||||
The above rebase `feature` branch on top of `master` branch
|
||||
|
||||
## git sync
|
||||
|
||||
Sync local branch with remote branch
|
||||
|
||||
```bash
|
||||
$ git sync origin master
|
||||
```
|
||||
|
||||
|
|
|
|||
61
bin/git-sync
Executable file
61
bin/git-sync
Executable file
|
|
@ -0,0 +1,61 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
function _usage()
|
||||
{
|
||||
local command="git sync"
|
||||
cat << EOS
|
||||
Usage:
|
||||
${command} <remote> <branch>
|
||||
${command} -h | --help | help | ?
|
||||
|
||||
Sync local branch with <branch> of <remote>.
|
||||
All changes and untracked files and directories will be removed.
|
||||
|
||||
Example:
|
||||
${command} origin master
|
||||
EOS
|
||||
}
|
||||
|
||||
function main()
|
||||
{
|
||||
while [ "$1" != "" ]; do
|
||||
case $1 in
|
||||
-h | --help | help | "?" )
|
||||
_usage
|
||||
;;
|
||||
* )
|
||||
if [ "${remote}" = "" ]; then
|
||||
local remote="$1"
|
||||
elif [ "${branch}" = "" ]; then
|
||||
local branch="$1"
|
||||
else
|
||||
echo -e "Error: too many arguments.\n"
|
||||
_usage
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ "${remote}" = "" -o "${branch}" = "" ]; then
|
||||
echo -e "Error: too few arguments.\n"
|
||||
_usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Are you sure you want to clean all changes & sync with '${remote}/${branch}'? [y/N]"
|
||||
local res
|
||||
read res
|
||||
case ${res} in
|
||||
"Y" | "y" | "yes" | "Yes" | "YES" )
|
||||
git fetch '${remote}' && git reset --hard '${remote}'/'${branch}' && git clean -d -f -x
|
||||
;;
|
||||
* )
|
||||
echo "Canceled."
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
35
man/git-sync.1
Normal file
35
man/git-sync.1
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
.\" generated with Ronn/v0.7.3
|
||||
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
||||
.
|
||||
.TH "GIT\-SYNC" "1" "January 2016" "" ""
|
||||
.
|
||||
.SH "NAME"
|
||||
\fBgit\-sync\fR \- Sync local branch with remote branch
|
||||
.
|
||||
.SH "SYNOPSIS"
|
||||
\fBgit sync\fR <remote> <branch>
|
||||
.
|
||||
.SH "DESCRIPTION"
|
||||
Sync local branch with <branch> of <remote>\. All changes and untracked files and directories will be removed\.
|
||||
.
|
||||
.SH "EXAMPLES"
|
||||
Sync local branch with origin/master
|
||||
.
|
||||
.IP "" 4
|
||||
.
|
||||
.nf
|
||||
|
||||
$ git sync origin master
|
||||
.
|
||||
.fi
|
||||
.
|
||||
.IP "" 0
|
||||
.
|
||||
.SH "AUTHOR"
|
||||
Written by Takuma Yamaguchi <\fIkumon0587@gmail\.com\fR>
|
||||
.
|
||||
.SH "REPORTING BUGS"
|
||||
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
|
||||
.
|
||||
.SH "SEE ALSO"
|
||||
<\fIhttps://github\.com/tj/git\-extras\fR>
|
||||
113
man/git-sync.html
Normal file
113
man/git-sync.html
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv='content-type' value='text/html;charset=utf8'>
|
||||
<meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
|
||||
<title>git-sync(1) - Sync local branch with remote branch</title>
|
||||
<style type='text/css' media='all'>
|
||||
/* style: man */
|
||||
body#manpage {margin:0}
|
||||
.mp {max-width:100ex;padding:0 9ex 1ex 4ex}
|
||||
.mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0}
|
||||
.mp h2 {margin:10px 0 0 0}
|
||||
.mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex}
|
||||
.mp h3 {margin:0 0 0 4ex}
|
||||
.mp dt {margin:0;clear:left}
|
||||
.mp dt.flush {float:left;width:8ex}
|
||||
.mp dd {margin:0 0 0 9ex}
|
||||
.mp h1,.mp h2,.mp h3,.mp h4 {clear:left}
|
||||
.mp pre {margin-bottom:20px}
|
||||
.mp pre+h2,.mp pre+h3 {margin-top:22px}
|
||||
.mp h2+pre,.mp h3+pre {margin-top:5px}
|
||||
.mp img {display:block;margin:auto}
|
||||
.mp h1.man-title {display:none}
|
||||
.mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143}
|
||||
.mp h2 {font-size:16px;line-height:1.25}
|
||||
.mp h1 {font-size:20px;line-height:2}
|
||||
.mp {text-align:justify;background:#fff}
|
||||
.mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211}
|
||||
.mp h1,.mp h2,.mp h3,.mp h4 {color:#030201}
|
||||
.mp u {text-decoration:underline}
|
||||
.mp code,.mp strong,.mp b {font-weight:bold;color:#131211}
|
||||
.mp em,.mp var {font-style:italic;color:#232221;text-decoration:none}
|
||||
.mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff}
|
||||
.mp b.man-ref {font-weight:normal;color:#434241}
|
||||
.mp pre {padding:0 4ex}
|
||||
.mp pre code {font-weight:normal;color:#434241}
|
||||
.mp h2+pre,h3+pre {padding-left:0}
|
||||
ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px}
|
||||
ol.man-decor {width:100%}
|
||||
ol.man-decor li.tl {text-align:left}
|
||||
ol.man-decor li.tc {text-align:center;letter-spacing:4px}
|
||||
ol.man-decor li.tr {text-align:right;float:right}
|
||||
</style>
|
||||
</head>
|
||||
<!--
|
||||
The following styles are deprecated and will be removed at some point:
|
||||
div#man, div#man ol.man, div#man ol.head, div#man ol.man.
|
||||
|
||||
The .man-page, .man-decor, .man-head, .man-foot, .man-title, and
|
||||
.man-navigation should be used instead.
|
||||
-->
|
||||
<body id='manpage'>
|
||||
<div class='mp' id='man'>
|
||||
|
||||
<div class='man-navigation' style='display:none'>
|
||||
<a href="#NAME">NAME</a>
|
||||
<a href="#SYNOPSIS">SYNOPSIS</a>
|
||||
<a href="#DESCRIPTION">DESCRIPTION</a>
|
||||
<a href="#EXAMPLES">EXAMPLES</a>
|
||||
<a href="#AUTHOR">AUTHOR</a>
|
||||
<a href="#REPORTING-BUGS">REPORTING BUGS</a>
|
||||
<a href="#SEE-ALSO">SEE ALSO</a>
|
||||
</div>
|
||||
|
||||
<ol class='man-decor man-head man head'>
|
||||
<li class='tl'>git-sync(1)</li>
|
||||
<li class='tc'></li>
|
||||
<li class='tr'>git-sync(1)</li>
|
||||
</ol>
|
||||
|
||||
<h2 id="NAME">NAME</h2>
|
||||
<p class="man-name">
|
||||
<code>git-sync</code> - <span class="man-whatis">Sync local branch with remote branch</span>
|
||||
</p>
|
||||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<p> <code>git sync</code> <remote> <branch></p>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p> Sync local branch with <branch> of <remote>.
|
||||
All changes and untracked files and directories will be removed.</p>
|
||||
|
||||
<h2 id="EXAMPLES">EXAMPLES</h2>
|
||||
|
||||
<p> Sync local branch with origin/master</p>
|
||||
|
||||
<pre><code>$ git sync origin master
|
||||
</code></pre>
|
||||
|
||||
<h2 id="AUTHOR">AUTHOR</h2>
|
||||
|
||||
<p>Written by Takuma Yamaguchi <<a href="mailto:kumon0587@gmail.com" data-bare-link="true">kumon0587@gmail.com</a>></p>
|
||||
|
||||
<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>
|
||||
|
||||
<p><<a href="https://github.com/tj/git-extras/issues" data-bare-link="true">https://github.com/tj/git-extras/issues</a>></p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<p><<a href="https://github.com/tj/git-extras" data-bare-link="true">https://github.com/tj/git-extras</a>></p>
|
||||
|
||||
|
||||
<ol class='man-decor man-foot man foot'>
|
||||
<li class='tl'></li>
|
||||
<li class='tc'>January 2016</li>
|
||||
<li class='tr'>git-sync(1)</li>
|
||||
</ol>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
30
man/git-sync.md
Normal file
30
man/git-sync.md
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
git-sync(1) -- Sync local branch with remote branch
|
||||
=================================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
`git sync` <remote> <branch>
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Sync local branch with <branch> of <remote>.
|
||||
All changes and untracked files and directories will be removed.
|
||||
|
||||
## EXAMPLES
|
||||
|
||||
Sync local branch with origin/master
|
||||
|
||||
$ git sync origin master
|
||||
|
||||
## AUTHOR
|
||||
|
||||
Written by Takuma Yamaguchi <<kumon0587@gmail.com>>
|
||||
|
||||
## REPORTING BUGS
|
||||
|
||||
<<https://github.com/tj/git-extras/issues>>
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
<<https://github.com/tj/git-extras>>
|
||||
|
||||
Loading…
Reference in a new issue