git命令速查
克隆项目:
git clone https://github.com/shoukailiang/test.git
设置
如果你不设置可能还push不上去,第一个要配置的是你个人的用户名称和电子邮件地址。这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录:
- git config –global user.name “shoukailiang”
- git config –global user.email shoukailiang@qq.com
git status 查看状态
[master ≡ +2 ~0 -0!](红色代表是工作区):工作区有两个添加的文件,0个修改,0个删除
[master ≡ +1 ~0 -0(绿色) | +1 ~0 -0 !(红色)]:绿色表示暂存区 !表示有冲突
git add 添加到暂存区
git commit 提交到版本库,会弹出一个文件填注释
git add .把修改过得文件全部提交到暂存区(后面是.)
git commit -m “change demo01”:注释写在引号里面,不会弹出记事本
git commit -a -m “drag.js”:先添加到暂存区后添加到版本库的简写,引号里面写注释
git log:查看提交的历史,历史多了之后要按回车来显示,退出按q
git diff :工作区和暂存区的文件的差异的对比
git diff –cached:暂存区与版本库之间的对比(或者git diff –staged)
git diff master:工作区与版本库之间的差异 ,master那个是分支的名字
撤销
- git reset HEAD drag.js 从暂存区撤销回工作区
- git checkout – drag.js 从版本库撤销回工作区(会先从暂存区撤销,如果没有才会到版本库中撤销)
- git commit -m “change3 drag.js and demo01.html” –amend :比如有两个文件1,2 我把1 add到暂存区,然后commit了全部,
这时候就除了错误,可以使用上述代码:就达到了撤销上一次的commit 然后把文件全部commit ;使用git log 并不会有那次commit的注释信息
删除:
- git rm test.txt :把暂存区中的test.txt删除(要先把工作区中的这个文件删除,否侧会报错)
- git rm -f test.txt 会把暂存区和工作区的test.txt删掉(要先把test.txt add 到暂存区)
- git rm –cached test.txt 把暂存区的test.txt删掉,不会吧工作区的test.txt删掉
恢复:
指定文件:比如一不小心在工作区把一个文件给误删了,这时候git log 后找到commit 的id 然后 git checkout e154cb8c45eb drag.js
git reset –hard e154cb8c45eb 恢复版本,不管有多少文件,可以去过去也可以去未来(未来至回退之后的未来)
git reset –hard HEAD^ 回到上一个版本
git reset –hard HEAD~2 回退两个版本(跳过两个,回退到第三个)
git reflog:把历史版本全都打印出来
git remote 查看远程仓库的名字
git remote -v 查看名字所对应的远程仓库的地址
git push origin master (origin是远程仓库的名字 master是分支名)
解决冲突:
git fetch 拉取远端仓库代码但不进行合并,需要手动合并(在工作区内并不会直接合并还是原来的代码,可以先查看区别后再合并)
- 查看区别 git diff master origin/master
- 合并: git merge origin/master,合并会把两个都合并,让我们自己选择(多余的删除)
git pull 拉取远端仓库代码直接合并
开源项目协作(没权限):
- fork:相当于一个镜像放在自己的仓库,克隆在本地,修改代码,(也可以在github上直接修改)发布到自己的仓库,
然后pull request ,写一些留言,对方会看到,对方可以选择 合并
分支:
git branch 查看分支
git branch new1 创建new1的新分支
git checkout new1 切换到new1的分支
git checkout -b new2 创建new2分支并且切换到new2分支上
(先切换到master分支上), git merge new1 将new1与master合并
git branch –merged :可以知道当前分支下有被合并的分支 ,比如master分支下合并了new1
git branch –no-merged 当前分支下没有被合并的分支
git branch -d new1
- new1和branch合并后,把new1删除,只能删掉被合并的分支,比如new2没有和master合并就不能删除new2
git branch -D new2 强制把没有合并的分支删掉
有冲突的合并(两个分支不同)
- 在master上git merge new1 会让你自己选择留下哪个然后 git commit -a -m “…..”
git push origin new1 把new1分支提交到远端仓库上
git tag 查看标签
git tag v1.0 v1.0版
之后:git push origin v1.0 (这里v1.0不是分支)git reset HEAD~ 撤销回上一次提交的,和之前在暂存区里提交前一样的状态