文章目录
【重要!!!】工作中开发的一般方法
情景:
- 网站项目当前分支master
- 当前正在开发新功能的分支dev1
- 开发dev1过程中master分支出现新bug急需修复在master的基础上新增的分支bug1
流程:
- 保存提交dev1分支的内容(当前正在dev1分支上开发)
- 切换到master并新建bug分支bug1
- 处理完bug1分支后提交并切换到master合并bug1,提交(此时指针相当于移到了bug1分支)
- 切换到dev1分支,可以选择合并master或者等待dev1开发完后,切换到master分支后合并
- 完成
注意:
- git一般会自动解决冲突,如果遇到冲突git会提示需要你手动解决,解决完后add一下表示冲突已解决,再用commit提交
- 更多利用分支进行开发的工作流程请查看:
全局配中国全量镜像
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 会按提交时间列出所有的更新,最近的更新排在最上面。
- 我们常用 -p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新:
$ git log -p -2
- –stat,仅显示简要的增改行数统计
$ git log --stat
- 还有个常用的 --pretty 选项,可以指定使用完全不同于默认格式的方式展示提交历史,比如用oneline 将 每个提交 放在一行显示,另外还有short,full 和fuller 可以用
$ git log --pretty=oneline
- 但最有意思的是 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
- 更多参数
选项 | 说明 |
---|---|
-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/
取消对文件的修改
- 修改最后一次提交
有文件改动则添加到上一次修改的文件内并可修改注释
没有文件改动则相当于修改注释
git commit --amend
- 取消已经add的文件(注意–后的空格)
git reset HEAD <file> ...
- 取消对文件的修改
这条命令有些危险,所有对文件的修改都没有了,因为我们刚刚把之前版本的文件复制过来重写了此文件。所以在用这条命令前,请务必确定真的不再需要保留刚才的修改。
git checkout -- <file> ...
移除指定文件的版本控制
- 还没有加到版本控制中
-
- 还没有git add,在.gitignore中添加
-
- 已经git add,先git rm -r --cached文件,再在.gitignore中添加
- 已经加到版本控制中
-
- 先git rm -r --cached文件,再.gitignore中添加,最后git commit -m提交.gitignore
分支
- 列出所有分支
其他参数:
-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'
- 从储藏中创建分支(略),具体可查看