GIT你还不会用吗?
文章目录Git工作流Git安装Gitbash1、初始化创建本地git的版本库2、新增文件/修改文件提交给本地仓库管理3、查看提交记录4、差异比较5、版本切换6、版本删除7、 提交工程到git本地仓库Git工作流Git安装1、安装课件资料中的git-2.19.exe2、在任意位置右键执行git bash here$ git config --global user.name 'atguigu'$ g
文章目录
Git工作流
Git下载
- 命令行工具:Git for windows
下载地址:https://git-scm.com/download - 操作系统中可视化工具: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
- git相当于是从远程获取最新版本到本地,不会自动merge(合并代码)
- 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、推送到远端仓库
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)