所有的版本控制系统,只能跟踪文本文件的改动,比如TXT文件,网页,所有的编程代码等等
工作区:写代码的地方
暂存区:git add 到的地方
版本库:git commit 到的地方
一、基本操作
1.git init:把当前目录变成Git可以管理的仓库
2.git add <file> :添加文件到Git仓库
3.git commit -m <message> :添加文件到Git仓库
4.git reset :
- --soft:仅撤销commit,暂存区、工作区内容不变
- --mixed:撤销commit和add,工作区内容不变
- --hard:恢复到某个版本库中的代码(暂存区,工作区均变化)
- HEAD表示当前版本,上一个版本HEAD^,上上一个版本HEAD^^,上100个版本HEAD~100
5.git diff <file> :查看修改的内容
6.git checkout - - file 把文件在工作区的修改全部撤销
7.git rm file:删除一个文件
8.git clone 地址:克隆一个仓库
9.git stash:把工作现场“储藏”起来
10.git stash list:储藏列表
11.git stash apply:恢复储藏内容,但是恢复后,stash内容不删除
12.git stash drop:删除储藏内容
13.git stash pop:恢复的同时把stash内容也删除了
14.git stash apply stash@{0}:恢复指定的stash
15.git push origin master:把本地提交推送到远程库master分支
16.git pull:把最新的提交从远程库的某个分支抓下来(当有分支冲突的时候)
17.git branch --set-upstream-to=origin/dev dev: 设置本地dev分支和origin/dev的链接
18.git status :查看当前工作区的状态
19.git diff <file> :查看修改的内容
20.git log :查看提交历史,以便确定要回退到哪个版本
21.git reset --hard HEAD^
22.git relog :查看历史命令,以便确定要回到未来的哪个版本
23.git remote:查看远程库的信息
git remote -v:查看更详细的信息
24.git tag:查看所有的标签
25.git show <tagname>:查看标签信息
二、添加远程仓库
1.ssh-keygen -t rsa -C "你的邮件地址"
2.添加远程仓库 git remote add origin https://github.com/winwto/qunar.git
3.git push -u origin master
-u:关联一个远程库
三、创建与合并分支
一开始的时候,master分支是一条线,Git用master
指向最新的提交,再用HEAD
指向master
,就能确定当前分支,以及当前分支的提交点;每次提交,master
分支都会向前移动一步,这样,随着你不断提交,master
分支的线也越来越长:
当我们再创建一个新的分支dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,表示当前分支在dev上:
从现在开始,对工作区的修改和提交就是针对dev分支,比如新提交一个后,dev指针往前移动一步,而master指针不变:
假如我们在dev上的工作完成了,就可以把dev合并到master上。
直接把HEAD指向master。在合并完之后也可以删除dev分支。这样我们就只剩下一条master分支。
- git checkout -b dev:创建dev分支,然后切换到dev分支
-b 表示创建并切换
等价于 git branch dev:创建新分支dev
git checkout dev:切换分支dev - git merge dev:把dev分支的工作成果合并到master分支上
- git branch -d dev:删除dev分支
-D 强制删除 - git log --graph:查看分支合并图
- - -no - ff普通模式合并,合并后的历史有分支,能看出来曾经做过的合并,而fast forward合并就看不出来曾经做过合并
四、标签管理
1.git tag <name>:创建新标签
2.git tag -a <name> -m “说明文字”:创建新标签
3.git push origin <tagname> :推送一个本地标签
4.git push origin --tags:可以推送全部未推送过的本地标签
5.git tag -d <tagname>:可以删除一个本地标签
6.git push origin :refs/tags/<tagname>可以删除一个远程标签
五、课外
1.忽略特殊文件
在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
https://github.com/github/gitignore
2.配置别名
git config --global alias.st status:设置status的别名为st
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。
配置文件放哪了?每个仓库的Git配置文件都放在.git/config文件中。