目录
Git下载和安装及配置
1、下载与安装
下载路径:Git - Downloads
#配置用户名
git config --global user.name "你的用户名"
#配置邮箱
git config --global user.email "你的邮箱地址"
查询配置:
git config --global --list
2、生成Git密钥
在Git Bash中输入如下命令,生成公私钥对
ssh-keygen -t rsa -C "你的邮箱地址"
回车之后出现如下提示信息,意思是指定密钥存放路径,建议直接回车。使用默认地址。
生成过程中输入你的用户密码,如果输入了一定要记住哦。
如果想要使用公钥的时候,不输入密码,在提示输入密码的时候,直接回车三次即可。
生成的公钥在用户目录下的.ssh文件夹中,例如:C:\Users\roy08\.ssh
id_rsa:私钥
id_rsa.pub:公钥
之后使用时如果需要上传或者修改远端仓库,则需要将公钥配置到远端仓库服务器上,而私钥由自己保留在客户端本机,以便于Git使用时完成校验。
3、使用Github或者Gitee创建远端仓库
注册Github或者Gitee的用户,创建远端仓库:以GitHub为例:点击右上角+号,选择new repository。
4、环境配置
右键 (此电脑) ->(属性) -> (高级系统设置) ->(环境变量)...
//查看git的版本,检查git是否安装和配置成功
git --version
Git相关基础内容(必须了解)
0、git工作原理:用仓库对版本进行管理,管理的不是文件,而是修改记录。
如果git gui中文乱码,修改 edit ->options中的 cp936编码 改为utf-8.
本地公钥 id_rsa.pub
git操作的时候3个概念:
工作区: 自己硬盘上实实在在的文件位置。 add到暂存
暂存区(stage): 在真正确认提交之前,需要将文件保存到暂存区,之后确认了再commit到本地仓库。 commit 到仓库。
本地仓库: 其实是git init之后产生的.git文件夹(.git是个隐藏文件夹。)
远程仓库:一个仓库可以有多个分支; 服务器gitee;gitlab;github
本地 → 本地仓库 本地分支
暂存区 →
远程 → 远程仓库 远程分支
注意事项:git地址格式:git@XXXX/XXX.git
“在git中,origin的意思是指“远程仓库”
顺序:有仓库,先提交暂存区,再关联远程仓库,在提交远程仓库
顺序:有仓库,先关联远程仓库,再提交暂存区,在提交远程仓库
代码管理步骤
使用步骤
1.本地创建仓库 git init
2.关联远程仓库 git clone url.git
3.提交到暂存区 git add .
4.暂存区提交到本地 git commit -m "XXX"
5.提交代码 git push 远程仓库 分支
6.下载代码 git pull 远程仓库 分支
仓库:
Git 仓库设置全局设置:
git config --global user.name "myname"
git config --global user.email "112xxxxx@qq.com"
1、找到你本地公钥 id_rsa.pub ,然后复制里面的内容 配置到gitee
2、登录gitee 设置-----SSH公钥
3、粘贴进去,保存就OK了
关联仓库两种方法
【方法一】:关联下载远程仓库分支
git clone url.git
注意:需要push则需要进入刚才远程仓库目录中(目录名字一般为仓库名)
所下载是master分支
cd XXX
该master分支下所有文件名字一般为仓库名,该仓库就是本地 且 与远程仓库名称一样
# 必须需要 cd 进入刚才远程仓库目录中 查看关联远程仓库信息; 才进行pull 和 push操作
【方法二】:通过remote关联远程仓库
操作之前必须 git init 创建本地仓库
git remote add origin url.git
#当前目录为为本地仓库,所以需要git init
# origin 表示远程仓库(不懂)
# url.git:替换仓库地址
# 作用管理远程仓库地址,当前所在目录关联远程仓库
# 注意的是:一般看不到分支的 1. git init 2. git commit -m ""
2. git pull 3. git branch -a
本地仓库操作
新增本地关联远程仓库
git init
查看本地关联远程仓库
git remote -v
删除本地关联远程仓库
git remote rm delname
备注:无法删除gitee 、gitlab 、github 服务的仓库
修改本地关联远程仓库
git remote rename oldname newname
gitee命令介绍
1、git 可以直接单机使用:
git bash 是支持linux命令的。
所有的命令都可以用--help 或者故意敲错来查看帮助。
git 配完用户名和邮箱,可以用 git config --list查看 ,退出用q。
产生的公私钥对,默认在用户目录下的.ssh目录里
版本管理&提交代码:
管理历史记录
git init 命令: 在当前目录生成一个本地仓库,并且默认创建一个主线分支叫做master。
千万不要删掉git init!!!!!! 恢复不了。
git status 查看当前git仓库的状态。
1、在工作区修改后,会看到untracked files 未追踪的文件。
2、add之后 ,会看到Changes to be committed
3、commit 之后 nothing to commit, working tree clean 表示工作区和仓库是同步的。
git add . :将文件添加到暂存区。 如果想退回,可以git rm --cached 文件名。
修改之后,如果git restore 会把修改退回,找不回来的,慎用。
git commit -m "XXXX" : 将暂存区文件提交到本地仓库,这样才能真正管理起来。
版本重置:
git reset: 将git回到某个版本下的状态。 git reset --hard 表示连同工作区一起修改回之前的版本。
reset和revert的区别:reset回到过去,revert恢复原状时间前进
版本号可以使用git reflog中的记录编号, 也可以用HEAD^表示前一个版本,多少个^就表示前多少个版本,也可以用~数量表示。
git log :可以查看提交的记录,每个记录都有个编号。
注意只能查看当前版本之前的日志
git reflog: 可以查看所有提交的记录,包括当前版本之后的。
过程中有个HEAD标记,表示当前所在的版本。
分支管理
创建分支(远程/本地)
确定是否关联远程仓库
git remote -v
查看所有远程分支
git branch -rv
创建本地分支
git checkout -b 分支名
远程分支创建成功(前提仓库进行关联操作)
git push --set-upstream origin 刚刚创建的分支名
查看分支:
git branch 用于进行分支创建,相当于拷贝一个当前版本的记录。
加分支名表示创建分支, 不加表示显示当前所有分支。
git branch -a # 查看远程仓库所有分支名
gitbranch -v # 查看远程仓库当前所在分支
概要
git branch [--color[=<when>] | --no-color] [--show-current]
[-v [--abbrev=<n> | --no-abbrev]]
[--column[=<options>] | --no-column] [--sort=<key>]
[--merged [<commit>]] [--no-merged [<commit>]]
[--contains [<commit>]] [--no-contains [<commit>]]
[--points-at <object>] [--format=<format>]
[(-r | --remotes) | (-a | --all)]
[--list] [<pattern>…]
git branch [--track | --no-track] [-f] <branchname> [<start-point>]
git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
git branch --unset-upstream [<branchname>]
git branch (-m | -M) [<oldbranch>] <newbranch>
git branch (-c | -C) [<oldbranch>] <newbranch>
git branch (-d | -D) [-r] <branchname>…
git branch --edit-description [<branchname>]
切换分支
git checkout
新的命令是switch
分支合并
git merge : 合并两个分支的内容
git merge 分支A :将分支A的内容合并到当前分支。
要改哪个分支,就先切过来。然后merge别的。
步骤:1、进入要合并的分支(如开发分支合并到master,则进入master目录) git pull
2、查看所有分支是否都pull下来了 git branch -a
3、使用merge合并开发分支 命令格式:git merge 分支名
4、查看合并之后的状态 git status
备注:如果两个分支中都进行了修改,合并的时候会提示处理冲突,并且需要给出理由。 用:wq退出。
本地切换分支
git checkout origin/master # 切换远程仓库master分支名
git checkout origin/DDT # 切换远程仓库DDT分支名
可快速切换本地电脑的分支,由master 切换Web-DDT 可切来切去(不用新增一个文件夹)
关联交互使用:
远程仓库:
平常在公司里,一般会用gitlab搭建一个公司内部的git服务器用于存放源码。
需要和管理员沟通,获取账号权限,可能需要提供公钥,也可能是分配一个账号。
gitee和github:是开源代码托管平台,全世界都能用。
拉取源码:
git clone git项目地址。 过程中会自动完成init操作。
关联和上传和下载
git remote add <别名> 地址:添加一个远程仓库,并且给他取个名字。
git push 仓库别名 分支名 :上传代码(本地仓库的修改)
git pull 仓库别名 分支名: 下载代码
其实真正的下载叫fetch,pull实际上是fetch和merge的组合。
git branch --set-upstream-to=<别名>/master master 通过这一句,可以将默认的push pull 的远程仓库roy/master 绑定到本地master ,之后 可以省略输入 仓库名和分支名。
第一次进行push操作的时候,会提醒验证身份,需要输入用户名和密码,是gitee的账号密码。如果填错了会出现鉴权错误,push不上去。
修改windows凭据: 改成gitee的用户名和密码。
修改远程仓库分支名称
不同名-远程分支重命名(本地和远程库)
本地分支重命名(还没有推送到远程)
git branch -m oldName newName
同名-远程分支重命名(本地和远程库)
(已经推送远程-假设本地分支和远程对应分支名称相同)
a. 重命名远程分支对应的本地分支
git branch -m oldName newName
b. 删除远程分支
git push --delete origin oldName
c. 上传新命名的本地分支
git push origin newName
d.把修改后的本地分支与远程分支关联
git branch --set-upstream-to origin/newName
链接:https://www.jianshu.com/p/f657ccd854fb
git push 详解 上传
概要
git push [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
[--repo=<repository>] [-f | --force] [-d | --delete] [--prune] [-v | --verbose]
[-u | --set-upstream] [-o <string> | --push-option=<string>]
[--[no-]signed|--signed=(true|false|if-asked)]
[--force-with-lease[=<refname>[:<expect>]] [--force-if-includes]]
[--no-verify] [<repository> [<refspec>…]]
描述
使用本地 refs 更新远程 refs,同时发送完成给定 refs 所需的对象。
每次推送到存储库时,您都可以通过在其中设置挂钩来使存储库发生有趣的事情。请参阅git-receive-pack(1) 的文档。
当命令行没有使用 <repository>
参数指定推branch.*.remote
送到哪里时,会参考当前分支的配置来确定推送到哪里。如果缺少配置,则默认为origin。
当命令行未指定使用<refspec>...
参数或--all
, --mirror
,选项推送什么时,该命令通过咨询配置--tags
找到默认值,如果未找到,则遵循配置来决定推送什么(参见git-config(1)了解的意思)。<refspec>
remote.*.push
push.default
push.default
当命令行和配置都没有指定要推送的内容时,使用默认行为,其对应的simple
值对应于push.default
:当前分支被推送到相应的上游分支,但作为安全措施,如果上游分支与本地分支的名称不同。
git pull 详解 下载
概要
git pull [<options>] [<repository> [<refspec>…]]
描述
将来自远程存储库的更改合并到当前分支中。如果当前分支在远程之后,那么默认情况下它将快进当前分支以匹配远程。--rebase
如果当前分支和远程分支已经分歧,用户需要用or --no-rebase
(或 中对应的配置选项)指定如何协调分歧的分支pull.rebase
。
更准确地说,使用给定参数git pull
运行git fetch
,然后根据配置选项或命令行标志,将调用git rebase
或git merge
协调分歧的分支。
<repository> 应该是传递给git-fetch(1)的远程存储库的名称。<refspec> 可以命名任意远程引用(例如,标签的名称),甚至可以命名具有相应远程跟踪分支的引用集合(例如,refs/heads/*:refs/remotes/origin/*),但是通常它是远程存储库中分支的名称。
<repository> 和 <branch> 的默认值是从git-branch(1) --track
设置的当前分支的“远程”和“合并”配置中读取的。
Bash基本操作命令
命令名称 | 英文 | 作用 |
ls | list | 查看当前目录下的内容 |
pwd | print work directory | 查看当前所在目录 |
cd[目录名] | change directory | 切换目录 |
mkdir[目录名] | make directory | 创建目录 |
touch | touch | 创建文件 |
rm[文件名] | remove | 删除指定文件 |
cp[源文件或者目录] [目的文件或者目录] | cpoy | 复制 |
mv[源文件或者目录] [目的文件或者目录] | move | 移动 |
reset | reset | 重置终端 |
clear | clear | 清屏 |
history | history | 查看历史命令 |
Jenkis 使用git进行持续集成
github放公钥,jenkins放私钥
gitee放公钥,jenkins放私钥
本地公钥 id_rsa.pub