在Windows安装Git,可以从官网上直接下载程序,然后按默认选项安装即可
安装完成后,可以在开始菜单找到 “Git” -> “Git Bash”,弹出类似命令行窗口的东西,说明安装成功
然后在命令行输入以下命令,完成设置
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。
注意 git config 命令的 --global 参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
创建版本库(又名仓库),英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
1、在合适的位置,创建一个空目录
$ mkdir 目录名 --创建空目录
$ cd 目录名 --跳转该目录下
$ pwd --显示当前目录的路径
2、通过 git init 命令把这个目录变成Git可以管理的仓库(所有 git 命令必须先跳转到对应的Git仓库下输入才有意义(git init 除外))
3、把文件添加到版本库
使用Windows的要特别注意:
千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等。建议你下载Visual Studio Code代替记事本,不但功能强大,而且免费!
(1)在Git仓库(上一步创建的空目录)中编写一个文件(例如 test.txt )-- 因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。
(2)用 git add 命令告诉 Git,把文件提交到仓库(工作区 -> 暂存区)
(3)用 git commit 命令将 test.txt 提交到版本库(暂存区-> 当前分支master),-m 后面输入的是本次提交的说明,可以是任意内容,方便以后在临时记录里查找
$ git commit -m "add test.txt"
[master 609f21d] add test.txt
1 file changed, 1 insertion(+)
create mode 100644 WorkPro/test.txt
版本回退
文件修改后,经 git add 和 git commit -m "xxx"提交到版本库(工作区-> 暂存区-> 当前分支)
用git log / git reflog 查看提交的历史记录,然后用 git reset --hard HEAD^ 回退到上一个版本(上次提交的修改),HEAD代表当前版本,加上两个^代表上上个版本,如果要回退到几次前的版本,HEAD 处最好写成版本号的前几位
工作区和暂存区
工作区:在电脑中的可以看到的目录,例如上面举例的 test.txt 所在的文件夹就是一个版本库
版本库:工作区有一个隐藏目录 .git ,这个不算工作区。而是Git 的版本库
版本库中最重要的就是暂存区(stage / index),还有Git 自动为我们创建的第一个分支master ,以及指向master的一个指针 HEAD
工作区 --git add --> 暂存区 --git commit --> 当前分支
提交修改:文件做出修改,经git add和git commit 提交到当前分支,git commit 只会提交已经git add 到暂存区的修改,例如 第一次修改 -- git add --> 第二次修改 -- git commit --> 当前分支,此时只有第一次修改被提交到暂存区,使用只有第一次修改被提交
撤销修改: git checkout -- <file> / git restore <file> -- 本质都是撤销工作区的修改
修改都需要 git add 添加到暂存区,第一次修改 add 到暂存区,然后第二次修改,若没有add,则第二次修改仍在工作区,只有第一次修改保存到暂存区,上述两条命令都是针对工作区
第一种情况:修改未添加到暂存区,撤销的就是在工作区的修改;
第二种情况:文件提交已经到暂存区,在做出修改,撤销修改就回到了刚添加到暂存区时的状态,
第三种情况:文件做了第一次修改,提交到了暂存区,文件做第二次修改,此时撤销只能回到刚到暂存区时的状态,要想撤销第一次修改,应该用 git restore -- staged <file> 退出暂存区才能撤销第一改修改; 或者用 git reset HEAD <file> 将暂存区的文件返回工作区,用 git checkout -- <file> 或者 git restore <file> 一次将两次修改都撤销掉
如果要撤销以及提交到分支的修改,若没有推送到远程,可以用 git reset --hard HEAD^ 回退到上一个版本,或者根据 commit id 回退到某一个版本
删除文件:
在工作区删除:在Git库所对应的文件夹下手动删除文件 或者在Git Bash 用 rm <file> 命令删除
在版本库删除:在工作区删除文件以后,Git知道你删除了文件,此时版本库和工作区就不一致了,此时,用 git status 查询此时的有哪些文件被删除了。此时用 git rm <file> 然后 git commit 在版本库将对应文件删除
文件恢复:如果在工作区误删了文件,用 git checkout -- <file> 将版本库的版本替换工作区的版本,即还原; 如果在版本库也已删除,就只能用版本回退的命令,用 git reset --hard HEAD^ 回退到上一个版本,如果期间还有别的commit ,就先用 git log 查之前的版本号,根据版本号回退 git reset --hard commit id 。
注意!!!回退到之前的版本,两个版本间的所有commit 的修改都将被删除!!慎用!!!对应 commit 操作的版本号只能用 git reflog 查看,git log 查看包括回退版本和当前版本之间的版本号,
Git常见命令
文件修改(包括删除,删除的 rm <file> 然后 git rem <file> 相当于 git add )后,经 git add 和 git commit -m "xxx"提交到版本库(工作区-> 暂存区-> 当前分支)
git add <file> --将文件(包括新的和修改后的)从工作区存到暂存区
git commit -m "xxx" --将暂存区的所有文件提交到当前分支,-m 后面的是此时提交的注释
git status -- 可以随时理解仓库的状态,例如 --文件是否有被修改,但未提交
cat test.txt -- 查看test.txt的内容
git diff test.txt --查看具体做了那些修改
git checkout -- <file> 或者 git restore <file> --撤销工作区的修改
git restore --staged <file> --将暂存区的文件放回工作区
rm <file> --在工作区删除文件
git rm <file> --将工作区的删除状态更新到暂存区
git log -- 查看提交的历史记录,如果进行版本回退,那么只能查到包括回退到的版本及之前的版本,全部的commit 操作的版本号用 git refolg 查询
git log --pretty=oneline --只看提交记录的版本号
git reset --hard HEAD^ --回退到上一个版本(上次提交的修改),HEAD代表当前版本,加上两个^代表上上个版本,所以HEAD 处最好写成版本号的前几位
git reflog --用来记录每一次命令,当用 git reset --hard HEAD^ 回退到上一个版本时,又想回到原来最新的版本,就可以用 get reflog 查到相应的 commit id ,然后用版本回退命令实现版本切换