SourceTree使用

转载 2015年11月17日 17:00:07
SourceTree可以让你摆脱复杂的命令行,通过方便的GUI来控制你的Mercurial和Git仓库。 

浏览你的GitHub, Bitbucket, Kiln, 和 Atlassian Stash项目。 
也可以跟Subversion服务器协作。 
点击按钮即可完成提交、分支、合并等操作。 
通过数据仓库书签来直观的组织你的项目。 
友好的diffs视图,让你立即看到文件的更改。 
支持快速查看,甚至是你的历史变更。 
对行级别进行撤销或者stage/unstage 操作(注:stage是将代码从working tree 提交到index,index的代码可以commit到本地仓库,当然working tree也可以通过选择commit到本地仓库,)。 
自动创建和应用补丁。 



二、Git的基本概念 


       工作目录(working directory) 
       暂存区域(staging area) 
       本地仓库(local repo) 
       对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改     
(modified)和已暂存(staged)。 
       已提交表示该文件已经被安全地保存在本地数据库中了 
       已修改表示修改了某个文件,但还没有提交保存 
       已暂存表示把已修改的文件放在下次提交时要保存的清单中 

四、Git的基本操作-配置 


       /etc/gitconfig 对于所有用户使用的配置,git config --system操作该文件 
       ~/.gitconfig 对于当前用户使用的配置,git config --global操作该文件 
       当前工作目录的.git/config,对于当前项目有效 
       git config --global user.name 'zhangsan' 
       git config --global user.emal 'zahangsan@feinno.com' 
       git config --global core.editor vim 
       # 命令别名 
       git config --global alias.co checkout 
       git config --global alias.ci commit 
       git config --global alias.st status 

       git config --list 


五、Git的基本操作-创建 


       git init 
         git init --bare 无工作目录,服务器版本一般这样操作 

       git clone  
git clone ssh://git@192.168.199.61/~/nginx_ex.git nginx_ex 

git支持多种协议,git/ssh/http/file 


六、Git的基本操作-基本命令 


  1、基础命令 
       git add 
添加到stage 
       git rm 
从stage或者仓库删除并删除本地文件 
       git rm --cached 从stage或者仓库删除但并不删除本地文件 
       git status 查看工作区状态 
       git diff 比较差异 

       git commit 提交更新 


  2、tag标签命令 
       分轻量级标签(lightweight)和带注释的标签(annotated)。 
       轻量级标签和分支类似,只是不能移动。带注释的标签是存储在仓库的一个独立对象,建       
       议使用带注释的标签 
       git tag  
查看所有标签 
       git tag -l <pattern> 
查看符合模式的标签 
       git show <tagname> 
查看标签信息  
       git tag -a <tagname> -m <msg> <commit> 
对于指定commit加带注释的标签 git tag -a v0.1 -m 'basic structure‘ 
       git  tag –d <tagname> 
删除标签  
       git push <remote-name><tagname> 

       git push <remote-name> <brance-name> --tags 分享标签,推送到服务器 


  3、stash命令 
       在当前工作区比较凌乱,需要切换到其它分支,但不想提交现在的修改是可以使用stash功能。储藏修改过的被跟踪文件和暂存的变更,在某个时刻可以恢复到当前状态 
       git stash list        查看储藏列表 
       git stash apply   应用储藏但并未删除 
       git stash pop     应用储藏并删除 
       git stash drop    删除储藏 

       git stash branch 在储藏的基础上创建分支 


  4、Blame命令(责备命令) 
       git blame <filename> 
查看文件的每行的修改信息,用于排查问题 
       git blame –L <sart>,<end> 

查看指定范围的修改信息 


七、Git的基本操作-祖父引用 


       在引用后面加^,为本次提交的父引用 
       ^后加数字表示本次提交的第几父引用,只有在分支合并的时候有用 
       ~也是本次提交的父引用 
       ~后加数字n表示本地提交的往上回溯n代的父引用 
       例如: 
         HEAD~  <==> HEAD^ 

         HEAD~2 <==> HEAD^^ 


八、Git的基本操作-撤销 


       git checkout -- <filename> 
撤销已索引文件的修改 
       git commit --amend 
修改最后一次的提交 
其等价于 
       git reset –soft HEAD^ 
…do something… 
       git commit –c ORIG_HEAD 
       git reset命令进行撤销重置操作 
       --hard 
重设 index和working directory,自从<commit>以来在working directory中的任何改变都被丢弃,并把HEAD指向<commit>。  
       --soft 
index和working directory中的内容不作任何改变,仅仅把HEAD指向<commit>。这个模式的效果是,执行完毕后,自从<commit>以来的所有改变都会显示在git status的"Changes to be committed"中 
       --mixed 
仅reset index,但是不reset working directory。这个模式是默认模式,即当不显示告知git reset模式时,会使用mixed模式。这个模式的效果是,working directory中文件的修改都会被保留,不会丢弃,但是也不会被标记成"Changes to be committed",但是会打出什么还未被更新的报告。 
回滚最近一次的提交 
       git reset --soft HEAD^ 
HEAD^指向HEAD之前最近的一次commit。  
永久删除最后几个commit 
       git reset --hard HEAD~3 
ps:不要担心,其实也能找到,通过git ref-log或者git log –g 查看引用日志就可以找到以前的记录  
回滚pull 
       git reset --hard ORIG_HEAD 

执行git reset|pull|merge 时,git会把老的HEAD拷贝到文件.git/ORIG_HEAD中,在命令中可以使用ORIG_HEAD引用这个commit 


九、Git的基本操作-日志 


       git log -<n> 
最近的几条日志 
       git log -- filename 
查看文件的提交记录 
       git log --pretty=<format> 
控制输出格式 
       git log –oneline 
单行显示日志 
等价于 git log –pretty=oneline –abbrev-commit 
       git log –graph 
提供文本化图像的提交历史图 
       git log --since <date> 
       git log –unitl <date> 
       git <since>..<until> 
       git log origin/master..HEAD 
在当前分支而不再远程分支的提交  
        使用--not或者^表示不希望提交被包含在指定的分支 
       git log refA..refB 
       git log refB ^refA 
       git log refB --not refA  
        三个点,被两个引用的任意一个包含但不是同时包含的提交 

       git log --left-right master...experiment 


十、Git的基本操作-分支 


       git 分支就是指向某个commit对象的指针,实际上就是一个包含所指对象校验和(40个字符的SHA-1)的文件 。 
       可以参考 .git/refs 目录,查看所有的相关引用。 
       分支合并是git相对别的SCM提供的强大功能,对于git而已,创建分支的代价很小,强烈推荐使用。 
       git brance 
列出分支 
       git brance –v 
列出分支并包含最后一次提交的信息 
       git brance -a 
        列出所有分支,包含远程跟踪分支(远程跟踪分支为不可移动的,只有在与远程仓库发生操作时才可能移动) 
       git brance --merge 
        列出已合并的分支 
       git brance --no-merged 
列出未被合并的分支 
       git brance <name> 
添加分支 
       git brance -d <name> 
删除已被合并的分支 
       git brance -D <name> 
强制删除分支(不论是否合并) 
       git checkout <name> 
切换到分支 
       git checkout -b <name> <start-point> 
根据起始点新建分支并切换到分支 
       git merge <name> 
合并分支 
       git rebase <name> 
衍合分支 
        当发生冲突的时候,合并会被取消,需要手动解决冲突 
       git mergetool 
       git merge 
        寻找最近的共同祖先进行三方合并,合并产生新的commit对象,其有两个parent或者快速递进 
       git rebase 
        回到两个分支共同祖先,根据当前分支的历次commit对象,生成补丁文件,以基底分支的最后一次commit对象为出发点,逐步应用补丁文件,生成一个新的commit对象。 
       git rebase 

        能产生更整洁的提交历史。

 

十一、Git的基本操作-远程仓库 


       git remote -v 
列出远程仓库 
       git remote add <name> <url> 
添加远程仓库 
       git remote  -v show <name> 
查看远程仓库 
       git remote rm <name> 
删除远程仓库 
       git remote rename <old> <new> 
重命名远程仓库 
       git pull <remote-name>  
        从远程仓库获取更新并合并到当前分支 
       git fetch <remote-name> 
从远程仓库获取更新但并不合并  
       git push <remote-name> 
推送更新到远程仓库  
       git push <remote-name> <local brance>:<remote brance> 
        推送更新到远程仓库的指定分支 
       local brance 

        为空则删除远程分支 


十二、Git的基本操作-GIt目录 


       decription :供GitWeb程序使用 
       branches : 新版不在使用该文件夹 
       config : 项目配置信息 
       info目录 : 项目忽略模式 
       hooks : 客户端或者服务器端钩子 
       HEAD :指向当前分支 
       index : 保存了暂存区域信息 
       objects目录 :所有数据内容 

       refs 目录:指向数据(分支)的提交对象的指针

 

十三、Git与SVN的不同之处 


       svn为集中化的版本控制,svn获取最新的版本或者提交更新,历史记录等信息每次都要连接中央版本库 ; 
       git为分布式的版本控制,git跟svn一样也可以有中央版本库,每个开发人员克隆原始的代码仓库,在连接不了中央服务器的情况下依然能进行本地操作; 
       git把文件内容按元数据存储,svn按文件名称存储 ; 
svn分支就是备份所有项目文件到版本库中的另一个目录,速度慢而且合并起来复杂  
       git 分支就是指向某个commit对象的指针,实际上就是一个包含所指对象校验和(40个字符的SHA-1)的文件; 
       svn每次提交会把全局版本号加一,为连续的数字版本号; 
       git每次提交的生成一个SHA1的版本号,git识别简短的SHA1字符,只要大于4个字符且没有歧义就成; 
       git 的工作模式很多,svn只有集中式的工作模式。

Git 101

Git 101 原文:http://blog.dayanjia.com/2014/03/git-101/              按:这篇文章...
  • xiaoxinyu316
  • xiaoxinyu316
  • 2015年09月22日 15:13
  • 500

Git专题--系统的学习Git之一

本文为整理自:伯乐在线  1.Git详解之一:Git起步 2.Git详解之二:Git基础 3.Git详解之三:Git分支 4.Git详解之四:服务器上的Git 5.Git详解之五:分布式G...
  • JackJia2015
  • JackJia2015
  • 2016年04月18日 11:59
  • 1956

Git Rebase基础

我理解的git rebase: 适用情形:从master创建分支work,在开发过程中,master和work分支各自前进了几个版本。这时,有两种方法提交代码。一,使用git merge,把mas...
  • itissohardto_code
  • itissohardto_code
  • 2016年09月09日 17:41
  • 104

Git详解

1. 起步 1.1 - 关于版本控制1.2 - Git 简史1.3 - Git 基础1.4 - 安装 Git1.5 - 初次运行 Git 前的配置1.6 - 获取帮助1.7 - 小结 2....
  • andy_android
  • andy_android
  • 2011年11月22日 18:56
  • 3466

SourceTree中更改(amend)上一次提交

我们在使用Git的时候经常会遇到当代码修改已经push上去的时候,却发现有些拼写错误,漏加上文件之类的小错误。这个时候,我们通常的做法是commit,然后再push。其实这个完全没有必要再commit...
  • AlexAoMin
  • AlexAoMin
  • 2016年04月25日 18:49
  • 2914

Git专题--sourceTree介绍与使用

环境:  Mac OS X Yosemite 软件: SourceTree 1.下载安装SourceTree 2.sourceTree设置中添加用户 3.新仓库—从...
  • JackJia2015
  • JackJia2015
  • 2016年04月13日 09:50
  • 4671

Git协作注意合并和衍合的区别,just避雷

Git是团队协作开发的神兵利器,它最强势的地方是让我们可以极其快速的创建、切换代码分支。开发新功能了,从主干上切一个Feature分支,开发到一半正准备去厕所划个水,测试过来提了一个主干代码上的闪退B...
  • TripleS_X
  • TripleS_X
  • 2018年01月15日 17:18
  • 56

Git / Gitlab 奇淫技巧

我们现在在一些项目上已经开始使用 Git 来维护。关于 Git 的基本使用, @asce1885 的 技术周报 已经提供了一些学习资料。本文将收录一些有关 Git 和 Gitlab 的奇淫技巧,这...
  • majiakun1
  • majiakun1
  • 2016年02月23日 22:36
  • 7729

soureTree使用

下载地址:http://itunes.apple.com/cn/app/sourcetree-git-hg/id411678673?mt=12 官方简介(翻译的不好凑合着看哈): S...
  • cakexuexi
  • cakexuexi
  • 2013年12月24日 15:09
  • 990

Git SourceTree 冲突解决方案

Git现在越来越火,很多人都从Svn迁移到Git上面,Git让我们更加与世界接轨,不再是“局域网”的程序猿,特别是掌握了Git之后,会发现它真的很好用,本文对Git中比较烦人的冲突进行了详细的说明,希...
  • wodeyuer125
  • wodeyuer125
  • 2015年09月06日 18:38
  • 18486
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SourceTree使用
举报原因:
原因补充:

(最多只允许输入30个字)