目录
0x00 git原理
Git是Linus 2005年用C写的一个代码管理系统,不同于SVN(集中式,必须有一个中央的SVN服务器,协同工作的每个人需要将自己的代码提交到SVN服务器上,只有中央服务器上的代码是完整的,每一个人手里只有一部分代码。),Git是分布式的,即协同工作的每个人手里都有一份完整的代码,并且没有中央服务器,直接可以本地提交。
0x01 git安装
Mac下:git官网下载即可,然后在命令行输入git。
安装完成后,就是开始登录git了。
1、设置你的名字: git config --global user.name "name"
2、设置你的邮箱:git config --global user.email "[email protected]"
注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
0x02 git的使用
首先cd到你的项目目录,
1.git init 创建git仓库(仓库名为master 即主分支branch)
可能我们会发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
2.添加文件到暂存区
添加全部文件: git add .
或者 添加指定文件: git add "test.rtf"
注:(git add .) add后面带一个空格再加点
3.将暂存区的东西提交到本地仓库
git commit -m "xxx"
注:xxx一定要写,不能为空字符。(-m后面一般输入的是本次提交的说明)
4.查看状态。(可以查看到哪个文件自上次提交后的修改情况)
git status
5.当版本有更新后
(如果你不记得版本是否修改了,git status可以确认版本是否有更新,如果有更新,可以通过git diff 文件名 来查看具体的更新)
将新版本add commit一遍
git add . 可以将所有修改的文件,自动添加到暂存区
例如:
1、先添加:$ git add "test.rtf"
2、在提交:$ git commit -m "新增天气文字"
6.查看提交记录。
git log
如果你想一行显示:git log --pretty=oneline
7.版本回退。如果我们在使用过程中,想退到之前的某一版本。
回退到上一个版本:$ git reset --hard HEAD^
--hard表示强制回退
回退到上两个版本 git reset --hard HEAD^^
如果回退多了怎么办呢?这就需要知道之前版本的版本号了。
git reflog 可以查看之前版本的版本号。
然后
回退到某一版本:$ git reset --hard bf4dc99
输入版本号的前7位
8.git 设置别名:
git config --global alias.xx commit
给commit 一个别名xx
如果文件还没有add,想要撤销修改的话:
9.git checkout 文件名
如果文件已经add,但是没有commit,想要撤销修改的话:
首先,将文件从暂存区拉回来:git reset HEAD 文件名
然后,git checkout 文件名 撤销修改
10.如果误删了某文件,如何恢复呢?
git checkout -- 文件名
11.删除文件
首先,删除文件
然后,git rm 文件名
然后,git commit -m ' xxxxx'
12.如何提交到远程仓库GitHub?
首先,登录github账号,然后,New repository建一个新的仓库。
然后点Settings
将公钥复制到网页key的位置,点添加即可。
然后cd到公开目录下,执行git clone 从github上创建的仓库复制的ssh key
将github上初始化好的license readme下载到自动创建的一个文件中,
然后cd到这个文件夹,开始写你的项目代码,代码写好后,先add,commit,
然后直接git push就可以将写好的代码上传到github。
另外一个人需要用git下载github上的代码的话,需要他在电脑上先生成ssh公钥,然后在我的账户上将他生成的公钥添加上去。然后他在他的电脑上,执行git clone xxxx,将github的下载到一个文件夹中。
然后config好他的名字和邮箱
然后将在他修改好的代码git push到github
然后我就可以通过git pull 来从github获取最新的代码。
0x03 码云
码云的使用方法几乎和github相同
0x04 git分支
首先在github上创建一个分支叫dev
git pull从github上获取最新的代码(必须先pull)
然后从远程将origin下dev的内容获取下来,在本地创建一个分支dev:
git checkout -b dev origin/dev
然后git branch就可以查看所有的分支和当前在哪个分支上了
现在分支已经切换到dev上了
如果想切换到master,可以:git checkout master
如果要删除dev分支:git branch -d dev
在dev分支下,我们可以创建一个文件testbranch.php来测试
然后,add+commit该文件。然后,可以看到当前目录下已经生成了该文件
但是,如果git checkout master切换到master分支下的话,再ls则没有该文件。
切回到dev分支
然后:git push origin dev 将dev分支上的代码push到github上
其他要修改github上dev分支的代码的话,首先需要先本地创建dev分支,然后切换到dev分支上,然后再
git pull origin dev 从github 的dev分支上将代码pull到本地dev分支。然后修改自己本地的dev分支上的代码,修改好后
push到github上的dev分支
然后,项目的领导将dev上的代码pull到自己本地,审查完之后,将github上dev分支和master分支合并
首先切换到master
然后git merge dev 本地两个分支就合并成功了
然后git push origin master 将github上两个分支合并
如果该dev不再用了,可以删除本地dev:git branch -d dev
然后删除github上的dev
0x0A 加标签
给当前版本加个标签:git tag 标签 例如:git tag v1.0
显示标签对应的版本:git show 标签
给特定的版本加标签:git tag 标签 版本号前7位
0x0B 敏感信息屏蔽
在.git 下同目录下创建一个.gitignore文件,然后在里面写:
/config/
*.doc
*.txt
表示config文件夹不推送,doc文件不推送,txt文件不推送到github