`
zhangym124
  • 浏览: 338977 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

git使用小结【转】

阅读更多

 

Git版本库规范

不要提交垃圾文件。

  • 包括临时文件,编译产生的二进制文件,个人设置文件,与项目无关的文件等等。
  • 使用.gitignore文件来告诉git哪些文件应该忽略掉。

不要提交不能编译运行的代码到master分支。

  • 平时创建临时分支来工作,可以随时提交,当告一段落之后再合并到master分支。
  • 保证master分支的代码是可运行的,不影响其他团队成员。

善用本地分支。

  • 特性分支:可以每开始一个新功能或bugfix时就创建一个新分支,改完后合并到master。比如:newidea/issue90
  • 每个新版本也要用一个新分支,这样如果需要改老版本的bug,那么可以很轻松地切换到老分支,改完后再切回新分支。
  • 长期分支:大型项目中,用分支管理不同层次的稳定性,master/develop;
  • 特性分支:;

远程分支

  • 推送本地分支,与他人共同开发,比如多人协同中需要用到的特性分支。eg: git push origin feature_xxx;

git checkout -b git_doc;#创建本地分支
git push origin git_doc;#分享到远程仓库
git fetch origin;#获取远程仓库的所有信息

git checkout -t origin/git_doc;# 其他开发人员基于origin/git_doc创建本地分支

;为本地分支建立远程跟踪
git branch --set-upstream git_doc origin/git_doc;# make an existing local branch to track a remote branch

git pull;获取远程仓库的信息,并自动合并

git checkout master;合并分支到主干
git merge origin/git_doc
git push origin master

git push origin :git_doc;# 删除远程分支
git branch -d git_doc;# 删除本地分支

多提交,及时提交。

  • 每当改动达到可以用一句话描述的时候,就提交。

给每个准备提交上线的版本打tag。

  • 命名成v1.0.0_rc1这种格式,第一次提交就是rc1,第二次提交就是rc2等等。

写清楚提交注释。

  • 写明做了哪些修改,不要用笼统的一句话例如“改bug”,而是要写具体的说明例如,“按钮文字从转发改成分享”。

Ubuntu下配置gitlab

  1. 创建ssh key
    ssh-keygen -t rsa -C "xxx"

  2. 添加帐号
    ssh-add ~/.ssh/id_rsa

  3. 向gitlab添加key
    复制 ~/.ssh/id_rsa.pub 的内容 到:http://xxx.com/keys

  4. 获取kelude代码
    git clone git@xxx.com.xxx.git

Git常用命令

纳入版本控制

  • git status // 查看改动点
  • git diff
  • git add *.txt //添加所有txt文件
  • git add README //添加单个文件
  • git add . //添加所有文件包括子目录,但不包括空目录
  • git add -f xxfile //强制添加一个文件,忽略掉.gitignore中的配置

提交代码(本地仓库)

  • git commit -m “initial project version”
  • git commit -m “something” someFile //提交指定文件
  • git commit -C HEAD -a --amend //复用HEAD留言,增补提交(修改小错误,而不增加提交记录,掩盖自己的小马虎)

推送到远程仓库

  • git pull origin master //把远程仓库的master分支 合并到当前分支
  • git push origin master //推送到远程仓库的master分支

放弃本地的修改

  • 放弃未一个 没有添加到 版本控制的文件修改
    git checkout -- file/path

  • 放弃添加到版本控制
    git reset --hard file

  • 从仓库中删除文件
    git rm -r file/path

  • 放弃所有未提交的修改
    git reset --hard HEAD

  • 放弃最近x次的commit
    git reset --hard HEAD~1 //放弃最近一次的commit
    git reset --hard HEAD~2 //放弃最近两次的commit

解决合并冲突

  • 备份需要保留的本地文件

  • 丢弃本地所有修改 及 提交记录(与下面的命令配合使用)
    git fetch origin // 获取远程仓库的所有分支、所有信息
    git reset --hard origin/master // 重置为 origin master

  • 把备份的文件合并回来

  • 提交修改

远程分支

  • 推送本地分支,与他人共同开发,比如多人协同中需要用到的特性分支
    比如: git push origin feature_xxx;
    git branch //查看当前分支
    git checkout -b git_doc;#创建本地分支
    git push origin git_doc;#分享到远程仓库
    git checkout -t origin/git_doc;# 其他开发人员 获取origin/git_doc 分支,并创建本地分支
    git pull origin git_doc;#合并远程仓库的git_doc分支 到本地开发分支

  • 合并git_doc分支到master分支
    git checkout master;切换到master分支
    git fetch origin // 获取远程仓库的所有分支、所有信息
    git merge origin/git_doc;# 合并git_doc到master
    或者
    git pull origin git_doc;# 合并远程仓库的git_doc到当前分支
    最后
    git push origin master;# 推送到远程仓库master

  • 不再需要的分支 应该删除
    git branch -d git_doc;# 删除本地分支
    git push origin :git_doc;# 删除远程分支

推送数据(中央仓库)

  • git push [remote-name] [branch-name] //默认为 git push origin master
  • git push origin master //推送到远程仓库的 master分支
  • git push origin :branch_name //这个语法用于删除,只要把分号前留空

问责:谁修改了代码

  • git blame hello.html //你也可以用"-L"参数在命令(blame)中指定开始和结束行:
  • git blame -L 12,+10 hello.html //12到22行

归档版本库,导出压缩包

命令格式:git archive --format=格式 --prefix=目录/ 版本>压缩包.zip
* git archive --format=zip head>test.zip
* git archive --format=tar --prefix=mysite-1.0/ 1.0 | gzip>mysite-1.0.tar.gz
* git archive --format=zip --prefix=mysite-1.0/ 1.0 >mysie-1.0.zip

Git References

sparsecheckout

only used in git 1.7.0+

  • git config core.sparsecheckout true //enable sparse checkout
  • echo some/dir/ >> .git/info/sparse-checkout //add any number directories
  • git read-tree -m -u HEAD //read subdirectory
分享到:
评论

相关推荐

    Git中文学习手册 Git入门

    1 7 小结 2 Git 基础 2 1 取得项目的 Git 仓库 2 2 记录每次更新到仓库 2 3 查看提交历史 2 4 撤消操作 2 5 远程仓库的使用 2 6 打标签 2 7 技巧和窍门 2 8 小结 3 Git 分支 3 1 何谓分支 3 2 分支的...

    Git小结......

    Git小结......

    git,git与IDEA,git与github,git与gitee相关操作小结

    git,git与IDEA,git与github,git与gitee相关操作小结

    git教程(廖雪峰)小结汇总(带目录)

    git教程(廖雪峰)小结汇总(带目录),注意:内容仅限小结部分。方便快速浏览和查找

    gitblit 使用指南

    gitblit 使用方法小结

    详解git使用小结(本地分支与远程分支、git命令)

    主要介绍了git使用小结(本地分支与远程分支、git命令),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

    2018尚硅谷Git和GitHub视频教程

    13.添加提交命令小结 14.版本穿梭测试的准备工作 15.查看历史记录的几种不同方式 16.前进后退历史版本操作的本质 17.基于索引值前进后退版本 18.前进后退版本的其他方式 19.hard和soft以及mixed参数对比 20.永久删除...

    Git学习手册

    1 7 小结 2 Git 基础 2 1 取得项目的 Git 仓库 2 2 记录每次更新到仓库 2 3 查看提交历史 2 4 撤消操作 2 5 远程仓库的使用 2 6 打标签 2 7 技巧和窍门 2 8 小结 3 Git 分支 3 1 何谓分支 3 2 分支的新建...

    Git Submodule使用完整教程(小结)

    主要介绍了Git Submodule使用完整教程(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    GIT中文资源

    1.7 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2 Git 基础 13 2.1 取得项目的 Git 仓库 . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1.1 从当前目录初始化 . . . . . . ...

    Linux运维-04-日志分析-日志监控ELK-day03-生产案例及Git版本控制-11-阶段小结.mp4

    Linux运维-04-日志分析-日志监控ELK-day03-生产案例及Git版本控制-11-阶段小结.mp4

    git中文手册

    progit_git中文手册.pdf 1 起步1 1.1 关于版本控制. . . . . . . ....1.1.1 本地版本控制系统....1.1.2 集中化的版本控制...1.7 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    git和SVN的区别小结

    主要是谈谈两者的区别,svn是集中式版本控制系统,git是分布式版本控制系统,至于谁优谁劣看官自己思考吧,

    Git在eclipse中的配置详细记录(二)

    此小结的前提是已经搭建GIT服务器,并通过SSH协议连接,可参看文档《RHEL下搭建GIT服务器》《WindowsXP下搭建GIT服务器》《GIT服务器使用基础》。本文使用RHEL5.5系统下的GIT-2012-01-11,用户root/password,GIT...

    Git基础学习1

    1.Git的诞生 2.为什么要用Git 3.修改启动路径 4.安装版本库 5.选择记事本 6.提交文件 8.初步小结 1.修改文件 2.版本穿梭 3.版本回退

    使用GIT进行源码管理——GUI客户端小结

    Git for Windows: 这个是最常见的GIT客户端了,非常简洁,常用的功能也都有,VisualStudio推荐的第三方工具就是它。   TortoiseGit:相信在Windows下用SVN的人大多用过乌龟SVN,TortoiseGit的界面上与之非常相似...

    Git中需要熟记的命令小结

    git status 添加新增文件 git add your_file_path // 添加全部文件 git add * // 添加某类型文件 git add dir/*.js 简单的提交文件 git commit -m Commit message 提交你所有的修改文件以及添加的文件 git ...

    git pull时冲突的几种解决方式(小结)

    主要介绍了git pull时冲突的几种解决方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Linux运维-第4阶段-05-持续集成与持续发布(CICD)专题-day01-CICD之Git版本控制05-阶段小结.mp4

    Linux运维-第4阶段-05-持续集成与持续发布(CICD)专题-day01-CICD之Git版本控制05-阶段

Global site tag (gtag.js) - Google Analytics