window安装git,
下载图形安装包,一路下一步
下载地址: git-for-windows.github.io
windows版git集成了一个bash,在这个shell中使用git命令
linux安装就更简单了
git简单使用
1 新建一个目录,进入到目录中
git init 创建一个git仓库,成为git可以管理的仓库
2 将文件放到新建的目录中,子目录中也可以
git add test.txt 将文件添加到仓库中
注意: windows下不要用notepad创建一个txt文件,他会在文件头添加0xefbbbf字符,
用notepad++ 代替记事本,保存为utf-8 without BOM
3 将文件提交到仓库中
git commit -m "any description"
4 查看仓库当前的状态
git status
5 查看提交版本历史记录
git log
40个字节的十六进制数是commit id (也就是版本号),每提交一个新版本,实际上Git就会把它们自动串成一条时间线。
6 回退版本
git reset
git必须知道当前版本是哪本版本,用HEAD表示当前版本,HEAD^表示上一个版本,
HEAD^^表示上上个版本,往上多少个版本就写多少个^,或者HEAD~#,#表示多少个版本
git reset --hard HEAD^ (--hard参数)
git log 参看现在版本库,发现上面一个版本库没有了,那又要回到上一个版本可以吗?
git reset --hard 哈希值的前几位
命令窗口没有关掉可以顺着往上找,记得每次提交产生的哈希值吗,这个命令使得git会根据前几位去找版本号,可能会找到多个版本号,就无法确认了,那就多再多写几位。
在版本之间穿梭,只需要commit id就可以。当回退到以前的版本,关闭了git bash时,git log会找不到最新版本的commit id。git 提供了一个命令git reflog记录了每一次
的命令,就能找到每一次操作的版本号。
git reflog
小结:
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
git原理
1 工作区
在电脑上的方文件的目录,我新建一个test目录用git init初始化未仓库,这个目录就是工作区
2 版本库
工作区中有一个隐藏的目录 .git , 是git的版本库
版本库中有一个称为stage的暂存区,还有git自动创建的第一个分支master,一个指向master的HEAD指针
把文件添加到版本库中,是分了两步:
git add 把修改后的文件添加到暂存区中
git commit 把暂存区中所有内容添加到仓库中的当前分支中
文件的三种状态:
1) 已修改,在工作区中对文件做了改动,但没有git add到暂存区中 git status 显示为红色的"modified"
2) 已暂存,将已修改的文件放到暂存区,这个时候文件处于已暂存,git status 显示绿色的‘modified‘
3) 已提交,所有文件git commit后,文件提交到版本库中,处于已提交状态,git status 显示nothing to commit, work tree clean
3 撤销修改
git checkout -- test.txt 将test.txt文件在工作区的修改全部撤销,有两种情况
1) test.txt 修改后没有放到暂存区,那就和上一次放到版本库中是一模一样的
2) test.txt 修改后放到了暂存区后,又修改了,现在撤销就回到放入暂存区状态
总结: 撤销总是回到上一次放到暂存区或版本库
1 如果修改了工作区文件,想放弃工作区修改,用git checkout -- test.txt
2 如果修改了还提交道版本库中,怎么办? 版本回退
3 如果已经放到到暂存区,想放弃修改,怎么办? 两步 (重点)
1) git reset HEAD test.txt
2) 按照1来做
4 删除文件
在目录中直接删除文件,工作目录中和版本库中不一样,git会知道删除了文件,git status告诉删了那些文件
1) 确实要删掉版本呢库中文件 git rm,然后 git commit
2) 如果删错了,把删掉的文件找回来, git checkout -- test.txt
git checkout 这个命令看撤销命令,实际上是替换,将暂存区或版本库中状态替换到当前工作区
5 添加远程仓库
github.com是对远程git仓库进行托管的网站,首先注册个账号,在github创建仓库,然后关联到本地仓库,每次将本地仓库的修改推送到github仓库中
1) 创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,没有那就手动创建
ssh-keygen -t rsa -C [email protected] 然后一路回车,在主目录下有.ssh目录,里面有
id_rsa是私钥,id_ras_pub是公钥
2) 将公钥添加到github中的SSHKey中,这个公钥是用来区分电脑的,github仓库可以关联
多台电脑,将每个电脑的SSHKey添加进去就可以想远程推送了
3) 将本地库关联远程库
git remote add origin [email protected]:uolo/test.git
origin是默认远程库的名字
4) 把本地代码推送到远程
git push -u origin master
加上了-u参数,git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
第一次使用git push或者git clone连接github时,会得到一个警告,ssh验证github
的key的指纹是否来自github服务器,输入yes再回车就可以
6 从远程仓库中克隆
git clone [email protected]:uolo/test.git 从远程test中库可容到本地
注意 github支持的协议有多种,克隆的地址有多种,比如 https://github.com/uolo/test.git 也可以,github支持https协议,这种地址更加好记
分支管理
...
版本回退
...
安全隐患