Git工作流

在这里插入图片描述

Git下载

  1. 命令行工具:Git for windows
    下载地址:https://git-scm.com/download
  2. 操作系统中可视化工具:TortoiseGit
    下载地址: https://tortoisegit.org/

Git安装

1、安装资料中的 git-2.19.exe

2、在任意位置右键执行git bash here(安装成功)

# 配置用户名和邮箱
# --global 表示全局属性,所有的git项目都会共用属性。
git config --global user.name 'atguigu'
git config --global user.email 'helin@126.com'
全局配置文件存放在windows系统登录用户的家目录下.gitconfig
  • C:\Users{用户名}路径下的.gitconfig文件里面可以看到:也可以直接在文件中修改
    在这里插入图片描述

查看当前登录的账号和邮箱

git config user.name

git config user.email

拉取指定远程分支的代码到本地

将远程git仓库里的指定分支拉取到本地(本地不存在的分支)

git checkout -b 本地分支名 origin/远程分支名
例如: 切换远程分支
git checkout -b  release origin/test

查看本地分支

git branch

查看所有分支(包括本地与远程)

git branch -a

查看日志

git log

Push rejected

出现这种情况,是因为只是本地仓库修改了代码,并没有先把远程仓库的代码给pull下来。所以push时才会拒绝。

Gitbash

注意:所有的版本控制系统,其实只能跟踪文本文件的改动;而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化。如果要真正使用版本控制系统,就要以纯文本方式编写文件。

git自带的命令行的客户端

1、初始化创建本地git的版本库
在空文件夹下执行 git init
  • 版本库(本地仓库):“.git”目录就是版本库,将来文件都需要保存到版本库中。

  • 工作目录:包含“.git”目录的目录,也就是.git目录的上一级目录就是工作目录。只有工作目录中的文件才能保存到版本库中。

2、新增文件/修改文件提交给本地仓库管理
  • 在gitbash中新创建文件a.txt

    • vim a.txt
  • 将新增的文件提交到本地git仓库
    1- 将新增文件添加到暂存区
    git add 文件名

2- 提交文件到git本地仓库
git commit -m ‘注释’ 文件名

3- 查看git working tree中的暂存区
git status

  • 修改文件提交修改到本地仓库
    修改文件后[不添加到暂存区可以直接提交]
    git add 文件名
    git commit -m ‘注释’
3、查看提交记录

查看提交信息:git log 文件名
简易信息查看:git log --pretty=oneline 文件名
查看历史提交记录[以后版本切换使用]:git reflog
在这里插入图片描述

4、差异比较

工作区文件

​ 暂存区提交的缓存

​ 本地git仓库版本

​ 如果暂存区没有内容,工作区文件修改了没有提交:git diff 文件名是和本地仓库进行比较

​ 如果暂存区有内容没有提交,工作区的文件修改了:git diff文件名是和暂存区比较

5、 还原修改

当文件修改后不想提交修改的内容,想还原到未修改之前的状态。可以使用“还原”功能。
git checkout – test.txt:还原

注意:git checkout - - file命令中的- -很重要,没有- -,就变成了“切换到另一个分支”的命令。其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
git reset --hard 版本号:换到到指定版本号(版本穿越)
git reset --hard HEAD^ 回退到上一次提交(版本回退)
git reset --hard HEAD~n 回退n次操作(版本回退)

还原有三种情况:
1. 修改后还没有被放到暂存区:从版本库还原最新版本:git checkout -- test.txt
2. 修改后已经添加到暂存区后,又作了修改: 
    a)	从暂存区还原: git checkout -- test.txt
    b)	从指定最新版本库还原:git reset --hard HEAD
3. 修改后已经提交到版本库,从历史版本还原:git reset --hard 版本号
6、版本删除

被git控制的文件不能完全删除,就算删除也需要提交(增删改都属于更新)

rm -vf   文件名
git add 文件名
git commit -m '注释' 文件名

确实要从版本库中删除该文件,可以用命令git rm删掉,并且git commit
在这里插入图片描述

7、 提交工程到git本地仓库

maven:maven项目最重要的是src文件夹和pom.xml文件

8、 清空本地缓存
git rm -r --cache . 

使用Git客户端:TortoiseGit

软件安装

安装TortoiseGit

又称为小乌龟:
在这里插入图片描述
在这里插入图片描述

一路“Next”使用默认选项即可。
默认选项下会启动配置画面:
在这里插入图片描述
由于目前只有英文语言包,默认即可继续下一步。
配置git.exe,在5.1.2中已经安装过git-for-windows了所以在此找到git.exe所在的目录。
在这里插入图片描述
配置开发者姓名及邮箱,每次提交代码时都会把此信息包含到提交的信息中。
在这里插入图片描述
使用默认配置,点击“完成”按钮完成配置。
在这里插入图片描述
安装完毕后在系统右键菜单中会出现git的菜单项。
在这里插入图片描述

安装中文语言包

在这里插入图片描述
在这里插入图片描述
直接“下一步”安装完毕
鼠标右键选择Settings
在这里插入图片描述
语言包安装完毕后可以在TortoiseGit的设置中调整语言
在这里插入图片描述
效果:
在这里插入图片描述

创建版本库

使用TortoiseGit时只需要在目录中点击右键菜单选择“在这里创建版本库”,注意确保当期目录下没有.git目录,否则菜单中没有这一项
在这里插入图片描述
在这里插入图片描述
创建成功,会在此目录下创建一个.git的隐藏目录,如下:
在这里插入图片描述
再次右键,菜单中再也没有“git在这里创建版本库(Y)…”这一项了
在这里插入图片描述

添加文件

参照命令操作,两个步骤:
1、创建文件,并把文件添加到暂存区
2、提交到本地版本库

1、创建文件,并把文件添加到暂存区
在工作空间下创建test.txt:
在这里插入图片描述
右键test.txt –> TortoiseGit –> 添加
在这里插入图片描述
点击确定,加入到暂存区(文件变为带“+”号的图标):
在这里插入图片描述
2、提交到本地版本库
在test.txt上再次点击右键选择“提交”,此时将文件保存至版本库中。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
提交后的效果:
在这里插入图片描述

修改文件

查看修改历史

可以在文件上点击右键选择“显示日志”来查看文件的修改历史。
在这里插入图片描述
在这里插入图片描述
版本回退穿越
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

差异比较

当文件内容修改后,需要和修改之前对比一下修改了哪些内容此时可以使用“比较差异功能”
再次修改文件的内容:
在这里插入图片描述
右键-》TortoiseGit-》比较差异
在这里插入图片描述
效果:
在这里插入图片描述

还原修改

当文件修改后不想把修改的内容提交,还想还原到未修改之前的状态。此时可以使用“还原”功能。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:此操作会撤销所有未提交的修改,所以做还原操作时需要慎重慎重!!!

删除操作

需要删除无用的文件时可以使用git提供的删除功能直接将文件从版本库中删除。
在这里插入图片描述
误删除,仍然可以还原:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

案例:将java工程提交到版本库

把一个java工程放到工作区中。
在这里插入图片描述
第一步:忽略文件或文件夹
在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

如果使用TortoiseGit的话可以使用菜单项直接进行忽略。

添加忽略文件之前的目录:
在这里插入图片描述
添加忽略:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
选择保留本地文件。完成后在此文件夹内会多出一个.gitignore文件,这个文件就是文件忽略文件,当然也可以手工编辑。其中的内容就是把.settings目录忽略掉。
在这里插入图片描述
依次把target、.classpath、.project添加到忽略列表,添加完成后:
在这里插入图片描述
第二步:将工程添加到暂存区。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击确定完成暂存区添加。
在这里插入图片描述
第三步:提交代码
将代码添加到master分支上,其中.gitignore文件也需要添加到暂存区,然后提交到版本库。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
效果:
在这里插入图片描述
在这里插入图片描述

忽略文件语法规范

空行或是以 # 开头的行即注释行将被忽略。
可以在前面添加正斜杠 / 忽略当前路径文件,但不包括子目录的同名文件。
可以在后面添加正斜杠 / 来忽略文件夹。
可以使用 ! 来否定忽略,即比如在前面用了 *.apk ,然后使用 !a.apk ,则这个a.apk不会被忽略。

*用来匹配零个或多个字符,如 *.[oa] 忽略所有以".o"或".a"结尾, *~ 忽略所有以 ~ 结尾的文件(这种文件通常被许多编辑器标记为临时文件); [] 用来匹配括号内的任一字符,如 [abc] ,也可以在括号内加连接符,如 [0-9] 匹配0至9的数; ? 用来匹配单个字符。

远程仓库(github)

GitHub是一个Git项目托管网站,主要提供基于Git的版本托管服务https://github.com/
注册账号的注意事项:
 不要使用163的邮箱,有可能收不到验证邮件。
 较长时间不使用有可能被Github冻结账号。请登录其客服页面https://github.com/contact,填写账号恢复申请。
在这里插入图片描述
github支持两种同步方式“https”和“ssh”。如果使用https很简单基本不需要配置就可以使用,但是每次提交代码和下载代码时都需要输入用户名和密码。而且如果是公司配置的私有git服务器一般不提供https方式访问

SSH

ssh模式比https模式的一个重要好处就是,每次push、pull、fetch等操作时,不用重复填写遍用户名密码。
前提是你必须是这个项目的拥有者或者合作者,且配好了ssh key。

SSH密钥生成

在windows下我们可以使用 Git Bash来生成密钥,可以通过开始菜单或者右键菜单打开Git Bash
git bash 执行命令,生成公钥和私钥
命令: ssh-keygen -t rsa -C dahai88@atguigu.com
在这里插入图片描述
执行命令完成后,在window本地用户.ssh目录C:\Users\用户名.ssh下面生成如下名称的公钥和私钥:
在这里插入图片描述

配置SSH密钥

登录Github后,右上角点击setting
在左侧菜单中选择SSH and GPG keys,在右边点击New SSH key
在这里插入图片描述
在这里插入图片描述
点击“Add SSH key”,完成添加。
在这里插入图片描述

推送到远程仓库

参照如下提示:
在这里插入图片描述

Git bash推送

在仓库所在的目录点击右键选择“Git Bash Here”,启动git bash程序。
在这里插入图片描述
先添加origin远端:
在这里插入图片描述
把master分支推送到远端
在这里插入图片描述
如果出现如下错误:
在这里插入图片描述
可以先执行如下命令,然后再执行上面的命令
$ git remote rm origin

TortoiseGit推送

一、 由于TortoiseGit使用的ssh工具是“PuTTY”git Bash使用的ssh工具是“openSSH”,如果想让TortoiseGit也使用刚才生成的密钥可以做如下配置:
在这里插入图片描述
选择网路,配置ssh工具(git的安装目录下)
在这里插入图片描述
注意:远端选项只有初始化或clone了仓库后才有
在这里插入图片描述
点击“添加/保存”按钮:
在这里插入图片描述
Url:远程仓库的地址
推送URL:也是相同的
Putty密钥:选择刚才生成的密钥中的私钥
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
二、同步。在本地仓库的文件夹中单击右键,选择“Git同步”
在这里插入图片描述
在这里插入图片描述
点击推送成功后,刷新码云的项目页面:
在这里插入图片描述

从远程仓库克隆

git clone <远端地址> <新项目目录名>。
<远端地址> 是指远程链接的地址。
<项目目录名> 是指为克隆的项目在本地新建的目录名称,可以不填,默认是GitHub的项目名。

命令执行完后,会自动为这个远端地址建一个名为origin的代号。
克隆远程仓库也就是从远程把仓库复制一份到本地,克隆后会创建一个新的本地仓库。选择一个任意部署仓库的目录,然后克隆远程仓库。
在这里插入图片描述

git bash克隆

切换到tmp目录下(workspace的上级目录):
在这里插入图片描述
效果
在这里插入图片描述

TortoiseGit克隆

在任意目录点击右键:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
效果:
在这里插入图片描述

从远程仓库取代码

Git中从远程的分支获取最新的版本到本地有这样2个命令:
git pull <远端代号> <远端分支名>。
<远端代号> 是指远程链接的代号,如origin。
<远端分支名>是指远端的分支名称,如master。
例 git pull origin master

  1. git相当于是从远程获取最新版本到本地,不会自动merge(合并代码)
    在这里插入图片描述
  2. git pull:相当于是从远程获取最新版本并merge到本地
    上述命令其实相当于git fetch 和 git merge
    在这里插入图片描述
    在实际使用中,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并。

如果使用TortoiseGit的话可以从右键菜单中点击“拉取”(pull)或者“获取”(fetch)
在这里插入图片描述

解决冲突

解决冲突三板斧:
1、git pull,获取最新内容,修改合并
2、git add
3、git commit

Github中fork的使用

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

使用git bash实现分支管理

创建分支:git branch <分支名>
查看分支:git branch -v
切换分支:git checkout <分支名>
创建并切换分支:git checkout -b <分支名>

合并分支
先切换到主干:git checkout master
git merge <分支名>

删除分支
先切换到主干 git checkout master
git branch -D <分支名>

合并时冲突
程序合并时发生冲突系统会提示CONFLICT关键字,命令行后缀会进入MERGING状态,表示此时是解决冲突的状态。

解决冲突
此时通过git diff 可以找到发生冲突的文件及冲突的内容。
然后修改冲突文件的内容,再次git add 和git commit 提交后,后缀MERGING消失,说明冲突解决完成。

idea的git客户端

1、配置
在这里插入图片描述
1.1 配置git客户端
在这里插入图片描述
1.2 配置github的账号密码
如果账号密码配置失败,检查网络,删除缓存
在这里插入图片描述
在这里插入图片描述
2、克隆github项目
默认克隆的是登录账号密码的所有仓库之一生成一个新的工作空间
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3、添加、提交、推送、更新代码
修改提交:
在这里插入图片描述
推送更新到远端:
在这里插入图片描述
4、版本还原
在这里插入图片描述
在这里插入图片描述
5、分支管理

默认主分支下开发:
在这里插入图片描述
创建其他分支:
在这里插入图片描述
在这里插入图片描述
切换到主分支:
在这里插入图片描述
在主分支中合并其他分支:
在这里插入图片描述
如果文件大红色,代表冲突状态还在,可以通过添加到暂存区的方式解决
在这里插入图片描述
删除其他分支:
6、推送项目到远端

1、在新建的项目中初始化本地仓库
在这里插入图片描述
2、初始化提交到本地仓库
在这里插入图片描述
3、推送到远端仓库
在这里插入图片描述
在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐