git本地:
初始化【当然也可以用不过这样会多出一些非隐藏的git文件,显得比较乱】
git init 或 git --bare init
克隆:
$ git clone https://xxxx@xxxx.com/xxxx.git xxxx
本地查看分支
$ git branch
本地创建分支xbran
$ git branch xbran
本地切换到分支xbran
$ git checkout xbran
本地删除分支xbran
$ git branch -d xbran(有改动且未合并则系统提示错误)
$ git branch -D xbran(强制删除,丢掉分支上的改变)
查看已保存的远程仓库(remote 远程的,遥远的)
$ git remote -v
提交当前分支到远程仓库
$ git push origin [xbran]
(注意,提交前要先在本地commit才有改变)
获取当前分支的改变
$ git pull origin [xbran]
提交本地分支xbran到远程仓库同样作为xbran分支
$ git push origin xbran
删除远程仓库中的xbran分支
$ git push origin :xbran
获取远程分支xbran
$ git fetch https://xxxx@xxxx.com/xxxx.git xbran
运行:
可以将远程分支信息获取到本地
$ git fetch origin xbran
本地查看修改文件
$ git diff 文件名
$ git show commit
再运行 git checkout -b xbran_loc origin/xbran
就可以将远程分支映射到本地命名为xbran_loc的一分支。
-b 新建
git远程:
1 git clone UsrName@IPaddr:Dir //获得远程当前的分支文件。要输入远程端密码
2 以后再更新就用git pull就可以从你第一次git clone的地方更新同步了
3 对于你修改的东西向提交到上面的本地需要:
4 git add * //把所以的文件加入目录树
5 git commit -am "注释信息" //记录变更信息
6 git push //如果提示error 说明上面的本地正处在当前分支下,git checkout master切换到主分支再git push就可 以更新成功了
#回退a.py这个文件的版本到上一个版本
git reset HEAD^ a.py
#向前回退到第3个版本
git reset –soft HEAD~3
#将本地的状态回退到和远程的一样
git reset –hard origin/master
* 98abc5a (HEAD, master) more stuff added to foo
* b7057a9 initial commit
$ git reset --hard b7057a9
# 将本地没有add的修改过的文件删除
git clean -df
===== 合并commit ======
git rebase -i不再起作用,
$ git reset --soft HEAD^1
$ git commit --amend
$ git merge 的基本用法为把一个分支或某个commit的修改合并现在的分支上
例如:
先切换到要合并的分支[master]
$git checkout master
$ git merge xbran
Updating e90fd05..764894f
Fast-forward
test | 1 +
1 file changed, 1 insertion(+)
create mode 100644 test
==== git ~/.gitconfig 配置 =========
[user]
name = lzyfn123
email = lzyfn123@126.com
[alias]
co = checkout
ci = commit
st = status
sh = stash
br = branch
[merge]
tool = vimdiff
[color]
status = auto
branch = auto
ui = auto
-----------------------------
.gitignore 当前目录下,添加忽略文件
====== 配置操作无需密码登录:========
$> ssh-keygen -t rsa
Enter file in which to save the key (/u/kim/.ssh/id_rsa): 【回车】
Enter passphrase (empty for no passphrase): 【第一次密码】
Enter same passphrase again: 【第二次密码】
~/.ssh/id_rsa
~/.ssh/id_rsa.pub
2. 接下来把密钥文件内容上传到的SSH帐号下:
local:~ yourname$ cat ~/.ssh/id_rsa.pub | ssh severname@host 'cat >> .ssh/authorized_keys
=============== git flow =======================
安装git flow
1 git clone git://github.com/nvie/gitflow.git gitflow
2 cd gitflow
3 git submodule init
4 git submodule update
5 sudo make prefix=/usr/local install
安装好后测试下git flow
usage: git flow <subcommand>
Available subcommands are:
init Initialize a new git repo with support for the branching model.
feature Manage your feature branches.
release Manage your release branches.
hotfix Manage your hotfix branches.
support Manage your support branches.
version Shows version information.
Try 'git flow <subcommand> help' for details.
安装好git-flow之后,你可以在当前目录里开始一个新的仓库或者把一个已经存在的仓库转换成新的分支结构:
$ git flow init
它会问你一组问题,但是你最好接受默认值:
No branches exist yet. Base branches must be created now.
Branch name for production releases: [master]
Branch name for "next release" development: [develop]
How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []
在你回答这些问题之后,git flow会自动把你的默认分支设置为develop(或者任何你自己命名的),这是你将要开始工作的地方。
现在,像之前一样简单得去使用Git,但是只在develop分支上开发一些小功能。如果你需要开发一个大一些的功能,那么就得以develop分支为基础创建一个特性分支(feature branch)。这里假设你想要添加一个登录页面:
$ git flow feature start login
这会以我们的develop分支为基础创建一个名叫feature/login的新分支,然后并切换到这个分支上。提交代码并且当你完成了登录页面上的工作之后,简单的完成它:
$ git flow feature finish login
这将会把feature/login合并回develop,并且删除特性分支。
当你的特性完成的时候,简单地开始一个release分支 - 当然,也是基于develop分支 - 来提升版本号并且修复release之前的最后几个bug:
$ git flow release start v0.1.0
当你完成了一个release分支,它将会把你的修改合并到master和develop,所以你不用担心你的master会比develop提前。
最后一件使git-flow如此厉害的事情是其处理hotfixes的能力。你开始和完成一个hotfix分支就像处理其他分支一样,但是这个分支是基于master的,所以当生产环境上出现bug之后你可以迅速的修复它并且使用finish把分支合并回master和develop。
=============================================