// 工做区 git status // 查看状态 git add . // 将全部修改修改加入暂存区 git commit -m "提交描述" // 将代码提交到本地仓库 git pull origin <共同开发的远程分支> // 拉取共同开发的远程分支,并合并到本地分支 git push // 将本地仓库代码更新到远程仓库
当改动了工做区的某个文件时,想恢复修改前,用命令 git checkout -- <filename>javascript
当不但改动了工做区的某个文件时,想恢复修改前,还 git add 添加到了暂存区时,想丢弃修改,分两步,
第一步用命令 git reset HEAD <filename>,回到场景1;
第二步按场景1操做。
html
git commit --amend -m "新提交信息"java
删除指定的 commitgit
修改版本库,保留暂存区,保留工做区;
将版本库软回退1个版本,软回退表示将本地版本库的头指针所有重置到指定版本,且将此次提交以后的全部变动都移动到暂存区。 github
修改版本库,修改暂存区,修改工做区;
将版本库回退1个版本,不只仅是将本地版本库的头指针所有重置到指定版本,也会重置暂存区,而且会将工做区代码也回退到这个版本。app
git版本回退,回退到特定的 commit_id 版本,能够经过 git log 查看提交历史,以便肯定要回退到哪一个版本( commit 以后的即为 ID )
ide
撤销某次操做,这次操做以前和以后的commit和history都会保留,而且把此次撤销做为一次最新的提交。 工具
撤销前一次 commit gitlab
撤销前前一次 commit 性能
撤销指定的版本,撤销也会做为一次提交进行保存。
git revert 是提交一个新的版本,将须要revert的版本的内容再反向修改回去, 版本会递增,不影响以前提交的内容
查看,建立并查看项目分支。
删除分支。
切换分支。
合并分支。 注意:须要到主合并分支下合并,例如要合并某分支到master ,首先须要切换到master 分支下再进行合并。
分支比较。 比较两个分支上最后 commit 的内容的差异
可以将全部未提交的修改(工做区和暂存区)保存至堆栈中,用于后续恢复当前工做目录。
git stash save 和 git stash 的做用相同,区别在于前者能够加一个对应stash的名称
查看当前 stash列表中的内容
将当前 stash 中的内容弹出,并应用到当前分支对应的工做目录上。该命令会将堆栈中最近保存的内容删除。
若是从 stash 中恢复的内容和当前目录中的内容发生了冲突,会提示出错,能够经过建立新分支以解决冲突。
将堆栈中的内容应用到当前目录,该命令不一样于 git stash pop 会将内容从堆栈中删除。
可使用 git stash apply <stash_name> (如 stash@{1})指定恢复哪一个 stash 到当前的工做目录。
从堆栈中移除某个指定的 stash。
清除堆栈中的全部内容。
查看堆栈中最新保存的 stash 和当前目录的差别。
git stash show stash@{1} 查看指定的 stash 和当前目录的差别。
能够经过 git stash show -p 查看详细的不一样。
从最新的 stash 建立分支,可用于解决 stash 中的内容和当前工做区内容冲突。
添加远程地址
拉取远程主机某分支的更新,再与本地的指定分支合并(至关与fetch加上了合并分支功能的操做)
假设提交线图在执行 pull 前是这样的:
若是是执行 git pull 后,提交线图会变成这样:
结果多出了 H 这个不必的提交记录。若是是执行 git pull --rebase 的话,提交线图就会变成这样:
F G 两个提交经过 rebase 方式从新拼接在 C 以后,多余的分叉去掉了,目的达到。
使用 git pull --rebase 比直接 pull 容易致使冲突的产生,若是预期冲突比较多的话,建议仍是直接 pull。
git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase
项目当中好的 commit messages 规范编写有助于多人维护项目和 review 项目,做为一名开发人员,也应该是一名项目的协做者,编写规范的 commit messages 是基本的要求。
Angular 团队的代码 commit messages 规范是社区中比较合理且系统化的,以下图:
Angular Git Commit Guidelines
https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines
<type>(<scope>): <subject> <BLANK LINE> <body> <BLANK LINE> <footer>
Closing issues using keywords
https://docs.github.com/en/free-pro-team@latest/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue,使用 jira 时,咱们在 commit message 中能够填写其影响的JIRA_ID
,若要开启该功能须要先打通 jira 与 gitlab。参考文档:https://docs.gitlab.com/ee/user/project/integrations/jira.html
一次 commit 的过程中,type 和 subject 为必须描述的信息,其余信息能够根据本次提交改动的规模进行选择描述。
若是对于 Changes 中的代码有更好的方案,能够添加评论而且暂不点击 Merge 操做合并代码,等待代码优化后下次 push 代码的时候会自动继续走 Merge Request 的流程。
Code Review 不只仅是去看对方的代码写得规不规范、细节上有没有小问题,更多的是:
- 暂时忘记对方的代码,若是让你来实现这个需求,你会如何设计,跟对方的设计思路一致么?差别在哪里?谁的更优?
- 暂时忘记具体的需求(或者你本来就不知道需求),看着对方的代码,是否可以理解他想完成一件什么事情么?他理解需求了么?他完成的好么?
其实 CR 就是对设计和实现的再次确认,在反复较量的过程当中,相互学习和成长。若是以上两个问题存在否认的答案,那就有必要好好写写 CR 评语了。
持续集成是一种软件开发实践,即团队开发成员常常集成他们的工做,一般每一个成员天天至少集成一次,也就意味着天天可能会发生屡次集成。每次集成都经过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程能够大大减小集成的问题,让团队可以更快的开发内聚的软件。
在 PineLines 中,能够集成 Gitlab-CI 和 Gilab-Runner。GitLab-Runner 是配合 GitLab-CI 进行使用的。通常地,GitLab 里面的每个工程都会定义一个属于这个工程的软件集成脚本,用来自动化地完成一些软件集成工做。当这个工程的仓库代码发生变更时,好比有人 push 了代码,GitLab 就会将这个变更通知 GitLab-CI。这时 GitLab-CI 会找出与这个工程相关联的 Runner,并通知这些 Runner 把代码更新到本地并执行预约义好的执行脚本。
详细的介绍和使用能够阅读这篇文章 Gitlab-CI 和 Gitlab-Runner
http://www.javashuo.com/article/p-ttejewie-ev.html
Issues 能够有两个做用
总之, Issues 把每一个需求直接挂载对应人的名下,能够直接看出该需求的责任人。而且经过观察全部的 Issues,能够直观的看出当前的开发进度,