git版本控制

什么是版本控制系统

如果你用Microsoft Word写过长篇大论,那你一定有这样的经历:

想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件“另存为……”一个新 的Word文件,再接着改,改到一定程度,再“另存为……”一个新文件,这样一直改下去,最后你的Word文档变成了这样:
git版本控制_第1张图片
过了一周,你想找回被删除的文字,想保留最新的一个,然后把其他的删掉,又怕哪天会用上,还不敢删
如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便?

这个软件用起来就应该像这个样子,能记录每次文件的改动:

版本 文件名 用户 说明 日期
1 service.doc 张三 删除了软件服务条款5 7/12 10:38
2 service.doc 张三 增加了License人数限制 7/12 18:09
3 service.doc 李四 财务部门调整了合同金额 7/13 9:51
4 service.doc 张三 延长了免费升级周期 7/14 15:17

这样,你就结束了手动管理多个“版本”的史前时代,进入到版本控制的20世纪

Git是什么?

是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git安装配置

在Windows上使用Git,可以从Git官网直接下载安装程序,(网速慢的同学请移步国内镜像),然后按默认选项安装即可。

安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
安装完成后,还需要最后一步设置,在命令行输入:

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

使用

  1. 初始化本地库
    git init // 进入工作区目录,创建本地库
  2. 添加内容到暂存区
    git add 文件名 // 文件件换成" ." 表示添加当前工作区所有内容到暂存区
  3. 提交内容到本地库
    git commit -m “注释”
  4. 查看工作区状态信息
    git stauts
$ git status
On branch master
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

        modified:   helloworld.js

5.查看更改变化

$ git diff helloworld.js
diff --git a/helloworld.js b/helloworld.js
index b906f66..e5abf89 100644
--- a/helloworld.js
+++ b/helloworld.js
@@ -1,4 +1,4 @@
-var age = 22;
-if(age == 22){
-       console.log("age == 22");
+var num = 22;
+if(num == 22){
+       console.log("num == 22");
}
\ No newline at end of file
  1. 查看本地库操作日志
$ git log
commit eb91b68040c6a7b6e347fd4c9ca839238c7307f0 (HEAD -> master)
Author: zhousir <2919150@qq.com>
Date:   Fri Feb 15 09:39:48 2019 +0800

   增加if判断语句

commit 46635c71ebfe7315b105cd46ef020529c01528ff
Author: zhousir <2919150@qq.com>
Date:   Fri Feb 15 09:33:45 2019 +0800

   初始变量age

$ git log –pretty=oneline  //只显示版本号和提交注释
  1. 回退到上一个版本
$ git reset --hard HEAD^   //HEAD最新版本,后面跟上"^"表示最新版本的上一个版本,“^^”表示上上一个版本;  
HEAD is now at eb91b68 增加if判断语句

$ git reset --hard 46635c71ebfe7315b105cd46ef020529c01528ff //回退到指定版本号
HEAD is now at 46635c7 初始变量age
  1. 恢复工作区删除内容
$ git checkout -- helloworld.js  //helloworld.js 需要恢复的文件; 如果不知道恢复文件名,可通过 git status 查看
  1. 删除本地库内容
删除工作区文件
提交删除修改操作  git add .   git commit -m "删除文件"

如何添加远程库?

现在的情景是:我们已经在本地创建了一个Git仓库后,又想在github创建一个Git仓库,并且希望这两个仓库进行远程同步,这样github的仓库可以作为备份,又可以其他人通过该仓库来协作。

  • 首先,登录github上,然后在右上角找到“create a new repo”创建一个新的仓库。

  • 接着 要据GitHub的提示,在本地的testgit仓库下运行命令:

    $ git remote add origin https://github.com/tugenhua0707/testgit.git //你的github仓库地址

    $ git push -u origin master
    把本地库的内容推送到远程,使用 git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。推送成功后,可以立刻在github页面中看到远程库的内容已经和本地一模一样了

  • 克隆远程库内容到本地
    $ git clone https://github.com/yihu0817/webapp.git

  • 推送本地库修改内容到远程库
    $ git push origin master

  • 拉取远程库内容到本地

$ git pull
Updating 6269da3..c80261a
Fast-forward
 bin/www | 1 +
 1 file changed, 1 insertion(+)

git pull和git fetch的区别

  1. git pull = git fetch + git merge

git pull会将本地库更新至远程库的最新状态 由于本地库进行了更新,HEAD也会相应的指向最新的commit id

  1. git fetch的时候只是将remote的origin进行update 但是并没有在local的branch进行merge

分支管理

1、创建与合并分支

在 版本回填退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。
总结创建与合并分支命令如下:

查看分支:git branch

创建分支:git branch name

切换分支:git checkout name

创建+切换分支:git checkout –b name

合并某分支到当前分支:git merge name

删除分支:git branch –d name

vscode集成git

第一步,下载git安装包,配置环境变量

安装完git后配置环境变量 “D:\git\Git\cmd”,win+R打开cmd输入命令git验证是否安装成功,在任意路径下能进入git,说明环境变量设置生效。

第二步,打开vscode, 文件->首选项->设置 打开用户设置,配置git路径,如下所示

git版本控制_第2张图片

git版本控制_第3张图片

第三步基本操作

git版本控制_第4张图片

问题

  1. Git for Windows 终端字体警告

Warning: Your console font probably doesn’t support Unicode. If you experience strange characters in the output, consider switching to a TrueType font such as Lucida Console!

将 CMD 的默认字体换位宋体即可
git版本控制_第5张图片

你可能感兴趣的:(git)