常用指令
设置用户信息
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
# 输入如下命令,三次回车即可生成 ssh key
# 生成后的公匙文件名称 id_rsa.pub
ssh-keygen -t rsa -C "email@example.com"
ssh -T git@gitee.com
# 出现如下的结果表示认证成功
创建文件夹
mkdir 文件夹名称
进入路径
cd 路径
创建git
git init
添加改动文件到本地库 add . 上传所有
git add .
查看本地库队列文件
git status
删掉本地队列缓存
git rm -r --cached .
给长传版本添加描述
git commit -m "第一个版本提交"
对接远程仓库
git remote add origin 你的仓库地址
拉取远程仓库与本地同步
git pull --rebase origin master
强制拉取pull并覆盖本地文件
git fetch --all
推送到远程仓库分支
git push -u origin master
强制推送到远程仓库分支
git push -f origin master
CentOS7 安装git
yum install -y git
Git排除某一目录或文件 规则
创建规则文件 (或手动创建 .gitignore) touch .gitignore gitignore规则参考 target //忽略这个target目录 angular.json //忽略这个angular.json文件 log/* //忽略log下的所有文件 css/*.css //忽略css目录下的.css文件 **/css //忽略所有目录下的css文件夹 css/** //忽略css目录下所有文件 .gitignore中已经标明忽略的文件目录下的文件,git push的时候还会出现在push的目录中,或者用git status查看状态,想要忽略的文件还是显示被追踪状态。 原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的, 这时候我们就应该先把本地缓存删除,然后再进行git的提交,这样就不会出现忽略的文件了。 参考文章:https://www.cnblogs.com/rainbowk/p/10932322.html
第一种方法:
.gitignore中已经标明忽略的文件目录下的文件,git push的时候还会出现在push的目录中,或者用git status查看状态,想要忽略的文件还是显示被追踪状态。
原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,
这时候我们就应该先把本地缓存删除,然后再进行git的提交,这样就不会出现忽略的文件了。
解决方法: git清除本地缓存(改变成未track状态),然后再提交:
[root@kevin ~]# git rm -r --cached .
[root@kevin ~]# git add .
[root@kevin ~]# git commit -m 'update .gitignore'
[root@kevin ~]# git push -u origin master
需要特别注意的是:
1).gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
2)想要.gitignore起作用,必须要在这些文件不在暂存区中才可以,.gitignore文件只是忽略没有被staged(cached)文件,
对于已经被staged文件,加入ignore文件时一定要先从staged移除,才可以忽略。
第二种方法:(推荐)
在每个clone下来的仓库中手动设置不要检查特定文件的更改情况。
[root@kevin ~]# git update-index --assume-unchanged PATH //在PATH处输入要忽略的文件
在使用.gitignore文件后如何删除远程仓库中以前上传的此类文件而保留本地文件
在使用git和github的时候,之前没有写.gitignore文件,就上传了一些没有必要的文件,在添加了.gitignore文件后,就想删除远程仓库中的文件却想保存本地的文件。这时候不可以直接使用"git rm directory",这样会删除本地仓库的文件。可以使用"git rm -r –cached directory"来删除缓冲,然后进行"commit"和"push",这样会发现远程仓库中的不必要文件就被删除了,以后可以直接使用"git add -A"来添加修改的内容,上传的文件就会受到.gitignore文件的内容约束。
额外说明:git库所在的文件夹中的文件大致有4种状态
Untracked:
未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
Unmodify:
文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改,
而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
Modified:
文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态,
使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改
Staged:
暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态.
执行git reset HEAD filename取消暂存, 文件状态为Modified
Git 状态 untracked 和 not staged的区别
1)untrack 表示是新文件,没有被add过,是为跟踪的意思。
2)not staged 表示add过的文件,即跟踪文件,再次修改没有add,就是没有暂存的意思
常见问题
远程拉取错误
error: cannot pull with rebase: Your index contains uncommitted changes.
解决办法:https://blog.csdn.net/sinat_41747081/article/details/100712316
删除本地文件后 Git从远程仓库重新获取
解决办法:https://blog.csdn.net/ffscript/article/details/74450821
Git安装
#安装
- 概述Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理,是目前使用范围最广的版本管理工具。
- 下载安装下载地址:https://git-scm.com/下载后傻瓜式一键安装,建议安装在英文目录下安装完成后在开始菜单中能够找到如下程序
或者右击桌面,能够看到如下Git选项
- GUI为用户界面模式
- Bash为命令行模式
- 系统配置由于git是分布式管理工具,需要输入用户名和邮箱以作为标识,因此,我们按右键打开
Git Bash
命令框在命令行输入下列的命令:
git config --global user.name "Your Name" git config --global user.email "email@example.com"
name可以为中文,邮箱建议使用qq邮箱,方便记忆
生成SSH公钥,许多 Git 服务器都使用 SSH 公钥进行认证,所以我们也需要配置该公钥
# 输入如下命令,三次回车即可生成 ssh key # 生成后的公匙文件名称 id_rsa.pub ssh-keygen -t rsa -C "email@example.com"
- 常用命令
命令 备注 git status 查看仓库的改变情况,会有相关的提示操作出现 git add 直接添加所有改动的文件 git commit -m "note" 确认生成本地的版本,note是 版本特点说明 git push 将改动上传到github,若没有指定分支,则需要使用git push origin master git log 查看版本更新情况 git reset --hard x 回退到某个本地版本,x为git log中出现的hash值的前七位 git clean -xf 清除所有的未提交文件 - Git基本操作
- 创建一个目录
Administrator@VE2G17IXC9C3D4L MINGW64 /f/work $ mkdir firstgit
- 进入该目录
Administrator@VE2G17IXC9C3D4L MINGW64 /f/work $ cd firstgit/
- 查看当前所在磁盘的位置
Administrator@VE2G17IXC9C3D4L MINGW64 /f/work/firstgit $ pwd /f/work/firstgit
- 初始化仓库
Administrator@VE2G17IXC9C3D4L MINGW64 /f/work/firstgit $ git init Initialized empty Git repository in F:/work/firstgit/.git/
- 创建一个目录
#GUI可视化工具安装
- 下载地址:https://download.tortoisegit.org/tgit/2.8.0.0/,建议采用迅雷下载
- 默认下一步安装(最新版本目前为2.8)
安装完成后,右击桌面,弹出如下框即表示安装完成
也可以找到有版本控制的文件,右击查看,如下图
- 汉化包安装尽量建议采用英文的GUI操作,如果你坚持要采用中文版本,那么可以下载语言汉化包汉化包版本一定要和
TortoiseGit
版本一致,否则汉化
#GIT区域介绍
- git有3个区域
- 工作区(working directory):项目的根目录,不包括.git在内的其他文件
- 暂存区(stage area):是一个看不见的区域,
git add
命令就是将文件添加到该区域,git status
命令可以查看当前暂存区的文件 - 本地仓库(repository):指在工作目录下创建的一个.git目录,这是一个隐藏目录。
git commit -m "日志"
名可以将暂存区的代码提交到本地仓库。git push -u origin master
就是将本地仓库的代码推送到远程仓库
- git文件的3种状态
- 已修改(modified),存在于工作区,文件修改后的状态
- 已暂存(staged),存在于暂存区,采用
git add
命令后的状态 - 已提交(committed),存在于本地仓库,采用
git commit
命令后的状态
#码云+Git配置仓库
- 为什么要这么做?若需要将本地仓库的代码同步更新到远程托管服务器,则需要与远程服务器建立通信授权连接,最常见的就是利用上述所生成的sshkey进行配置。常见的托管平台有GitHub,GitLab(开源),码云,企业中也用该产品搭建企业的代码管理平台。
- 前置条件
- 本地git已安装并配置了Git用户参数,本地已生成了SSHKey
- 注册码云平台账号,建议采用QQ邮箱进行注册,方便记忆和密码找回
- 秘钥配置
- 注册好码云后,进入设置中心,再点击SSH公钥
- 在本机磁盘目录中,找到当前用户下的.ssh目录,并编辑其中的.pub结尾的文件
- 将内容拷贝至码云中,拷贝后,标题能够自动识别,也可以自行修改
- 打开Git Bash终端输入如下命令进行连接测试
ssh -T git@gitee.com # 出现如下的结果表示认证成功
- 注册好码云后,进入设置中心,再点击SSH公钥
- 使用命令同步代码代码同步有3个步骤:add、commit、push
- 在本地磁盘中找一个目录,用于初始化本地仓库存放项目代码
- 将项目拷贝到该目录下,与.git同级(项目不能为空文件夹)
- 使用名,将hospital-parent添加到本地仓库中,使用
git add 目录
命令 - 将项目提交至本地仓库,使用
git commit -m 备注
命令 - 在码云上创建一个仓库壳子,用来存放待上传的项目
注意:上述所复制的链接就是项目所在的仓库地址(我们使用SSH命令进行交互操作)
- 将本地库与远程库关联关联命令:
git remote add origin git@gitee.com/xxxxxxx.git
- 远程仓库与本地仓库合并这时候不着急推,先将远程仓库的文件同步一次到本地,否则直接推会报错
# 表示从远程master分支拉取代码与本地仓库进行合并,此时一定要保证本地的文件是绿色的 git pull --rebase origin master
此时你会发现本地代码多了几个文件
- 将本地代码推送到远程分支
- 命令
# push表示推送到远程分支 git push -u origin master
- 执行实例
- 效果实例刷新码云的远程仓库,能够看到如下结构
- 命令
- 后续代码改动
依次执行以下命令(远程仓库没有发生改动的情况),如果远程分支的代码已经被别人修改,需要先拉取代码,再提交,这个过程稍微复杂一点,若存在冲突则涉及到同一行代码的合并
- 执行add
# 将已改动的文件添加到暂存区 git add hospital-parent/
- 执行commit
# 将暂存区的代码提交到本地仓库 git commit -m "第二次提交"
- 执行push
# 将本地仓库的所有更改推送到远程服务器的master分支 git push origin master(完整写法,远程分支若不存在则会被创建) 或者 git push origin(远程仓库与本地仓库存在分支最终关系的写法) 或者 git push(远程仓库只有一个分支,最简单的写法)
- 执行add
- 使用工具同步代码
如果修改代码后直接提交可以采用
Git Commit -> "master"
,该操作中可以直接push如果需要拉取远程分支上的代码,则可以点击TortoiseGit -> Pull
如果仅仅是推送代码到远程分支,则可以点击TortoiseGit -> Push
- 在本地磁盘中找一个目录,用于初始化本地仓库存放项目代码
- 小乌龟push出现异常
Disconnected:No supported authentication methods avaliable (server sent publickey)
将小乌龟Network处的
C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
路径改为C:\Program Files\Git\usr\bin\ssh.exe
即可
#IDEA+Git
- 在IDEA中设置Git,在File-->Setting->Version Control-->Git-->Path to Git executable选择你的git安装后的git.exe文件,然后点击Test,测试是否设置成功
- 配置码云(gitee)
- 插件安装由于IDEA没有直接码云,所以需要选择安装Gitee插件,找到Plugins,搜索Gitee,安装后重启
- 登录信息配置
- 直接将本项目同步至码云(新建仓库)
- 代码提交或更新如果文件发生改动,我们可以采用3种方式进行同步更新
- Git Bash命令
- 小乌龟客户端工具
- IDEA直接同步
这里我直接说IDEA的操作,下面中的蓝色文件已经被修改了,颜色不太一样,红色文件表示是没有版本控制的
在项目根目录上右击,选择
Git->Commit Directory
进行提交提交操作界面,需要你勾选文件,填写日志,并提示了差异对比
点击Commit按钮后出现了如下警告信息,不用担心,你可以直接Commit,也可以回去查看源代码中是否有警告提示,消除对应的警告即可
点击上图的Review之后,控制台提示了警告位置
你可以置之不理,继续commit,也可以加以改正,改正如下
选择Commit提交后的提示,但此时我们并没有push
我们可以找出现在可以push到远程分支的commit,如下操作
推送后查看码云是否已经更新,如下图
- 总结IDEA操作码云和使用工具或命令的原理差不多,均需要add,commit,push等操作,更新则采用pull,如果涉及到多人协同开发时,还会遇到更加复杂的操作,当工具内部无法处理这些功能的时候,我们可以借助系统中的小乌龟来完成
- 插件安装由于IDEA没有直接码云,所以需要选择安装Gitee插件,找到Plugins,搜索Gitee,安装后重启
本文内容转载自:https://www.it235.com/
本文作者为Alextao,转载请注明。
哈哈哈 [斜眼笑]