Git总结
in 默认分类 with 0 comment

Git总结

in 默认分类 with 0 comment

Git

Git 是由 Linus (linux之父)用两周时间使用 C 语言开发的分布式版本控制系统

分布式Vs集中式

Git是分布式版本控制系统,SVN,CVS等是集中式版本控制系统,Linus 是相当反对集中式版本控制系统的,所以他自己开发了一套分布式的版本控制系统

集中式

集中式就是用一个中央服务器来存储代码的版本,所有人需要进行修改时就要先从服务器上获取然后再提交到服务器上,这样每次使用的话就需要联网才能使用,而且不安全。

分布式

分布式的优点:

安装Git

Git 现在已经可以支持大多数的主流操作系统,WindowslinuxMacOs 但是按照方式各有不同

Linux

// 第一步,检查是否已经安装git

$ git

// 第二步,安装git的命令

sudo apt-get install git

MacOs

mac上安装Git可以通过homebrew ,当然这需要先安装homebrew http://brew.sh

brew install git

通过xcode也可以安装git

windows

windows上可以直接下载安装软件安装

版本管理

创建版本库

当我们开始一个项目时,都是先创建一个文件夹,如果我们需要将这个项目通过git 来管理的话,我们可以在这个目录下进行git 的初始化,就能将这个目录变成git的版本库

// 运行这个命令就可以将这个目录变成git可以管理的仓库
git init

创建成功之后会生成一个隐藏文件.git 这个文件是git用来跟踪管理版本库的,没事不要轻易的更改否则很容易出现问题

添加修改

当我们对某个文件进行了修改或者是向目录中添加了文件,我们都需要使用git add 命令来告诉Git我们进行了修改或者是添加了文件

git add 可以跟具体的文件名也可以使用. 来代表所有的修改

git add .        // 常用,会将所有的改动都告诉git

提交到本地仓库

完成上一步操作之后我们都要将我们的本次修改提交到本地仓库中进行保存,依次来进行版本控制

git commit -m "加上本次修改的信息"

查看仓库的状态

一般情况下我们需要查看仓库中是否有文件修改,或者是是否有文件需要被提交,这时我们可以通过 git status 来查看

git status

查看具体修改的内容

有时候我们忘了上一次进行了那些修改我们可以通过git diff来查看仓库中某文件的上一次修改的具体内容

git diff <file>

版本回退

版本回退是一个非常重要的功能,当我们现在的版本出现问题的时候我们可以很快方便的回到以前的版本继续工作,不至于造成很严重的后果

查看历史记录

通过查看历史记录我们可以了解我们到底有多少个版本和做了那些修改

git log

如果嫌git log 输出的信息实在是太多的话,可以加上参数--pretty=oneline

git log --pretty=oneline

这样版本的一些信息变成版本号,这个版本号是由16进制表示的很大的数字,这个版本号也可以帮助我们进行版本的回退

回退

Githead 表示当前版本,也就是最新的提交,而上一个版本也就是上一次提交用head^ 表示,上上次用head^^表示,如果太多的话可以用head~100来进行表示前第一百次的版本,回退的命令是git reset

git reset --hard HEAD^  // 回到上一个版本

注意:当你回到旧的版本的时候那么在他之前的新版本是看不到的,这和时间是一样的当你回到2019年你是不知道2020年的事情的,但是我们可以通过版本号来指定回到那个版本,这样你不仅可以回退也可以回到最新的版本

git reset --hard 1094a // 版本号可以不写全,但是最好是前5为以上

如果你的窗口关闭了找不到版本id的时候

git提供了一个命令可以查看你的每一次命令详情

git reflog

工作区和暂存区

工作区就是我们电脑上的目录,暂存区则是提供的,理解工作区和暂存区可以很好的理解git的工作流程

当我们 add 的时候git 会将文件从工作区和保存到暂存区stage 然后在我们commit 的时候git才会把这些修改提交到我们的分支上(默认只有一个主分支,我们可以开辟多个分支)

所以我们对文件进行修改之后需要提交到分支上时都需要先进行add操作将其保存到暂存区,这样才能commit

一个例子:当你第一次修改完进行add了,然后你有第二次进行了修改,此时你进行了commit,那么分支上只会保存你第一次修改的内容。因为你的第二次修改没有add即没有保存到暂存区,而commit只会从暂存区提交内容,所以在第二次修改完commit之前再次进行add,就能解决问题

撤销修改

第一个命令可以帮我们撤销掉工作区中的修改,分为两种情况

  1. 一种是文件自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;(从版本库恢复)
  2. 一种是文件已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。(从暂存区恢复)

总之,就是让这个文件回到最近一次git commitgit add时的状态。

git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令

第二个命令可以帮我们撤销暂存区的修改,将暂存区的修改退到工作区

git reset HEAD <file>

如果工作区也不想要本次修改则执行第一条命令

删除文件

当我们在工作区删掉某个文件,而我们的版本库中却并没有删除,这样会导致不一致,我们可以通过git rm 来删除版本库中的文件

git rm <file>
// 删除之后还是需要提交一下
git commit -m ""

当然如果你是误删了某个文件,我们还可以通过git checkout -- file来进行恢复

远程仓库

远程仓库像是github 等,这将帮我们更好的管理我们的代码

添加关联

当你本地有一个 git 的仓库你需要将这个仓库推送到远程仓库上的时候只需要将本地和远程进行关联就行了

git remote add origin git@github.com:用户名/仓库名.git

添加关联之后,可以将本地仓库推送到远程

git push -u origin master     // 第一次提交

git pull

在开发中我们一般是先pull一下远程的代码,即将远程仓库的代码拉取到本地,以达到将本次的代码和远程的代码进行同步的目的,因为在公司中不是一个人在进行开发

git pull

克隆

当然如果你的远程有一个仓库,你想把它弄到本地来,只需要进行使用git的克隆命令就行了

git clone 远程地址

分支管理

分支的理解可以理解为一个副本,如果某个项目的主分支是一个稳定版,我们不能直接在master分支上直接进行修改,那么我们可以创建多个分支,然后在分支上进行开发没有问题之后再合并到主分支上

创建分支

git branch 分支名称

查看分支

git branch

切换分支

git checkout 分支名称
或者
git switch 分支名称

合并分支

git merge 分支名称    // 一般在主分支执行此命令

删除分支

git branch -d 分支名称
Responses