文章目录
Git 基本指令的使用
git init
//初始化一个git仓库,在当前目录下生成.git文件夹,并且会默认生成一个master分支。
git clone <url> [directory]
//url为git仓库地址,directory为本地目录
git clone git://github.com/schacon/grit.git
//执行完成之后会在当前目录下生成仓库,如果要指定目录下生成,则可以在后面加一个具体的位置路径
git config --global user.name '你的用户名'
git config --global user.email '你的邮箱'
//通过git config来配置用户名和邮箱地址,便于我们将代码提交到远程仓库
git status
//查看相关文件的状态
暂存文件的命令:git add <文件名>
放弃未暂存文件的修改命令:git checkout – <文件名>
将被修改的文件暂存并提交的命令:git commit -a
git diff
尚未缓存的改动:git diff
查看已缓存的改动: git diff --cached
查看已缓存的与未缓存的所有改动:git diff HEAD
显示摘要而非整个 diff:git diff --stat
git add
//命令可将文件添加到缓存
git commit -m "第一次版本提交"
//git commit 将缓存区内容添加到仓库中,可以在后面加-m选项,以在命令行中提供提交注释
git commit -am "第一次版本提交"
//跳过add这一步,可以直接使用 -a选项
git checkout
//当修改文件后,还没有add提交到暂存区,也没有commit时放弃修改
git checkout 11.txt #放弃11.txt文件的修改
git checkout . # 放弃所有文件的修改
git reset HEAD
//取消已缓存的内容
git reset HEAD a.php #只撤消a.php
git reset HEAD * #撤消所有
git reset HEAD^
//当文件add提交到暂存区,也commit了,撤回文件
git reset HEAD^ # 撤消上一次的commit 不带参数默认是--mixed 例:git reset --mixed HEAD^ 也可以写成git reset HEAD~1
git reset HEAD~2 如果你进行了2次commit,想都撤回,可以使用HEAD~2
git reset fdaeaf208f0e142ceba5766d17786d60fcebc1dd #撤消指定的commitId
git reset --hard fdaeaf208f0e1 # 回退到指定版本 放弃工作区的所有修改,还原到指定版本的代码
--soft:不删除工作空间改动代码,撤销commit,不撤销git add .操作,重置位置的同时,保留working Tree工作目录和index暂存区的内容,只让repository中的内容和 reset 目标节点保持一致,因此原节点和reset节点之间的【差异变更集】会放入index暂存区中(Staged files)。所以效果看起来就是工作目录的内容不变,暂存区原有的内容也不变,只是原节点和Reset节点之间的所有差异都会放到暂存区中。
--mixed(默认):不删除工作空间改动代码,撤销commit,并且撤销git add . 操作,重置位置的同时,只保留Working Tree工作目录的內容,但会将 Index暂存区 和 Repository 中的內容更改和reset目标节点一致,因此原节点和Reset节点之间的【差异变更集】会放入Working Tree工作目录中。所以效果看起来就是原节点和Reset节点之间的所有差异都会放到工作目录中。
--hard:删除工作空间改动代码,撤销commit,撤销git add . 操作,重置位置的同时,直接将 working Tree工作目录、 index 暂存区及 repository 都重置成目标Reset节点的內容,所以效果看起来等同于清空暂存区和工作区。
注意完成这个操作后,就恢复到了指定版本的commit状态。
Git 远程仓库
git remote
//查看当前有哪些远程仓库
git remote add [alias] [url]
//添加一个远程仓库,参数[alias]为别名, [url]为远程仓库的地址
git fetch、git pull
//暂时还未深入理解
git push [alias] [branch]
git push origin master
//将本地仓库master分支推送到远程origin分支
//有时候需要用到-f强推
git reset --soft HEAD~1
//撤销本地的提交,--soft 选项会保留工作目录和暂存区的更改,仅撤销提交,HEAD~1 表示撤销最近的一次提交
git reset --hard HEAD~1
//完全丢弃这些更改,可以使用 --hard 选项
git push --force-with-lease
//更改完之后强制推送,-with-lease它会检查远程分支的当前状态是否与你上次拉取时一致,没有被其他人修改时它才会执行强制推送。
git remote rm [别名]
//删除远程仓库
Git的分支管理
git branch
//查看分支/创建分支,如果没有参数,git branch会列出你在本地的分支;如果有参数,git branch就会创建以参数命名的分支。
git branch -d (分支名)
//删除分支
git checkout (分支名)
//可以切换分支
git checkout -b (分支名)
//创建分支并切换到该分支
git merge (分支名)
//可以将分支名对应的分支合并到到当前分支中去
合并的时候,最大的难点就是冲突了,合并并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改,如果我们在两个分支中同时修改了同一个文件,这时再合并,就可能会产生冲突.
关于git指令还有很多内容,这里只做了简要介绍,大家可以参考官网git-Reference,后面用到新的指令会继续补充,欢迎大家收藏和留言补充.