编程的蜗牛

颓废,始于首次的懒惰与原谅。

导航

Git-Git基础

  一、版本控制

  1. 集中式版本控制与分布式版本控制。

  SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。

  Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。协同的方法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

  2.Git工作流程

  

Workspace: 工作区,就是你平时存放项目代码可以看到的目录。

Index / Stage: 暂存区,英文叫 stage 或 index。用于临时存放你的改动,事实上它只是一个文件,一般存放在 .git 目录下的 index 文件(.git/index)中,保存即将提交到文件列表信息。

Repository: 工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本。

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

  1. clone(克隆): 从远程仓库中克隆代码到本地仓库。
  2. checkout (检出):从本地仓库中检出一个仓库分支然后进行修订。
  3. add(添加): 在提交前先将代码提交到暂存区。
  4. commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本。
  5. fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
  6. pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于fetch + merge。
  7. push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库 。

   二、Git安装与常用命令

  下载地址: https://git-scm.com/download

  1. 当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息。

  设置用户信息:

git config --global user.name “xxx”
git config --global user.email “hello@xxx.cn” 

  查看用户信息:

git config --global user.name
git config --global user.email

  2.乱码问题解决

  打开GitBash执行下面代码:

git config --global core.quotepath false

  ${git_home}/etc/bash.bashrc 文件最后加入下面两行代码

export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"

  3.常用命令

   1、新建代码库

# 在当前目录新建一个Git代码库
 git init
# 新建一个目录,将其初始化为Git代码库
git init [project-name]
# 下载一个项目和它的整个代码历史
git clone [url]

     2、查看文件状态

#查看指定文件状态
git status [filename]
#查看所有文件状态
git status

     3、工作区<-->暂存区

# 添加指定文件到暂存区
git add [file1] [file2] ...
# 添加指定目录到暂存区,包括子目录
git add [dir]
# 添加当前目录的所有文件到暂存区
git add .
#当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用(⚠️)
git rm file_path
#当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 这个时候直接push那边这个文件就没有,如果push之前重新add那么还是会有。
git rm --cached file_path
#直接加文件名   从暂存区将文件恢复到工作区,如果工作区已经有该文件,则会选择覆盖
#加了【分支名】 +文件名  则表示从分支名为所写的分支名中拉取文件 并覆盖工作区里的文件
git checkout

      4、工作区<-->资源库(版本库)

#将暂存区-->资源库(版本库)
git commit -m '该次提交说明'
#如果出现:将不必要的文件commit 或者 上次提交觉得是错的  或者 不想改变暂存区内容,只是想调整提交的信息
#移除不必要的添加到暂存区的文件
git reset HEAD 文件名
#去掉上一次的提交(会直接变成add之前状态)   
git reset HEAD^ 
#去掉上一次的提交(变成add之后,commit之前状态) 
git reset --soft  HEAD^ 

      5、远程操作

# 取回远程仓库的变化,并与本地分支合并
git pull
# 上传本地指定分支到远程仓库
git push

     6、其它常用命令

# 显示当前的Git配置
git config --list
# 编辑Git配置文件
git config -e [--global]
#初次commit之前,需要配置用户邮箱及用户名,使用以下命令:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
#调出Git的帮助文档
git --help
#查看某个具体命令的帮助文档
git +命令 --help
#查看git的版本
git --version

  三、分支

  分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

  现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

查看当前分支:git branch
创建新分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>

  解决冲突:

  当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解
  决冲突,解决冲突步骤如下:
  1. 处理文件中冲突的地方。
  2. 将解决完冲突的文件加入暂存区(add)。
  3. 提交到仓库(commit)。
  冲突部分的内容处理如下所示:

   四、远程仓库

#添加远程仓库 命令: git remote add <远端名称> <仓库路径>
git remote add origin git@gitee.com/**/**.git
#查看远程仓库 命令:git remote
#推送到远程仓库 命令:git push [-f] [--set-upstream] [远端名称 [本地分支名][:远端分支名] ] #如果远程分支名和本地分支名称相同,则可以只写本地分支 git push origin master #-f 表示强制覆盖 #--set-upstream 推送到远端的同时并且建立起和远端分支的关联关系。 #如果当前分支已经和远端分支关联,则可以省略分支名和远端名。 # 将master分支推送到远程仓库,并与远程仓库的master分支绑定关联关系 git push --set-upstream origin master
#将远程仓库克隆到本地 #将远程仓库克隆到本地git_test02目录下 git clone git@gitee.com/*
*/**.git git_test #将本地修改推送到远程仓库 #将修改加入暂存区并提交到仓库,提交记录内容为:add file git add . git commit -m 'add file' # 将master分支的修改推送到远程仓库 git push origin master #将远程仓库的修改更新到本地 # 将远程仓库修改再拉取到本地 git pull # 以精简的方式显示提交记录 git -log

 

 

 

 

posted on 2022-03-06 16:52  粼溪  阅读(24)  评论(0编辑  收藏  举报