Git本地版本管理(Windows)

敲代码过程涉及很多变动,使用原始的文件夹复制备份啥的进行版本管理比较落后,且不利于管理和扩展(比如想搞成多人协作啥的),所以需要一个版本管理工具,这里学习下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之类,其他可以选择默认设置。一路安装完毕即可。

Git编辑器选择

3、简单配置

打开刚安装的Git bash,进行简单配置。

a、配置个人的用户名称和电子邮件地址:

git config --global user.name "liudichen"
git config --global user.email liudichen@foxmail.com

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>
--------------------------------

除非注明,否则均为清风揽月阁原创文章,转载应以链接形式标明本文链接

本文链接:https://www.iimm.ink/261.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

回到顶部