假设把 F:\Git\HIS 文件夹做为仓库,先cd 到HIS目录:git
cd F: #没有/ cd Git #若是有多级目录,使用反斜杠/,和Linux同样 git init #把当前目录初始化为仓库。当前目录下会生成一个隐藏的.git文件夹
也能够这样:sql
cd F:
git init Git #会在指定目录初始化为一个仓库,若是目录不存在,会自动建立
从远程仓把项目检出到Git目录下,再用git add把该项目置于Git管理下。数据库
若是是本地项目,把项目新建到Git目录下,或者剪切到Git目录下,再用git add置于Git管理下。windows
在仓库根目录下放项目文件(工做区域)。安全
仓库根目录下的.git文件夹中,index文件是暂存区域,其余文件组成版本库,HEAD文件指向当前版本。spa
好比新增了 db.sql、开发文档.docx 2个文件命令行
git add db.sql 开发文档.docx #添加到暂存区域,有多个时空格分开便可。路径相对于当前目录 git commit -m "补上了数据库文件、开发文档" #把暂存区域的内容都提交到版本库。每次提交都会产生一个新的版本。-m指定提交说明
git commit -am "说明" #添加、提交一步到位。a是add
git add resource #若是是文件夹,直接写文件夹名 git add resource/* #也能够这样 git add resource/*.xml #可使用通配符 git add . #.表示当前目录下的全部文件、文件夹 git add --all #也能够这样写
咱们对项目进行了修改,可能一部分修改已经添加到了暂存区域,另外一部分修改还未添加到暂存区域,code
怎么知道哪些修改被添加到了暂存区域,哪些修改没有被添加到暂存区域? xml
git status
标出的文件都是发生了变化的(进行了增删改),绿色的是已添加到暂存区域,红色的是未添加到暂存区域。blog
冒号前面是所作的修改,new file是新建的此文件,deleted是删除了文件,modified是修改了此文件的内容。
git diff #查看具体的修改内容。好比说你在文件中增删了哪些字符,会给你列出来。
好比已经把 readme.md 添加到了暂存区域,不想提交这个修改了:
git reset HEAD readme.md #把readme.md从暂存区域移除。若是HEAD后面未指定要移除的文件、文件夹,默认移除上一次add操做添加的。
若是已经添加到暂存区域,又修改了文件,不用先回退再add,直接add覆盖暂存区域中以前添加的。
每次git commit都会生成一个新的项目版本,也叫作一个快照,查看版本库中的全部版本:
git log #查看当前及以前的全部版本
这是一个版本的信息,commit后面是版本号,HEAD表示这个是最新的版本,maste表示这是主分支。
提交者的信息、提交日期,以及提交说明-m。
git log --pretty=oneline # --pretty=oneline 一个版本显示为一行,只有版本号、提交说明
git log --pretty=oneline --abbrev-commit # --abbrev-commit 版本号简写,简写的版本号和完整的效果彻底相同
git log --graph # --graph 查看分支合并图
git reflog #log只列出当前及以前的版本,若要列出所有的版本,使用reflog
git reset HEAD~ #回退到当前版本的上一个版本。HEAD指向当前版本。用~、^均可以,效果同样 git reset HEAD~3 #回退到当前版本的上3个版本,不指定数字时,默认为1
git reset 版本号 #回退到指定版本
#以上未指定回滚类型,默认为--mixed,将工做区的项目回滚到指定版本(这是3种参数都有的,后续再也不说明),并移除暂存区的内容(直接删除)
#--hard 将暂存区的内容回滚到工做区间,并删除暂存区的内容
#--soft 暂存区的内容保留,不移除(不回滚到工做区间)
#使用示例:
git reset --hard 版本号
#用法和--mixed的彻底相同
#以上回退均是版本回退,会回退全部修改过的文件、文件夹
#能够只回退指定的文件、文件夹,在末尾指定要回退的文件、文件夹便可,示例:
git reset HEAD~ readme.md #将readme.md回退到上一个版本
git checkout readme.md #将某些文件、文件夹回滚到上一个版本,暂存区保留(不回滚)
直接在windows的资源管理器中删除文件|文件夹,只是物理删除,版本库中关于该文件|文件夹的记录还在,能够回滚该文件|文件夹,删除了也能够恢复。
git rm 1.txt #删除文件 git rm -r resource #删除文件夹,-r表示递归
git上删除文件|文件夹,是物理删除+删除版本库中改文件|文件夹的相关信息,回滚版本时不会回滚该文件|文件夹。
git rm会自动把删除操做添加到暂存区,但须要本身提交。
有时候须要开发某一模块,能够以分支的形式开发,分支、主干同时进行开发,分支开发完成合并到主干上。
git branch 分支名 #建立一个新分支。项目默认是master 主干 git branch #查看全部的分支,master会用绿色标出,前面带一个*号 git checkout 分支名 #切换到某个分支 git checkout -b 分支名 #建立并切换到指定分支,一步到位
git merge 分支名 #把指定分支合并到当前分支中,会自动提交合并。默认使用Fast forward模式,一旦删除分支,会丢失分支信息,也就看不出来曾经作过合并
git merge --no-ff -m "合并说明" 分支名 #--no-ff即不使用ff(fast forward模式),无论分支有没有被删除,在历史版本中均可以查看到分支信息,这种用得多
git branch -d 分支名 #删除分支。若是分支还没有合并到主干上,会丢失分支信息,没法用-d删除。-d只能删除已合并到主干上的分支
git branch -D 分支名 #-D 强制删除。无论合没合并到主干上,均可以删掉
每次提交都会产生一个新的版本,Git使用一长串字符做为版本号来表示一个版本,其实也不算是版本号,只是commit id。
一串乱七八糟的字符很差阅读,在提交大的修改后,能够给本次提交的版本加一个标签。
git tag v1.1 #给当前版本(最新提交的版本)加tag,tag后面指定标签名
git tag -a v1.1 #能够直接指定标签名,也可使用-a来指定
git tag 标签名 commit_id #给指定的版本加tag
git tag #查看全部的tag,只列出tag
git log #git log系列命令也会列出tag,信息更加详细
git show 标签名 #查看某个标签对应版本的详细信息,包括提交者信息、提交时间、具体修改信息等
git tag -d 标签名 #删除指定的标签名。只删除标签。
#标签名默认只存储在本地版本库中,删除是默认也只删除本地版本库中的。若是要在远程仓库中操做标签,还须要一些操做。
git push origin 标签名 #推送指定的标签到远程仓库。orgin是远程仓库的别名
git push origin --tags #推送本地版本库中全部的标签到远程仓库
git push orgin :refs/tags/标签名 #删除本地版本库的标签后,再执行此句代码推送到远程仓库(同步到远程仓库)
安装Git时勾选了Unix命令风格,Linux是类Uninx系统,在Git命令行可使用Linux命令,好比pwd显示当前目录。