- Homebrew安装
- 使用Homebrew命令brew install git安装git
- 命令git version查询git版本
- 配置环境变量
git config --global user.name <用户名> 设置用户名
git config --global user.email <邮箱> 设置用户邮箱
git config --list或git config -l 查看已经配置的信息
git init 初始化本地库
git status 查看本地库状态
git add <文件> 工作区内容添加到暂存区
git rm --cached <文件> 取消暂存,删除暂存区文件
git commit -m “日志信息” <文件> 提交到本地库
修改文件 —> add到暂存区 —> commit到本地库
注:git对于已存在行修改的操作是删除行再增加行;
- git reflog 查看引用日志信息(版本号前七位)
- git log 查看详细日志,含完整版本号和各版本提交信息(提交者、邮箱)
- git log --pretty=oneline 以更直观的形式进行打印
- git reset --hard <版本号> 版本穿梭
- git reset --hard HEAD^ 回退到当前版本的上一个版本
- git reset --hard HEAD~n 回退n个版本
什么是分支
实际生产中,公司里会有好几个服务器用于不同环境(开发、测试、生产等),程序员不能在用户用的生产环境上开发,而是在开发分支上开发,不影响用户在生产分支上正常使用;
并行推进多个任务,每个任务处于单独的分支,从而与开发主线分离开,不影响主线分支和其他分支开发、运行;
分支操作
查看分支
git branch -v
创建分支
git branch <分支名>
切换分支
git checkout <分支名> 切换到指定分支上
修改分支
合并分支
git merge <分支名> 将指定分支合并到当前分支上
产生冲突
合并分支时,两个分支对同一个文件的同一个位置分别进行了不同的修改,此时Git无法决定使用哪一个修改版本,必须人为决定;
解决冲突
git reset --merge 回退到merge前状态
git add 文件名 删减后文件上传暂存区
git commit -m “日志信息” 全部提交
注:在合并过程中不能做部分提交,所以不能指定文件名
GitHub官网:https://github.com
GitHub官网登陆状态下点击 new repository
注:一般远程库和本地库起同样的名字
创建远程库别名
git remote -v 查看本地当前所有远程库地址别名
git remote add <别名> <远程地址>
注:一般别名和库名保持一致,减少歧义
执行后创建了fetch和push两个别名
推送Push本地分支到远程库
git push -u <别名/链接> <分支名>
注:Push的最小单位是分支,所以必须指定分支名
- 如果使用的remote是远程库的Https链接,需要输入用户名和密码
新版本不能使用账号-密码,只能使用账户-Token方式
Token申请:头像 ➡️ Settings ➡️ Developer Setttings ➡️ Personal access tokens ➡️ Generate new Token ➡️ 输入名字、选择权限、生成 ➡️ 记录Token(只显示一次,切记本地备份)- 输入GitHub账号
- 输入Token
拉取Pull远程库内容
git pull <别名/链接> <分支名>将指定远程仓库的指定分支更新同步到本地当前所在分支
注:比如你在仓库中新建了一个分支,就需要先pull到本地
克隆clone远程库到本地
git clone <别名/链接> 将指定远程库项目克隆一份(含所有信息)到自己当前本地库中
pull和clone区别:
- git clone是在本地没有版本库时,将远程库整个下载到本地,子操作为:拉取代码、初始化本地库(clone过来的文件含有.git)、创建别名(自动remote add给克隆项目链接创建了别名origin);
- git pull是在本地有版本库时,从远程库中获取最新版本数据,合并到本地,相当于git fetch加git merge;
- git clone开源远程库时,不需要钥匙;
邀请加入团队
clone过来的项目修改后,不能push ;( remote: Permission to 对方项目.git denied to
.) 除非对方将你加入了该项目的团队:
对方:Repository ➡️ Settings ➡️ Manage Access ➡️ Invite a collaborator ➡️ 邀请者UserName ➡️ Add
to this repository ➡️ 复制邀请函Pending Invite ➡️ 邀请函交给被邀请者 你:拿到邀请函 ➡️ 浏览器访问 ➡️ 接受邀请Accept invatation ➡️ 正常push
协作者:
- 在别人的项目GitHub页面fork一份到自己的远程库中:
Fork ➡️ 起Repository name ➡️ Create fork- 从自己远程库clone一份到自己的本地库中:
git clone ➡️ 修改 ➡️ 提交暂存区、本地库 ➡️ push到自己远程库- 或者直接GitHub页面修改提交
- 发起Pull request:
在自己远程库GitHub页面Pull requests ➡️ New pull request ➡️ 发送commit信息、comment ➡️ Create pull request
项目发起方:
- 查看拉取请求:
Pull requests ➡️ 选择拉取请求查看;- 查看comment和修改内容;
- conversation交流
- 合并对方代码到自己远程库中:
Merge pull request ➡️ Confirm merge
ssh-keygen -t rsa -C “自己的邮箱地址”
注:会在.ssh目录下生成id_rsa私钥文件和id_rsa.pub公钥文件
GitHub ➡️ 头像 ➡️ Setting ➡️ SSH and GPG keys ➡️ new SSH key ➡️ title起名 ➡️ 粘贴id_rsa.pub公匙 ➡️ Add SSH key
- 测试SSH连接:ssh -T [email protected]
- push或pull时使用SSH链接操作;
- 使用ssh-agent以跳过密匙链中的密码-官方文档
- 使用ssh-agent以跳过密匙链中的密码-图文
目的:忽略不参与服务器部署运行的与项目实际功能无关的文件;
方式:
创建忽略规则文件xxx.ignore(一般git.ignore)
*.class、*.log、*.jar、*.idea等:
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
>hs_err_pid*
>replay_pid*
>```
让~/.gitconfig文件引用.ignore忽略文件
[core]
excludesfile=/Users/USER/git.ignore
Idea项目中VCS工具栏 ➡️ Create Git Repository创建Git仓库
文件/项目右键 ➡️ Git ➡️ Add
右键文件 ➡️ Add(因为之前追踪过,可跳过Add直接提交) ➡️ Commit
- 查看版本:Idea左下角Git底栏 ➡️ Log日志 ➡️ 查看版本
- 切换版本:版本右键 ➡️ Checkout Revision ‘版本号’ 签出修订指定版本 / Checkout master
- 创建分支:
* 1⃣️ 项目右键 ➡️ Git ➡️ Repository ➡️ Branches ➡️ new Branch
* 2⃣️ Idea右下角master ➡️ New Branch- 切换分支:
Idea右下角master ➡️ 选择分支 ➡️ Checkout- 合并分支:
Share项目到GitHub
Git ➡️ GitHub ➡️ Share Preoject in GitHub ➡️ 输入远程库名、公开 / 私有、别名、通过哪个账号分享
注:这个操作相当于手动在GitHub里Create了远程库,并将项目Push到了远程库
推送Push本地分支到远程库
拉取Pull远程库内容
右键 ➡️ Git ➡️ Pull选择要拉取的别名链接 ➡️ 选取要拉取的分支
注意:Pull拉取远程库代码时,会包含Merge操作,所以会涉及合并冲突的场景,这时需要手动解决冲突才能拉取成功;
克隆clone远程库到本地
必要性:
GitHub服务器在国外,对国内用户不友好,Gitee码云服务器在国内,是开源中国基于GitHub推出的Git代码托管中心,使用方式和GitHub几乎一样,无,操作更快更稳定,而且是中文版;
码云官网:https://gitee.com
Gitee官网登陆状态下点击 + ➡️ 新建仓库
注:其他步骤和GitHub一样,参见上一章注:截止目前最新的gitee不能直接创建公开的仓库了,必须在创建仓库后通过「仓库设置」修改为公开;
➡️ Log In via Gitee… 使用邮箱-密码登陆Gitee
➡️ Log In with Token… 输入在Gitee账号中申请的Token
注:两种方式皆可
Share项目到Gitee(参考GitHub)
推送Push本地分支到Gitee远程库
- Push ➡️ 选择Define Remote 增加别名来使用码云的Https或SSH链接进行Push;
拉取Pull远程库内容(参考GitHub)
克隆clone远程库到本地(参考GitHub)
特色功能:导入GitHub的项目到Gitee实现迁移;