转载廖雪峰
1. git status命令可以让我们时刻掌握仓库当前的状态
2. git diff 顾名思义就是查看difference,显示的格式正是Unix通用的diff格式。查看修改内容
3. git add 添加到仓库 (把文件修改添加到暂存区)
4. git commit -m “git tracks changes” 提交的修改到仓库 把暂存区的所有内容提交到当前分支
5. git log 命令显示从最近到最远的提交日志 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上–pretty=oneline参数
6. git reset –hard HEAD首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
7. git reset –hard 3628164(id) 再回去之前那个指定id版本
8. git reflog 。命令git reflog用来记录你的每一次命令
9. git checkout – 可以丢弃工作区的修改(撤销修改)
git checkout – file命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
10.git rm 从版本库中删除该文件 并且git commit**删除文件**
创建与合并分支
- 首先,我们创建dev分支,然后切换到dev分支:
$ git checkout -b dev
Switched to a new branch 'dev'
- git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
$ git branch dev
$ git checkout dev
Switched to branch 'dev
- 然后,用git branch命令查看当前分支:
$ git branch
* dev
master
$ git merge dev
现在,我们把dev分支的工作成果合并到master分支上
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
解决冲突
- Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
$ git stash
Saved working directory and index state WIP on dev: 6224937 add merge
HEAD is now at 6224937 add merge
- git stash list 查看工作现场
- 工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了:
Feature分支
开发一个新feature,最好新建一个分支;如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除
- git remote 查看远程库的信息
- git remote -v 显示更详细的信息
- $ git push origin master 推送分支
但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?
master分支是主分支,因此要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
标签
- git tag 《name》 创建标签
- git tag 查看标签
- git show 查看标签信息
命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a <tagname> -m "blablabla..."可以指定标签信息;
git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;
命令git tag可以查看所有标签
- 命令git push origin 《tagname》可以推送一个本地标签
- 命令git push origin –tags 可以推送全部未推送过的本地标签
- 命令git tag -d 可以删除一个本地标签
- 命令git push origin :refs/tags/可以删除一个远程标签