软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 研发管理 -> Git使用教程 -> 正文阅读

[研发管理]Git使用教程


内容来自于:廖雪峰的官方网站--git详细教程

常用终端命令:


  • mkdir; git init                 //创建一个仓库repository,并init加入可跟踪配置.git
  • gitadd readme.txt         // 把文件添加到仓库,可反复多次使用,添加多个文件。addcommit一起使用,不可分离。
  • gitcommit -m "wrote a readme file”     //-m后面输入的是本次提交的说明
  • gitstatus                       //可以让我们时刻掌握仓库当前的状态,工作区和版本库就不一致时就会有信息出现。
  • gitdiff readme.txt          //查看修改内容,查看difference,显示的格式是Unix通用的diff格式
  • gitlog                            //从最近到最远的提交日志,--pretty=oneline一行简要显示。commit idSHA1计算,十六进制表示。
  • git reflog                         //用来记录你的每一次命令,即使回退,重启电脑,对于未来的操作也会记录下版本号,可恢复未来
  • gitreset --hard HEAD^    //回退到上一个版本,上上一个版本:HEAD^^,往上100个版本:HEAD~100
  • gitreset --hard 3628164   //指定回到未来的某个版本。hard参数后面是commit id,版本号前几位就可以了,Git会去找

[img]
[img]http://img.blog.csdn.net/20160331094844128?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center[img]http://img.blog.csdn.net/20160331094925597?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
  • gitcheckout -- file         //可以丢弃工作区的修改或删除,文件回到最近一次gitcommitgit add时的状态,例如修改了还没add
  • gitreset HEAD —file      //暂存区的修改撤销掉(unstage),重新放回工作区,例如已经add了,但是还没commit
  • gitrm test.txt                               //确定要从版本库中删除该文件
  • gitcommit -m "remove test.txt”   //修改完记得commit,无论是删除还是修改

 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

远程仓库




    本地Git仓库和GitHub仓库之间的传输是通过SSH加密:
  • 第一步:用户主目录,ssh-keygen -t rsa -C"youremail@example.com”,创建.ssh目录,包含了id_rsaid_rsa.pub这两个文件
  • 第二部:GitHub账户中,“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。

 
    先有本地库,后有远程库的时候,关联远程库步骤:
  • gitremote add origin git@github.com:MengyuMa/learngit.git   //远程库的名字就是origin,这是Git默认的叫法
  • gitpush -u origin master  // -u参数,本地的分支内容推送的远程新的分支且关联起来,在以后可以简化命令。
  • gitpush origin master      //从现在起,只要本地作了提交,就可以通过命令
  • gitclone git@github.com:MengyuMa/Algorithm.git       //从远程库克隆


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

分支管理


  • gitcheckout -b dev          //创建dev分支,然后切换到dev分支     ==     git branch dev   and    git checkout dev
  • gitbranch                       //查看当前分支,列出所有分支,当前分支前面会标一个*
  • git addreadme.txt 
  • git commit-m "branch test"
  • gitcheckout master   //切换回master分支查看readme.txt,刚才添加的内容不见,因为那个提交是在dev分支上,而非master分支
  • gitmerge dev              //合并指定分支到当前分支
  • gitbranch -d dev         //合并后就可以放心的  删除  dev分支了

[img][img]http://img.blog.csdn.net/20160331094935457[img]http://img.blog.csdn.net/20160331094945519      [img]

分支管理策略




    Git<<<<<<<=======>>>>>>>标记出不同分支的内容
  • gitlog --graph --pretty=oneline --abbrev-commit      //带参数--graphgitlog也可以看到分支的合并情况,分支合并图

[img]
[img]http://img.blog.csdn.net/20160331094958707
  • git merge--no-ff -m "merge with no-ff" dev

    合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并,如下图
[img]http://img.blog.csdn.net/20160331095006129

[img]

Bug分支




    修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再gitstash pop,回到工作现场。
  • git stash
  • gitcheckout master
  • gitcheckout -b issue-101
  • git addreadme.txt 
  • git commit-m "fix bug 101"
  • gitcheckout master
  • git merge--no-ff -m "merged bug fix 101" issue-101
  • git branch-d issue-101
  • gitcheckout dev
  • git stashlist
  • git stashpop                //git stash apply   +      git stash drop

  • gitstash apply stash@{0}         //多次stash,恢复的时候,先用gitstash list查看,然后恢复指定的stash

Feature分支




    开发一个新feature,最好新建一个分支;如果要丢弃一个没有被合并过的分支,可以通过gitbranch -D <name>强行删除。
 

多人协作:


  • gitremote    //查看远程库的信息,
  • gitremote -v    //显示更详细的信息,显示了可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址
  • gitpush origin master    //推送分支

    PSmaster分支是主分支,要时刻与远程同步;dev分支是开发分支,所有成员在此工作,也需要与远程同步;bug分支没必要推到远程;feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
 
  • gitclone git@github.com:michaelliao/learngit.git           //远程库clone只看到本地的master分支,因此
  • gitcheckout -b dev origin/dev                     // 必须创建远程origindev分支到本地,这个命令创建本地dev分支:
  • gitbranch --set-upstream dev origin/dev     //必须创建远程origindev分支到本地,于是他用这个命令创建本地dev分支
  • git pull
  • git commit-m "merge & fix hello.py"
  • git pushorigin dev

    PS:多人协作的工作模式通常是这样:git push origin branch-name推送自己的修改;推送失败,则因为远程分支比你的本地更新,需要先用gitpull试图合并;如果合并有冲突,则解决冲突,并在本地提交,然后git push origin branch-name;如果gitpull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-nameorigin/branch-name
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

标签


  • gittag <name>            //用于新建一个标签,默认为HEAD,也可以指定一个commitid
  • gittag -a <tagname> -m "blablabla…”       //可以指定标签信息;
  • gittag -s <tagname> -m "blablabla…”        //可以用PGP签名标签;
  • gittag                                                         //可以查看所有标签。
  • gitpush origin <tagname>                         //可以推送一个本地标签;
  • gitpush origin --tags                                 //可以推送全部未推送过的本地标签;
  • gittag -d <tagname>                                 //可以删除一个本地标签;
  • gitpush origin :refs/tags/<tagname>          //可以删除一个远程标签

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

配置


  • git config--global color.ui true
  • git config--global alias.st status
  • git config--global alias.co checkout
  • git config--global alias.ci commit
  • git config--global alias.br branch
  • gitconfig --global alias.unstage 'reset HEAD’   //把暂存区的修改撤销掉(unstage),重新放回工作区
  • gitconfig --global alias.last 'log -1’                  //让其显示最后一次提交信息:
  • git config--global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset-%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'--abbrev-commit"

    PS--global是全局参数,这台电脑的所有Git仓库下都有用,当前用户的Git配置文件放在用户主目录下.gitconfig
 

Fork




    在GitHub上,可以任意Fork开源仓库;自己拥有Fork后的仓库的读写权限;可以推送pull request给官方仓库来贡献代码。
 

搭建Git服务器




    详细教程再搜吧。


 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

忽略功能




    Git工作区的根目录下特殊的.gitignore文件,然后把要忽略的文件名填进去,GitHub已经为我们准备了各种配置文件,组合就可以使用,所有配置文件可以直接在线浏览:https://github.com/github/gitignore。忽略文件的原则是:操作系统自动生成的;编译生成的中间文件、可执行文件;忽略你自己的带有敏感信息的配置文件.gitignore也提交到Git,检验.gitignore的标准是gitstatus命令是不是说working directory clean
 

.gitignore配置语法




1、配置语法:
  • 以斜杠“/”开头表示目录;
  • 以星号“*”通配多个字符;
  • 以问号“?”通配单个字符
  • 以方括号“[]”包含单个字符的匹配列表;
  • 以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
  • git对于.ignore配置文件是按行从上到下进行规则匹配的,如果前面的规则匹配的范围更大,则后面的规则将不会生效;

2、示例:
1)规则:fd1/*
 说明:忽略目录 fd1下的全部内容;不管是根目录下的 /fd1/目录,还是某个子目录/child/fd1/目录,都会被忽略;
2)规则:/fd1/*
 说明:忽略根目录下的 /fd1/目录的全部内容;
3)规则: /*
                   !.gitignore
                    !/fw/bin/
                    !/fw/sf/
                    说明:忽略全部内容,但是不忽略 .gitignore文件、根目录下的 /fw/bin/ /fw/sf/目录;
......显示全文...
    点击查看全文


上一篇文章      下一篇文章      查看所有文章
2016-04-01 16:58:54  
研发管理 最新文章
拉格朗日乘数
maven之可视化项目依赖(Visualizingdepend
mac效率工具
Atitit.css规范bem项目中CSS的组织和管理
git入门
Asimplemodelfordescribingbasicsourcesofp
Linux进程管理浅析
我的openwrt学习笔记(十九):linux便捷开
2、微控制器选择
Git使用手册:为Git仓库创建Submodule
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年1日历
2018-1-16 17:16:09
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --