Git使用教程和GIT命令详细版

Git教程和GIT命令详细版

为什么要编写这个教程?因为我在学习Git的过程中,买过书,也在网上Google了一堆Git相关的文章和教程,但令人失望的是,这些教程不是难得令人发指,就是简单得一笔带过,或者,只支离破碎地介绍Git的某几个命令,还有直接从Git手册粘贴帮助文档的,总之,初学者很难找到一个由浅入深,学完后能立刻上手的Git教程。

Git使用教程和GIT命令详细版_第1张图片

GIT教程文档当时学习时我参考的廖雪峰的GIt教程

详细教程可点击右侧链接☞廖雪峰链接

什么是Git

Git简单来说就是代码版本控制系统,通过他可以进行多人开发同一个项目然后讲每个人的代码块合并完成一个大项目,还能控制代码版本记录等。

Git 核心概念

Git 最核心的一个概念就是工作流。

  • 工作区(Workspace)是电脑中实际的目录。
  • 暂存区(Index)类似于缓存区域,临时保存你的改动。
  • 仓库区(Repository),分为本地仓库和远程仓库。

通常提交代码分为几步

1. git add      从工作区提交到暂存区
2. git commit . 从暂存区提交到本地仓库
3. git push或git svn dcommit从本地仓库提交到远程仓库

Git使用教程和GIT命令详细版_第2张图片

版本管理工具的两大功能

1.版本管理
2.多人协作

俩大类版本管理工具

1.集中式版本管理工具–svn
2.分布式版本管理工具–git

安装完成后,还需要最后一步设置

  1. 配置信息
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

Git使用教程和GIT命令详细版_第3张图片

  1. 通过git init命令把这个目录变成Git可以管理的仓库
$git init
Initialized empty Git repository in D:/Mi/ceshi/.git/

把文件添加到版本库

  1. 用命令git add告诉Git,把文件添加到仓库:
$ git add stc.md

2.用命令git commit -m "提交说明"告诉Git,把文件提交到仓库:

 $git commit -m "stc.md"

3.为什么Git添加文件需要add,commit一共两步呢?
因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

$git add stc.md 1.md
$git commit -m "add 1.md gen_gai stc.md"

小结

1.初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:
1.使用命令git add ,注意,可反复多2.次使用,添加多gi;
使用命令git commit -m ,完成。

工作区和暂存区

1.用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
2.用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支
3.用git status查看一下状态

$git status

版本回退

1.版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用git log命令查看
2.要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

$git log
$git reflog

2.把当前版本回退到上一个版本,就可以使用
git reset – hard HEAD^命令:

git reset --hard HEAD^

3.回退版本 git reset --hard commitID(版本号)

git reset --hard commitID(例如:849042746)

4.^代表回退前面一个版本 ^^回退前俩个版本
5.版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。

小结

1.HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。

2.穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

3.要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本

管理修改

1.撤销工作区的修改 git restore 文件名

 git restore  1.md

2.撤销暂存区的修改 git restore --staged 文件名

git restore --staged 1.md

3.删除文件工作区的文件 rm 文件名 删除版本库文件 git rm 文件名

$ rm 1.md
$ git rm 1.md

4.克隆一个本地库,如果有多个人协作开发,那么每个人各自从远程克隆一份就可以了。

$ git clone [email protected]:Tianci_sun/gitskills.git

5.克隆完进入gitskills目录看看

$ cd gitskills
$ ls
README.md

远程仓库

上传至云端服务器

  • 用gitee做示例,相同的服务器还有github等等(稍微有点卡)
    基于Git 的代码托管和研发协作平台
    gitee官方网址
    gitup官方网址

一、GitHub

第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

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

你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。

如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:

然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
Git使用教程和GIT命令详细版_第4张图片
第三步:点“Add Key”,你就应该看到已经添加的Key:
Git使用教程和GIT命令详细版_第5张图片

1.现在,我们根据GitHub的提示,在本地的learngit仓库下运行命令:

$git remote add origin [email protected]:Tianci_sun/sun_tianci.git

2.删除远程库

$git remote rm origin(库名)

3.把本地库的所有内容推送到远程库上

$ git push -u origin master

4.从现在起,只要本地作了提交,也就是推,就可以通过命令:

$ git push origin master

一、gitee

  1. 先注册一个服务器账号点击新建仓库,创建一个新的云端仓库(远程仓库)
    Git使用教程和GIT命令详细版_第6张图片Git使用教程和GIT命令详细版_第7张图片Git使用教程和GIT命令详细版_第8张图片
  2. 连接远程仓库(建立远程链接)
    根据上方已有仓库(远程仓库),然后在及本地找到文件夹创建我们要提交托管的代码或者文件,详情在下图Git使用教程和GIT命令详细版_第9张图片
    一定要将文件保存至本地仓库,不然传不上远程服务器

从远程仓库拉取项目(云端)

Git使用教程和GIT命令详细版_第10张图片
拉取远程仓库的是需在文件内有.git文件即Git本地仓库

$git pull 连接后可以直接拉取
$git pull origin dev 拉取dev分支的文件
$git pull命令从远程拉取(远程最新代码),git clone也能从远程克隆下来 
$git pull [email protected]:Tianci_sun/yq-text.git 远程仓库的SSH

创建与合并分支

  1. 创建分支,然后切换分支,git checkout命令加上-b参数表示创建并切换,拿dev举例子

Git使用教程和GIT命令详细版_第11张图片

$ git checkout -b dev(创建分支)
$ git branch dev(查看分支)
$ git checkout dev(切换分支)
  1. 查看当前分支
git branch
  1. 合并分支
$ git merge dev(分支名)
  1. 删除分支
$ git branch -d dev
  1. 创建并切换到新的分支
$ git switch -c dev

6.切换到已有的master分支

$ git switch master

多人协作

  1. 查看远程库信息用 git remote
$ git remote origin
$ git remote -v(详细信息)
  1. 推送分支
$ git push origin master(主分支)

如果要推送其他分支,比如dev,就改成:

$ git push origin dev(分支名)
  1. 抓取分支,多人协作时,大家都会往master和dev分支上推送各自的修改。可以克隆
$ git clone [email protected]:Tianci_sun/learngit.git
Cloning into 'learngit'...
  1. git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送
git pull

分支小结 分支名

  1. 查看分支:git branch

  2. 创建分支:git branch

  3. 切换分支:git checkout 或者git switch

  4. 创建+切换分支:git checkout -b 或者git switch -c

  5. 合并某分支到当前分支:git merge

  6. 删除分支:git branch -d

常用命令:

git branch:查看分支
git branch 分支名称:创建分支,只创建不使用
git checkout 分支名称:切换分支
git checkout -b分支名称:创建并切换分支
git merge 分支名称:合并某分支到当前分支
git branch -d 分支名称:删除分支
git branch -D 分支名称:强制删除,不管你保没保存,没提示的删除(慎用)

远程库小结

  1. 关联一个远程库,使用命令
  2. SSH----$git remote add origin [email protected]:Tianci_sun/sun_tianci.git
  3. HTTPS:git remote add origin https://gitee.com/Tianci_sun/sun_tianci.git
  4. 关联一个远程库时必须给远程库指定一个名字,origin是默认习惯命名;
  5. 关联后,使用命令git push -u origin master第一次推送master分支的所有内容,此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改
  6. 要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

多人协作小结–推送

  1. 看远程库信息,使用git remote -v;
  2. 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交
  3. 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
  4. 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
  5. 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

Git与SVN的主要区别

Git是分布式的,SVN是集中式的
Git和SVN都是版本管理系统,但是他们命令区别后面会简单进行一个对比,我们先从原理的角度分析

  • 分布式
    Git使用教程和GIT命令详细版_第12张图片

分布式的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们在自己本地也会创建一个库,用于保存自己的修改与提交,之后再将自己库提交至服务器库进行更新

  • 集中式
    Git使用教程和GIT命令详细版_第13张图片
    集中式的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
    1. 好处:每个人都可以一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限。
    2. 缺点:中央服务器的单点故障。

Git虽然极其强大,命令繁多,但常用的就那么十来个,掌握好这十几个常用命令,你已经可以得心应手地使用Git了。

你可能感兴趣的:(GIT,git,github,svn)