0


使用Git进行版本控制

对代码、文件进行版本控制是协同工作中的一大重点,目前主要有两种版本控制方法,一种是集中式控制,另一种是分布式控制。

  • 集中式控制。在中央服务器中存放着文件,对文件进行修改时,需要从中央服务器中下载最新的文件,修改后再提交到中央服务器中。优点是简单直接,无所大量空间进行存储;缺点是当中央服务器中出现网络问题时,所有客户端都无法进行访问,工作停止!
  • 分布式控制。每个用户的都存放着所有的文件,修改后需要在所有用户之间进行同步。优点是可以随时随地进行本地的工作;缺点是多个用户同时对文件进行修改时,同步文件信息较为麻烦(需要一个类“中央服务器”作为各个用户之间同步的中介)。Git就是一种非常优秀的分布式版本控制器。

目录

Git安装

Linux Ubuntu中可以使用命令行直接进行安装:

sudo apt install git-all

安装后可以查看版本信息:

git --verision

Git初始化配置

配置用户名和邮箱:

git config --global user.name Wade
git config --global user.email [email protected]

在这里插入图片描述
保存用户名和密码:

git config --global crendential.helper store

查看配置信息:

git config --global --list

Git创建仓库

在这里插入图片描述
Git有两种工作模式:

  • 本地仓库。用户将仓库建立在本地目录中,使用Git进行管理
  • 远程仓库。仓库建立在远程的服务器中,比较出名的为GitHub、Gitee等。

本地仓库

  1. 在本地合适的空目录下创建一个文件夹:mkdir ~/git/myGitLearning
  2. 在这个目录下创建仓库:cd ~/git/myGitLearning/git init可以将当前文件夹作为Git仓库;或使用git init <name>在当前目录下另新建一个文件夹作为Git仓库在这里插入图片描述
  3. 查看当前目录下的文件:ls -a -l在这里插入图片描述 .git目录存放了Git仓库的所有数据,删除.git目录即删除该Git仓库在这里插入图片描述

远程仓库

git clone xxx

,xxx为远程仓库的地址

Git工作区域和文件状态

工作区域

工作区域分为三个模块:工作区、暂存区以及本地仓库

  • 工作区是我们实际操作的文件目录
  • 暂存区用于临时存放即将提交的修改内容
  • 本地仓库即为git init创建的仓库,是Git存储代码和版本信息的主要位置在这里插入图片描述

文件状态

  • 未跟踪:我们新创建还没有被Git管理起来的文件
  • 未修改:已经被Git管理起来,但是文件内容没有改变的文件
  • 已修改:已经修改但是还没有添加到暂存区的文件

空文件夹不会被纳入到版本库中

在这里插入图片描述

Git添加和提交文件

git status

查看仓库状态
在这里插入图片描述
创建文件后,仓库的状态发生变化
在这里插入图片描述

git add

添加到暂存区,

git ls-files

查看暂存区中文件
在这里插入图片描述

git commit

提交暂存区文件到仓库中,会打开COMMIT_EDITMSG添加备注信息

git commit -m [message]

[message] 可以是一些备注信息。

git commit [file1] [file2] ... -m [message]

提交暂存区的指定文件到仓库区
在这里插入图片描述

git log

查看提交记录,可以使用

--oneline

来显示简洁的提交信息
在这里插入图片描述

回退版本

git reset

用于撤销文件的更新

  • git reset --soft,表示回退到某一个版本,并且保存工作区和暂存区的所有修改内容
  • git reset --hard,表示回退到某一个版本,并且丢弃工作区和暂存区的所有修改内容
  • git reset --mixed,表示回退到某一个版本,并且保存工作区,丢弃暂存区的所有修改内容;为默认参数在这里插入图片描述 使用hard参数需要谨慎,误删之后可以通过下列方式回退:
  1. git reflog,查看操作的历史记录
  2. 找到误删之前的版本号,再使用git reset回退到这个指定的版本

查看文件差异

在这里插入图片描述

  • 默认参数查看工作区、暂存区之间的差异在这里插入图片描述 第一行表示存在差异的文件;第二行是Git将文件内容生成的40位的哈希值,并且只显示前七位,100644是指文件权限;再往下就是修改的内容,红色是删除的内容,绿色是添加的内容
  • git diff HEAD,版本之间的差异,HEAD指向提交的最新版本节点,HEAD~x表示HEAD之前的x个版本
  • git diff --cached,暂存区和版本之间的差异
  • git diff xxx yyy,比较两个特定版本xxx和yyy之间的差异
  • git diff xxx yyy filex,比较两个特定版本xxx和yyy之间文件filex的差异内容

在这里插入图片描述

Git删除文件

  • rm 在工作区删除文件后,git add 更新暂存区
  • git rm 可以直接删除工作区和暂存区同时删除
  • git rm --cached <file>可以只删除版本库中的文件
  • 删除后需要提交到版本库中更新

忽略文件

.gitignore

可以忽略一些不必要的文件,让我们的版本库更小

  • 系统自动生成的文件,比如一些工具或者软件产生的临时文件
  • 编译生成的中间文件,可执行文件等等。例如C语言生成.o文件
  • 运行时生成的日志文件、缓存文件、临时文件
  • 带有敏感信息的文件在这里插入图片描述

在这里插入图片描述

.gitignore

使用前提是该文件不能是已经被添加到版本库中的文件
在这里插入图片描述
在这里插入图片描述

远程仓库GitHub

在这里插入图片描述

创建仓库后进行SSH密钥配置
在Ubuntu中

cd #回到用户根目录下
cd .ssh #进入.ssh文件夹
ssh-keygen -t rsa -b 4096 # -t指定为RSA协议,-b指定生成密钥大小为4096

生成密钥后得到两个文件xxx 和 xxx.pub
打开xxx.pub公钥文件,复制内容添加到到GitHub中SSH key中即可。
非第一次创建SSH密钥还需创建并添加下列五行内容到config文件中,意思是在访问Github时指定使用test这个密钥
在这里插入图片描述
最后

git clone [email protected]:xxw016/hello_world.git

得到远程仓库
在这里插入图片描述

本地仓库和远程仓库关联

在这里插入图片描述
这里使用

git pull

会直接合并远程仓库和本地仓库的分支内容,如果两个仓库的内容存在差异则合并失败;可以使用

git fetch

命令来只获得远程仓库的修改而不进行合并

Git 分支

在这里插入图片描述

  • git branch 查看当前分支
  • git branch xx 创建新的分支xx
  • git checkout xx 切换到分支xx,这个命令默认为切换分支;但是也可以用来恢复某个被意外修改的文件。因此Git官方提供了新的命令git switch
  • git merge <branch2> 目前所在分支为branch1,并将分支branch2的内容合并到branch1中
  • 使用git log --graph --oneline --decorate --all来图形化显示合并过程
  • 合并后可以用git branch -d branch2来删除分支,如果未合并则可以用-D来强行删除

解决合并冲突

当两个分支对同一个文件进行修改时,合并会出现冲突

  • git merge --abort中断这次合并
  • git diffgit status 查看冲突差异信息,并手动进入目标文件修改合并的信息

rebase

在这里插入图片描述


图片内容参考:B站Up主GeeKHour

标签: git

本文转载自: https://blog.csdn.net/weixin_44601183/article/details/143060568
版权归原作者 xWade_ 所有, 如有侵权,请联系我们删除。

“使用Git进行版本控制”的评论:

还没有评论