Git使用介绍 + 常用操作命令

Git 介绍:

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

优点

  1. 适合分布式开发,强调个体;
  2. 公共服务器压力和数据量都不会太大;
  3. 速度快、灵活;
  4. 离线工作;

缺点

  1. 代码保密性查,一单开发者克隆整个库就可以完全公开所有代码和版本信息;
  2. 权限控制不友好;

Git和SVN的区别

SVN是集中式版本控制系统,而Git是分布式版本控制系统,Git与SVN的区别可参考Git与SVN的区别Git和SVN的区别

Git工作流程

  1. 从远程仓库中克隆 Git 资源作为本地仓库;
  2. 从本地仓库中checkout代码然后进行代码修改;
  3. 在提交本地仓库前先将代码提交到暂存区;
  4. 提交修改,提交到本地仓库; 本地仓库中保存修改的各个历史版本;
  5. 在需要和团队成员共享代码时,可以将修改代码push到远程仓库。

Git工作流程图

在这里插入图片描述

Git的几个核心概念

工作区、暂存区、版本库、远程仓库

git和其他版本控制系统如svn的一个不同之处就是有暂存区的概念。
在这里插入图片描述
Workspace: 工作区,就是你平时存放项目代码的地方

Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息

Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本

Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

分支

每次的提交Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里这个分支叫主分支,即master分支。HEAD指针严格来说不是指向提交,而是指向master,master才是指向提交的。
一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:
在这里插入图片描述
每次提交,master分支都会向前移动一步,这样随着不断提交,master分支的线也越来越长。

当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:
在这里插入图片描述
Git创建一个分支很快,因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化!

不过切换到了dev分,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变:
在这里插入图片描述假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并:
在这里插入图片描述
所以Git合并分支也很快!就改改指针,工作区内容也不变!

合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后就剩下了一条master分支:
在这里插入图片描述

本地项目git初始化并提交远程库

1、先在远程仓库(如github)创建项目,避免错误,不要初始化README,license,gitignore文件。

2、打开Terminal终端

3、切换到你的本地项目目录

4、初始化本地仓库

$ git init 

5、添加文件到本地仓库

$ git add . 

6、提交文件

$ git commit -m "First commit"

7、添加远程仓库地址到本地仓库

$ git remote add origin {
    
    远程仓库地址}

8、push到远程仓库

$ git push -u origin master

clone操作命令

1、配置本地仓库的账号和邮箱

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

2、为了避免每次远程访问需要输密码,将使用ssh登陆。ssh应该与本机信息绑定。查看自己电脑 C:\Users\Administrator 目录下是否有 .ssh 文件夹。如果没有就需要生成。

$ ssh-keygen -t rsa -C "[email protected]"

3、clone命令

$ git clone git@github.com:michaelliao/gitskills.git

4、拉取指定分支上的代码

git clone -b dev http://xxx.git

Enter 键一直到结束。

分支操作命令

1、查看本地分支

git branch

2、新建分支

git checkout -b new-branch  //创建并切换到分支feature-branch并切换新分支

3、查看远程分支

git branch -a //列出所有分支名称

4、推送本地分支到远程分支

git push origin my-branch:new-branch //推送本地的my-branch(冒号钱面的)分支到远程origin的new-branch(冒号后面的)分支(没有会自动创建)

5、当我们git push new-branch的时候出现错误,提示无法关联远程仓库,此时执行一下命令

git push origin HEAD:new-branch //关联远程仓库

6、删除远程分支

git push origin :xn  //将一个空分支推送到远程即为删除
git push origin --delete cn //功能同上

重点:流程操作命令介绍

git checkout -b dev origin/dev  //作用是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支
git checkout -b release origin/release  //checkout远程的release分支,在本地起名为release分支,并切换到本地的release分支
git checkout dev  //切换回dev分支,并开始开发
git init //初始化当前目录为git仓库,该目录下会生成.git文件,一般情况不修改这个文件
git remote add origin git@xxx //连接github
git fetch //fetch 后可看见远程相关分支信息
//(此时,git branch  看不到任何本地分支信息,本地master分支虽然默认分支,但需第一次commit后才会真正存在)
//在当前目录下随便建一个文件 test.txt
git add test.txt //add 文件到暂存区
git commit -m"first commit for init"   //提交到本地版本库
git branch -a //此时,可以看见本地和远程所有的分支信息
git branch  dev //本地建立一个分支
git branch --set-upstream-to=origin/dev dev //将远程分支dev和本地分支dev关联
git pull //可拉取远程分支dev上的代码到本地并由本地分支dev管理 ;若远程和本地分支没有做关联,pull需要指定远程和本地分支信息
git  rm  test.txt //删除本地版本库中的test.txt文件,工作区的文件可手动删除

猜你喜欢

转载自blog.csdn.net/qq_42697806/article/details/119567667