创建版本库
1、kdir learngit
创建learngit目录
2、cd learngit
进入文件夹里
3、 pwd
查看目录路径
4、git init
初始化仓库
5、git add re.txt
在learngit目录下创建文本,提交它。
6、git commit —m“”
提交到本地仓库,引号写提交的具体内容
7、git status
掌握工作区的状态。
8、git diff
工作区状态被改变,用这查看修改内容。
<b>小结:</b>
初始化一个Git仓库,使用git init
。添加文件到Git仓库,分两步:
使用命令git add<files>
,注意,可反复多次使用,添加多个文件。
使用命令git commit -m<message>
,完成。
版本回退
1、git log
命令显示从最近到最远的提交日志。
2、git log --pretty=oneline
简化日志信息。
3、git reset--hard HEAD^
回退到上一个版本。HEAD^^
回退到上上个版本。HEAD~100
回退到往上100版本。
4、git reflog
用来记录你的每一次命令。
<b>小结:</b>
HEAD指向的版本就是当前版本,因此,Git允许我们在各个版本之间穿梭。使用命令git reset--hard commitId
。
穿梭前,用git log
查看提交历史,以便回退到哪个版本。
要重返未来,用git reflog
查看命令历史,以便确定要回到未来哪个版本。
撤销修改
1、git checkout --files
。当工作区修改还没有添加到暂存区时,撤销修改。
2、git reset HEAD files
。当添加到暂存区时,返回当1,在使用git checkout files
就可以回退。
3、当提交后,使用git reflog
,git reset hard commitId
版本回退,前天没提交到远程版本库。
删除文件
1、rm file
用于删除工作区的文件,如果删除之前,文件已经提交,则可以git checkout --file
从从版本库里替代工作区的找回。
2、从版本库中删除文件git rm file
,提交git commit -m””
。
添加远程仓库
1、git remote add origin ssh
地址关联远程库。
2、git push -u origin master
第一次推送master分支的所以内容。
3、git push origin master
此后修改就可以这样这个推送。
4、好处:
本地工作完全不考虑远程库的存在,没联网也可以正常工作。SVN则必须联网。
远程库克隆
git clone ssh
地址从远程库克隆项目。
创建和合并分支
1、查看分支:git branch
2、创建dev分支:git branch dev
3、切换dev分支:git checkout dev
4、创建切换分支dev:git checkout —b dev
5、合并某分支到当前分支:git merge dev
6、删除dev分支:git branch—d dev
解决冲突
1、解决冲突修改我们希望的内容,再提交,用git log--graph
可以看到分支合并图。
2、git merge --no--ff-m “” dev
表示禁用fast
3、forward模式,在该模式下,删除分支后,会丢掉分支信息。
4、修复bug,工作一半,现在想进行bug修复,git stash
隐藏工作内容,修复完之后恢复有两种方法:
-
git stash apply
这种还需要git stash drop
来删除stash内容。 - 另外一种使用
git stash pop
直接恢复并删除stash内容。当手头工作还没有完成时,先把工作现场git stash
一下,然后去修复bug,修复好,再git stash pop
,回到工作现场。
5、开发一个新feature,最后新建一个分支。如果要丢弃一个没有被合并的分支,可以通过git branch -D name
强行删除。
操作远程仓库
1、查看远程库信息:git remote -v
2、本地新建分支不推送,别人就不可见
3、从本地推送,git push origin branchname
,如果失败,则git pull
抓取远程新提交。
4、在本地创建和远程分支对应的分支,git checkout -b branchname origin/branchname
,本地和远程最好一致。
5、建立本地和远程分支的关联:git branch --set-upstream -to branchname origin/branchname
。
6、从远程抓取分支,git pull
有冲突要解决冲突。
7、rebase
操作可以把本地末push的分叉提交历史整理成直线。
rebase
的目的是使我们在查看历史提交变化变得跟容易,因为分叉的提交需要三方对比。
创建标签
1、git tag name
创建标签,默认为HEAD
,也可以指定commitID
。
2、git tag -a tagname -m “”
指定标签信息
3、git tag
查看所有标签。
操作标签
1、git push origin tagname
推送一个本地标签。
2、git push origin--tags
推送全部未推送的本地标签。
3、git tag-d tagname
删除一个本地标签
4、git push origin:refs/tags/tagname
删除一个远程标签。