git不断实践

【重要!!!】工作中开发的一般方法

情景:

  • 网站项目当前分支master
  • 当前正在开发新功能的分支dev1
  • 开发dev1过程中master分支出现新bug急需修复在master的基础上新增的分支bug1

流程:

  1. 保存提交dev1分支的内容(当前正在dev1分支上开发)
  2. 切换到master并新建bug分支bug1
  3. 处理完bug1分支后提交并切换到master合并bug1,提交(此时指针相当于移到了bug1分支)
  4. 切换到dev1分支,可以选择合并master或者等待dev1开发完后,切换到master分支后合并
  5. 完成

注意:

  • git一般会自动解决冲突,如果遇到冲突git会提示需要你手动解决,解决完后add一下表示冲突已解决,再用commit提交
  • 更多利用分支进行开发的工作流程请查看:

https://git-scm.com/book/zh/v1/Git-分支-利用分支进行开发的工作流程

全局配中国全量镜像

composer config -g repo.packagist composer https://packagist.phpcomposer.com

生成id_rsa、id_rsa.pub文件

ssh-keygen -t rsa -C "youremail@example.com"

composer安装yii2框架

composer global require "fxp/composer-asset-plugin:^1.3.1"
composer create-project --prefer-dist yiisoft/yii2-app-basic basic

git log 查看 提交历史

默认不用任何参数的话,git log 会按提交时间列出所有的更新,最近的更新排在最上面。

  1. 我们常用 -p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新:
$ git log -p -2
  1. –stat,仅显示简要的增改行数统计
$ git log --stat 
  1. 还有个常用的 --pretty 选项,可以指定使用完全不同于默认格式的方式展示提交历史,比如用oneline 将 每个提交 放在一行显示,另外还有short,full 和fuller 可以用
$ git log --pretty=oneline
  1. 但最有意思的是 format,可以定制要显示的记录格式
$ git log --pretty=format:"%h - %an, %ar : %s"
选项说明
%H提交对象(commit)的完整哈希字串
%h提交对象的简短哈希字串
%T树对象(tree)的完整哈希字串
%t树对象的简短哈希字串
%P父对象(parent)的完整哈希字串
%p父对象的简短哈希字串
%an作者(author)的名字
%ae作者的电子邮件地址
%ad作者修订日期(可以用 -date= 选项定制格式)
%ar作者修订日期,按多久以前的方式显示
%cn提交者(committer)的名字
%ce提交者的电子邮件地址
%cd提交日期
%cr提交日期,按多久以前的方式显示
%s提交说明

用 oneline 或 format 时结合–graph选项,可以看到开头多出一些ASCII字符串表示的简单图形,形象地展示了每个提交所在的分支及其分化衍合情况。

$ git log --pretty=format:"%h %s" --graph
  1. 更多参数
选项说明
-p按补丁格式显示每个更新之间的差异。
–stat显示每次更新的文件修改统计信息。
–shortstat只显示 --stat 中最后的行数修改添加移除统计。
–name-only仅在提交信息后显示已修改的文件清单。
–name-status显示新增、修改、删除的文件清单。
–abbrev-commit仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
–relative-date使用较短的相对时间显示(比如,“2 weeks ago”)。
–graph显示 ASCII 图形表示的分支合并历史。
–pretty使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format

git whatchanged 每次修改的文件列表
git whatchanged --stat 每次修改的文件列表, 及文件修改的统计
git show 显示最后一次的文件改变的具体内容
git show -5 显示最后 5 次的文件改变的具体内容
git show commitid 显示某个 commitid 改变的具体内容

  • 搜索指定log
    用 --author 选项显示指定作者的提交,用 --grep 选项搜索提交说明中的关键字。(请注意,如果要得到同时满足这两个选项搜索条件的提交,就必须用–all-match 选项。)
选项说明
-(n)仅显示最近的 n 条提交
–since, --after仅显示指定时间之后的提交。
–until, --before仅显示指定时间之前的提交。
–author仅显示指定作者相关的提交。
–committer仅显示指定提交者相关的提交。

来看一个实际的例子,如果要查看 Git 仓库中,2008 年 10 月期间,Junio Hamano 提交的但未合并的测试脚本(位于项目的 t/ 目录下的文件),可以用下面的查询命令:

$ git log --pretty="%h - %s" --author=gitster --since="2008-10-01" \
   --before="2008-11-01" --no-merges -- t/

http://blog.csdn.net/wh_19910525/article/details/7468549

取消对文件的修改

  • 修改最后一次提交
    有文件改动则添加到上一次修改的文件内并可修改注释
    没有文件改动则相当于修改注释
git commit --amend
  • 取消已经add的文件(注意–后的空格)
git reset HEAD <file> ...
  • 取消对文件的修改
    这条命令有些危险,所有对文件的修改都没有了,因为我们刚刚把之前版本的文件复制过来重写了此文件。所以在用这条命令前,请务必确定真的不再需要保留刚才的修改。
git checkout -- <file> ...

https://git-scm.com/book/zh/v1/Git-基础-撤消操作#取消已经暂存的文件

移除指定文件的版本控制

  • 还没有加到版本控制中
    • 还没有git add,在.gitignore中添加
    • 已经git add,先git rm -r --cached文件,再在.gitignore中添加
  • 已经加到版本控制中
    • 先git rm -r --cached文件,再.gitignore中添加,最后git commit -m提交.gitignore

http://blog.csdn.net/lxf0613050210/article/details/50749881

分支

  • 列出所有分支
    其他参数:
    -v 查看各个分支最后一个提交对象的信息
    –merged 查看哪些分支是当前分支的直接上游
    –no-merged 查看尚未合并的工作(用-d删除该分支会提示错误,强制删除用-D)
git branch
  • 创建新分支
git branch 分支名
  • 切换分支
git checkout 要切换的分支名
  • 创建并切换到新分支上
git checkout -b 新分支名
  • 删除分支
git branch -d 要删除的分支名
  • 合并分支
git merge 要与当前分支合并的分支名
  • 变基
# 先切换到待变基的分支
git checkout dev
# 将该分支变基到master上,使它成为 master 分支的直接下游
git rebase master
# 回到master进行快速合并
git merge dev

远程分支

  • 更新远程分支的内容到本地
git fetch origin
  • 将另一个远程项目添加到当前分支
git remote add teamone(自定义名称) 另一个远程项目
# 获取teamone的数据
get fetch teamone
  • 推送分支
git push origin origin
  • 获取本地不存在的一个指定远程分支
git merge origin/serverfix
  • 获取一个本地不存在,和指定远程名称不同的本地分支
git checkout -b 本地分支名称 origin/远程分支名
  • 删除远程分支
    注意,这里‘:’前等于省去了本地分支
# 参看:git push [远程名] [本地分支]:[远程分支]
git push origin :serverfix

利用储藏切换分支

  • 情景:
    你正在进行一个项目,而你想转到其他分支上,直接切换分支又不行,你又不想提交进行了一半的工作。
  • 新增储藏
git stash
  • 查看储藏列表
git stash list
  • 应用储藏
#  应用最近的储藏
git stash apply
# 应用指定储藏
git stash apply stash@{2}
  • 移除储藏
git stash drop stash@{0}
  • 重新应用储藏,同时立刻将其从堆栈中移走
git stash pop stash@{0}
  • 取消储藏
    情景:
    你可能想应用储藏的修改,在进行了一些其他的修改后,又要取消之前所应用储藏的修改
git stash show -p stash@{0} | git apply -R
# 命令太长想建立一个别名
git config --global alias.stash-unapply '!git stash show -p | git apply -R'
  • 从储藏中创建分支(略),具体可查看

https://git-scm.com/book/zh/v1/Git-工具-储藏(Stashing)#从储藏中创建分支

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值