克隆项目:
git clone github.com/shoukailian…
设置
如果你不设置可能还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~ 撤销回上一次提交的,和之前在暂存区里提交前一样的状态