git 安装及使用

一、git 下载与安装-Windows

1. 下载地址

  https://git-scm.com/download 选择自己的系统进行安装。windows 系统会自动弹出下载框。
在这里插入图片描述

2. 安装教程

   为了方便,把安装流程整理成图片形式。在安装过程中,除了第3步选择安装位置需要用户根据需要修改外,其它保持默认即可。【不想了解每步干啥不需要看下面】

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

3. 验证

在这里插入图片描述

二、git 介绍

  git 是分布式版本控制的软件。对于git 版本控制,其实经历过四个阶段:

  1. 本地文件夹拷贝
  2. 本地版本控制
  3. 集中式版本控制
  4. 分布式版本控制

在这里插入图片描述

  git 安装在自己电脑上,只是在本地进行版本控制,也就是上图分布式版本控制 的ComputerA,而 ComputerB代指其它人电脑,Server Computer 指托管平台,常用 github(网站),gitlab(开源软件)。

  关于git ,官网上也有相关文档

三、git 本地使用

   为了方便理解,举例子说明git的常用知识点。

1. 生成版本

  1. 进入你要进行版本控制的文件夹目录,鼠标右键选择 Git Bash
  2. 执行初始化命令:git init(会生成==.git==文件夹)
  3. 查看管理的文件:git status,新增的文件和修改过的文件都是红色的
  4. 将需要进行版本控制的文件加入管理:git add [file | .]
  5. 若第一次使用,在生成版本之前应先进行个人信息配置(全局):
    git config --global user.email “you@example.com”
    git config --global user.name "Your Name"
  6. 生成版本:git commit -m '描述信息’

在这里插入图片描述

2. 版本更迭

  此时已生成一个版本。但为介绍后续版本操作,修改或新增文件,进行下面操作。

  1. 将修改的文件重新加入管理:git add .
  2. 生成第二个版本:git commit -m '描述信息’
  3. 查看版本信息:git log
  4. 回滚到第一个版本:git reset --hard 版本号 (版本号在git log中显示)
  5. 查看全部版本信息及版本变更记录:git reflog
  6. 从第一个版本回滚到第二个版本:git reset --hard 版本号 (版本号在git reflog中显示)

在这里插入图片描述
  当然还有其它命令可以让文件在工作区,缓存区,版本区之间相互转换,但最常用的还是上述介绍的命令。
在这里插入图片描述

2. 版本分支

  有时我们需要同时存在两个或更多版本。git 中默认分支master。

  1. 查看分支情况:git branch
  2. 在master上创建分支dev:git branch dev
  3. 切换到分支dev:git checkout dev,修改或新增文件,形成新版本。(此时dev和master版本不一样了)
  4. 切换到分支master,创建分支bug:git branch bug;修改或新增文件,形成新版本(此时master、dev、bug分支版本都不一样了)
  5. 切换到分支master,合并分支bug:git merge bug (此处可能会发生冲突)
  6. 删除分支bug:git branch -d bug (bug分支留着没什么用)
  7. 切换到分支dev,继续完成新功能开发工作,完成后生成版本
  8. 切换到主分支,合并dev分支:git merge bug (此处可能会发生冲突)

  冲突是指分支合并时,存在同一文件,同一行不一致的情况,git不知道要保留哪个,所以提示冲突。可以仅通过新增文件,形成新版本,那样不会发生冲突。当然,发生冲突也不可怕,将引起冲突的文件人力修改后,重新生成版本。

  上面操作的大致版本图如下:

在这里插入图片描述

在这里插入图片描述

四、git 分布式使用

1. GitHub 网站注册,创建仓库

  官网:https://github.com/ 注册流程这里不再赘述。
在这里插入图片描述
在这里插入图片描述

2. 本地git 与 GitHub 建立连接

  建立连接有两种方式:HTTPS 和 SSH。

  两者的区别:

  • SSH:默认22 端口;通过先在本地生成SSH密钥对,再把公钥上传到服务器;
  • HTTPS:默认443 端口;通过用户名/密码授权或者personal access token (个人访问令牌)建立连接

  HTTPS建立连接,此处不需要做什么。在使用拉取或上传命令时,会自动弹出对话框,让你输入个人访问令牌或者用户名/密码。

  • 个人访问令牌:官方推荐方式,也是首先会弹出的对话框,令牌输错,才会弹出用户名/密码 对话框。个人访问令牌获取:官网教程
  • 用户名/密码:git会将其保存在本地电脑凭据中。(控制面板–>用户账户–>管理Windows 凭据)

  SSH方式建立连接:官方文档,下图是我自己操作时的截图

在这里插入图片描述

3. 上传文件到GitHub

  这里需要说明的是git remote 命令 将连接方式定义在本地配置中。还有就是默认推荐使用的仓库远程名是origin。(当然可以自定义)

① 定义连接方式

# HTTPS 方式  gitFirstHTTPS:远程仓库名, 后面地址为远程 URL
git remote add gitFirstHTTPS https://github.com/USERNAME/REPOSITORY.git

# SSH 方式  USERNAME:账户名,REPOSITORY:仓库名(和网址对应)
git remote add gitFirstSSH git@github.com/USERNAME/REPOSITORY.git

② 推送分支到远程仓库

# 推送master分支
git push gitFirstHTTPS master
# 推送bug分支
git push gitFirstHTTPS bug

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

4. 从GitHub上克隆分支(首次)

  克隆分支操作仅在首次从github上拉取代码使用,后续应选择更新分支。
  操作:新建一个文件夹,初始化,git clone 命令。

git clone https://github.com/USERNAME/REPOSITORY.git

在这里插入图片描述

5. 从GitHub上更新分支

#  origin 远程仓库名
git pull origin dev;

# pull命令等价于,拉取+合并(不常用)
git fetch origin dev
git merge origin/dev

五、git-reabse命令

   rebase命令不常用,但必须知道。其主要功能是可以让提交记录更加简洁。

1. 应用场景一:合并版本

   无论是习惯(一天保存一个版本)还是真的有需求,在开发代码时会产生许多中间版本,但这些中间版本不需要保留。所以要进行合并,让版本记录更简洁一些。

  为了方便操作,新建一个项目,进行合并举例。(执行流程我弄成一个图了,原件删了,凑合看吧,核心命令就是下面两句)

# 合并版本方式一,版本号选择旧版本,表示最新版本(包括)到旧版本(包括)之间进行合并
git rebase -i 旧版本号

# 合并版本方式二,HEAD~3 表示最新的3个版本进行合并
git rebase -i HEAD~3

在这里插入图片描述
  说明:

  1. 合并记录时,
    squash:表示将当前版本与上一版本合并;
    pick:正常选中;
    reword:选中,并且修改提交信息;
    edit:选中,
    rebase时会暂停,允许你修改这个版本
  2. 合并的版本时最好不要将 已上传到github的版本 和 未上传到github的版本 合并,容易造成记录混乱。

2. 应用场景二:合并分支

   合并分支之前也讲过merge命令,两者区别如下图:(这里新命令:git log --graph)
在这里插入图片描述
  merge 操作:
在这里插入图片描述
  rebase 操作:

在这里插入图片描述

3. 应用场景三: 减少分叉

  情景举例:在公司写代码生成版本v1,但没有上传到github库,回到家写代码生成版本v2,上传到了github库。第二天,在公司pull代码时,合并会产生分叉。示例图如下:

在这里插入图片描述

#  之前也说过使用git pull 进行更新操作,该命令蕴含git fetch和git merge命令
git pull origin dev;

# 现在为了减少分支(就是形成一条线),使用以下命令
git fetch origin dev  # 从远程仓库拉取代码
git rebase origin/dev  # 使用rebase命令与当地版本进行合并

4. rebase冲突

  git rebase冲突后,(冲突实例在应用场景二中有体现)

  1. 打开文件,解决冲突
  2. git add 冲突文件
  3. git rebase --continue。

六、git 其他知识点

1. 标签

   前面见过使用git commit 生成版本的命令,但也可为版本增加标签

# 为最新提交版本增加标签,V1:标签名
git tag -a V1 -m '标签说明'

# 将标签上传到github
git push origin --tags

在这里插入图片描述

2. 配置文件

   git中有三种配置文件:local,global,system

 # 只对本项目生效(优先级最高),配置信息在:当前项目/.git/config
git config --local .. 
 # 全局配置(优先级次之),配置信息在:~/.gitconfig (~ 表示 home目录,即C:\Users\xxx)
git config --global ..
# 系统配置(优先级最后),配置信息在:/etc/.gitconfig ; 需要权限
git config --system ..

3. git 忽略文件

  在当前项目下创建【.gitignore】文件,在文件中写入文件全名或者与通配符搭配,能匹配上的文件都会被忽略。

#.gitignore
a.h  # 文件全名
*.h  # 通配符
!a.h  # 除a.h 以外
mulu/  # 忽略mulu下的所有文件及子目录 
*.py[c|a|d] #忽略以.py .c .a .d 结尾的文件

在这里插入图片描述

   github上有推荐的 .gitignore 文件范本,以搭配不同的程序语言,对系统或工具文件进行忽略。

4. 实践中应注意

  在实际操作中,第一次应切换到dev分支,master分支进行合并,来保证dev分支的最新和一致性。项目要上线,应切换到master分支,合并dev分支,再切换到dev分支,合并master分支 来保证两个分支的一致性,最后将分支上传,都保证为最新版本。

在这里插入图片描述

七、解决冲突软件

  1. 下载软件Beyond Compare 4
  2. 在git中配置
# --local:表示只对当前项目生效
# 指定合并工具名
git config --global merge.tool bc4
# 指定合并工具地址
git config --global mergetool.bc4.cmd "\"D:\\software\\Beyond Compare 4\\BComp.exe\" \"\$LOCAL\" \"\$REMOTE\" \"\$BASE\" \"\$MERGED\""   
git config --global mergetool.bc4.trustExitCode true
# 指定合并工具是否保留源文件
git config --global mergetool.keepBackup false 
  1. 当合并过程中出现冲突时(分支后有MERGING标记),启动合并工具
# 应用启动
git mergetool

  为了方便理解,查看下图实践:

在这里插入图片描述

八、github上的使用

1. git flow工作流

   一个标准的工作流:

  • 有master分支:负责上线版本;
  • bug分支负责修复bug;
  • dev分支:负责开发;
  • release分支:负责测试。
  • 其它功能分支:负责开发各个功能

   功能开发完毕,经过review,提交给dev分支,提交给测试,测试通过,最后提交给master。
在这里插入图片描述

2. 邀请成员

  一般在组织中创建仓库,然后邀请人员(同一组织的人员可访问该组织下所有仓库)。邀请信息会发送到对方邮箱。

在这里插入图片描述
  

3. 成员权限

  默认组织对成员的权限为只读。可以对组织权限进行修改,也可以对组织下的仓库进行权限修改,以及增加成员。都在对应的Settings下。

在这里插入图片描述

4. 代码review+pull request

   代码review其实是分支合并之前要提交给组长或领导进行检查,通过之后再合并。

   第一步是建立分支规则,github收费,就不演示了。
   第二步是建立pull请求,github上进行合并
   第三步本地pull,保证一致

在这里插入图片描述

5. 其他功能

  fork;给原作者提建议(Pull request)[这里不再画图,和上一小节流程一致];issues;wiki

在这里插入图片描述

附录:Git常用命令

git命令解释
git init初始化
git status查看当前目录下文件是否加入管理
工作区-新增或有变动(红色)
暂存区-加入管理(绿色)
工作区-已生成版本(working tree clean)
git add <file-name>指定文件加入管理。
git add <file> 或 git add .
git config --global修改全局配置。
git config --global user.email "you@example.com"
git config --global user.name “Your Name”
git commit生成版本。
git commit -m ‘描述信息’
git tag -a v1 -m ‘描述信息’为当前最新提交版本增加标签
git push origin --tags将标签上传到github库
git log查看当前及之前的版本信息
git log --graph以图形形式查看当前及之前的版本信息
git log --graph --pretty=format:"%h %s"以简洁的图形形式查看当前及之前的版本
git reflog查看所有版本信息及版本变更记录
git reset --hard回滚
git reset --hard <版本号>
git branch查看当前所有分支
git branch xxx创建新分支:xxx
git checkout xxx切换到指定分支
git checkout -b xxx创建并切换分支
git merge xxx将xxx分支与当前分支进行合并(可能产生冲突)
git branch -d xxx删除xxx分支
git remote add 远程名称 远程URL增加远程控制
git remote add gitFirstHTTPS https://github.com/USERNAME/REPOSITORY.git
git remote add gitFirstSSH git@github.com:USERNAME/REPOSITORY.git
git remote -v查看现有的远程控制
git remote set-url xxx yyy更改现有的远程URL
git remote set-url 现有远程名称 远程URL
git remote rename xxx yyy重新命名远程名称
git remote rename gitFirst gitFirstHTTPS
git remote rm 远程名称删除远程引用,该命令并不会删除远程存储库,只是删除本地远程引用
git push 远程名 分支名向远程仓库推送代码
git push gitFirstHTTPS master
git clone 远程仓库地址克隆远程仓库代码
git clone 远程URL
注:此处自动增加远程名(默认origin)及对应URL
git pull 远程名 分支名从远程仓库拉取并合并代码
git push gitFirstHTTPS dev
git fetch 远程名 分支名从远程仓库拉取代码
git rebase 远程名 分支名合并分支
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值