敲代码过程涉及很多变动,使用原始的文件夹复制备份啥的进行版本管理比较落后,且不利于管理和扩展(比如想搞成多人协作啥的),所以需要一个版本管理工具,这里学习下git进行本地管理(由于是新手学习,不会涉及远程提交内容,github都基本没用过哈)
一、Git安装
1、下载
在https://git-scm.com/或https://gitforwindows.org/中下载Windows安装包,一般下载Windows64位安装包,写文章时最新的版本是2.30.0,以上两个源地址下载比较慢,我存了一份到百度网盘,加入利用闲置带宽加速下载速度的计划的话下载速度还可以,起码比上面两个快一些(当然上面其实也可以使用IDM等下载会快很多),链接:https://pan.baidu.com/s/1vFpvvbLqhti0y2WCQe4ZpQ 提取码:9ygv。另外还有个淘宝国内镜像地址可以下载:https://npm.taobao.org/mirrors/git-for-windows/
2、安装
下载后直接双击运行进行安装,一般默认设置就行了,其中编辑器可以选择自己想用的,比如VS Code之类,其他可以选择默认设置。一路安装完毕即可。
3、简单配置
打开刚安装的Git bash,进行简单配置。
a、配置个人的用户名称和电子邮件地址:
git config --global user.name "liudichen" git config --global user.email [email protected]
b、查看全部配置:
git config --list
c、查看指定配置:
git config user.name
二、使用
1、初始化仓库
进入要版本管理的项目根目录,使用如下命令初始化仓库(可以使用CMD输入,如果安装时使用了默认设置,否则可能只能用Git bash输入,如果用Git bash的话,只需要在目录空白处右键,在弹出菜单选择Git bash Here,然后再输入即可),该命令会在根目录生成一个.git文件夹(注意:该文件夹默认具有隐藏属性,默认是看不到的,要查看隐藏文件才能看到)。
git init
2、设置忽略文件
项目中有一些文件是不要进行版本管理的(比如nodejs项目的依赖包文件夹),需要在管理时忽略掉,因此需要在项目根目录新建一个.gitignore文件(注意Windows直接创建文件修改文件名会因无文件名只有扩展名无法保存,可以通过在VS Code打开项目文件夹,在VS Code建立,某些脚手架工具会自动创建此文件,比如create-react-app)。在.gitignore中列出的文件或文件夹都不会进行版本管理,可以使用通配符。
3、添加文件/文件到缓存区
使用git status查看当前项目状态,会发现都是红的,没有加入缓存区,也没有提交记录。
使用如下命令(注意末尾是有个.)将除了.gitignore文件中排除的文件和目录全部加入缓存区,待提交。
git add .
此时再使用git status命令则可以看到变绿了(如果选了VS Code ,VS Code中也会变绿),不过还是没有提交。
3、提交
使用如下命令提交修改(将缓存区添加到本地库里),[file]之后(含)都是可选参数,[file]可以指定提交的文件(无此选项的话即提交所有文件、目录),-m [message]可以添加提交时的注释
git commit [file1] [file2] ... -m [message]
4、简化提交流程
以上方法必须先使用git add命令添加文件至缓存区,然后再使用git commit命令提交到本地库,如果想省略git add命令,则可以直接使用git commit命令,然后使用 -参数,即可省略git add步骤。当然如果还需要添加提交注释,可以使用-am。
git commit -a
git commit -am [message]
提交后再使用git status命令可以看到缓存区已经没内容(说明提交后没有修改过),此时VS Code中所有文件名的颜色又变回了之前默认颜色,不再是绿色。
三、其他命令(本地)
1、git status
git status 命令用于查看在你上次提交之后是否有对文件进行再次修改,使用 -s 参数来获得简短的输出结果。
2、git diff
git diff 命令显示已写入暂存区和已经被修改但尚未写入暂存区文件对区别。
- 尚未缓存的改动:git diff
- 查看已缓存的改动: git diff --cached
- 查看已缓存的与未缓存的所有改动:git diff HEAD
- 显示摘要而非整个 diff:git diff --stat
显示暂存区和工作区的差异:
$ git diff [file]
显示暂存区和上一次提交(commit)的差异:
$ git diff --cached [file] 或 $ git diff --staged [file]
显示两次提交之间的差异:
$ git diff [first-branch]...[second-branch]
3、git resest
git reset 命令用于回退版本,可以指定退回某一次提交的版本。
git reset [--soft | --mixed | --hard] [HEAD]
--mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
git reset [HEAD]
$ git reset HEAD^ # 回退所有内容到上一个版本 $ git reset HEAD^ hello.php # 回退 hello.php 文件的版本到上一个版本 $ git reset 052e # 回退到指定版本
--soft 参数用于回退到某个版本:
git reset --soft HEAD
实例:$ git reset --soft HEAD~3 # 回退上上上一个版本
--hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交:
git reset --hard HEAD
实例:
$ git reset –hard HEAD~3 # 回退上上上一个版本 $ git reset –hard bae128 # 回退到某个版本回退点之前的所有信息。 $ git reset --hard origin/master # 将本地的状态回退到和远程的一样
注意:谨慎使用 –hard 参数,它会删除回退点之前的所有信息。
HEAD 说明:
- HEAD 表示当前版本
- HEAD^ 上一个版本
- HEAD^^ 上上一个版本
- HEAD^^^ 上上上一个版本
- 以此类推...
可以使用 ~数字表示
- HEAD~0 表示当前版本
- HEAD~1 上一个版本
- HEAD~2 上上一个版本
- HEAD~3 上上上一个版本
- 以此类推...
git reset HEAD
git reset HEAD 命令用于取消已缓存的内容。
4、git rm
git rm 命令用于删除文件。(谨慎使用)
如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 Changes not staged for commit 的提示。
将文件从暂存区和工作区中删除:
git rm <file>
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f。
如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可:
git rm --cached <file>
可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件:
git rm –r *
进入某个目录中,执行上述语句,会删除该目录下的所有文件和子目录。
5、git mv
git mv 命令用于移动或重命名一个文件、目录或软连接。
git mv [file] [newfile]
如果新文件名已经存在,但还是要重命名它,可以使用 -f 参数:
git mv -f [file] [newfile]
6、git log及git blame
a.在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 git log 命令查看。
- 可以用 --oneline 选项来查看历史记录的简要版本。
- 可以用 --graph 选项,查看历史中什么时候出现了分支、合并。
- 可以用 --reverse 参数来逆向显示日志。
- 查找指定用户的提交日志可以使用命令:git log --author=liudichen。
- 可以用 -数字 参数来指定显示的日志条数。
- 要指定日期,可以执行几个选项:--since 和 --before,也可以用 --until 和 --after。
- 可以使用 --no-merges 选项以隐藏合并提交。
b.可以使用 git blame 命令查看指定文件的修改记录:
git blame <file>--------------------------------
除非注明,否则均为清风揽月阁原创文章,转载应以链接形式标明本文链接