- 优质笔记:www.liaoxuefeng.com/wiki/896043…
- 1.git安装pc.qq.com/detail/13/d…
- 2.打开git操作窗口:在项目路径下,点击鼠标右键会看到git bush here
- 3.本地仓库初始化:git init
- 4.查看本地文件状态(红色的是未提交的文件):git status
- 5.将本地文件传送至暂存区:git add 文件名/*
- 6.查看本地文件状态(绿色是已经提交到暂存区的文件): git status
- 7.将暂存区文件提交到本地仓库:git commit -m"提交信息"
- 8.如果未创建GitHub云端仓库,则继续,否则跳至11步:
- 9.GitHub注册账号:
- 注意事项:邮箱不能用qq邮箱,qq邮箱接受不了验证消息
- 配置ssh:只有你添加的信任的主机的ssh密钥才可以修改文件
生成ssh密钥: git bash输入:$ ssh-keygen -t rsa -C "youremail@example.com" 一路回车即可;
- 如果成功了,那就再C盘用户文件夹中有一个.ssh文件夹,找到里面的id_rsa.pub文件复制出来
- 进入GitHub---setting--SSH and GPG keys--配置ssh,标题随意;
- 配置完以后,只有你添加了ssh的电脑才能提交文件;
- 10.在GitHub上创建云端仓库,仓库建完后默认会有提示代码,包括3-7步的操作;
- 11.将本地仓库和云端仓库连接:git remote add origin(默认的,可以自定义云端仓库名)+ 云端仓库地址(点击克隆/下载里面有)(https://github.com/gjbbd/testlp.git)
- 12.将本地仓库推送至云端仓库:git push -u origin master/分支名
- 如果出现failed to push some refs to 地址问题:
- 1.git pull --rebase origin master
- 2.git push -u origin master
- 13.后面的提交云端的操作将跳过8-12步,直接git push origin 分支名
- 14.查看提交日志(时间由近到远):git log
- 点按q退出当前日志,如果出现输入不显示的问题,那么就输入reset后就好了;
- git log -1: 显示最近一次的日志
- 15.查看当前本地文件列表:git ls-files 或 ls
- 16.将本地文件版本回退到以前的版本:
- 回退到上一个:git reset --hard HEAD^
- 回退到前n个版本:git reset --hard HEAD~n
- 17.如果版本回退后又想反悔了/回退错了:
- 查看操作指令历史记录确定要回退的指令id:git reflog
- 回退的操作:git reset --hard 指令id:例如$ git reset --hard 8d998ad
- 回退完以后文件内容会自动替换为指定版本时的文件内容:cat 文件名;
- 18.撤销修改:
- 修改了但未添加到暂存区:丢弃工作区的所有修改:git checkout -- 文件名
- 修改了并且添加到暂存区:丢弃暂存区的修改重新放回工作区:git reset HEAD 文件名
- 修改了并且提交到本地版本库了:使用步骤16来撤销本次操作
- 19.删除文件:
- 从本地仓库/版本库删除文件:git rm 文件名
- 恢复删除文件:
- 第一步:git reset HEAD 文件名
- 第二部:git checkout 文件名
- 20.从云端克隆文件:
- 多人协作开发,需要每个人都从远程克隆一份
- 克隆指令:git clone 仓库地址(https://github.com/gjbbd/testlp.git)
- 21.分支定义和基本操作:
- 定义:分支就是每位开发者自己工作的办公区。试想一下:如果你的办公区正在进行一项业务的某一部分,你的工具摆的一整个办公区都是就不行了,你手上的工作没有干完其他人就没办法干活;但是当把整个工作区划分为小块时,你们各自有各自的办公区,互不干扰,同时进行,等所有人都干完了属于自己的那部分业务时,再统一到一个办公区进行组装;
- 创建分支:
- 创建分支并切换到该分支:
- git checkout -b 分支名 或者 git switch -c 分支名
- 创建分支:git branch 分支名
- 切换分支: git checkout 分支名 或者 git switch 分支名
- 查看当前分支:git branch 当前选中的分支前会加*
- 切换分支:git branch 分支名 或者 git switch 分支名
- 合并分支:git merge 要被合并的分支名
- 删除分支:git branch -d 分支名 注意:删除分支前要将分支切换
- 22.解决冲突:
- 23.分支的合并:
- 使用普通模式合并,保存合并信息:
- git merge --no-ff -m"合并信息" 合并的分支名
- 24.提交bug修复代码:
- 如果当前没有正在干到一半的工作:
- 1.先将当前未完成工作区暂存起来:git stash
- 2.确认要在哪个分支上修复bug,假定从master上修复:
- 2.1:切换分支到master:git switch master
- 2.2:在master分支新建一个新的分支用来提交修复代码:git branch 新分支 然后切换到新分支 git switch 新分支;
- 2.3:提交代码到新分支:git add 文件; git commit -m"message";
- 2.4:切换到master分支,合并代码:git switch master ; git merge --no-ff -m"msg" 新分支名
- 3.查看当前暂存区的内容:git stash list
- 4.返回前面暂存的工作区:git switch 暂存分支名; git stash pop恢复的同时删除stash暂存区内容
- 5.若修复的bug也需要合并到当前的分支,可以把bug提交的修改复制到当前分支:git cherry-pick 命令id(输入git reflog日志中找commit bug的id)
- 6.删除为提交bug而新建的分支:git branch -d 新分支名;
- 25.提交新功能代码-feature分支:
- 1.新建一个分支并切换到该分支在上面开发新功能:git checkout -b 分支名 ;
- 2.开发完毕,提交代码:git add 文件名; git commit -m"message";
- 3.切回开发分支dev(dev为开发分支,master为正式版本提交分支):git switch dev;
- 4.放弃开发的分支,强行删除:git branch -D 新功能分支名
- 5.并分支文件到dev:git merge --no-ff -m"msg" 新功能分支名
- 6.如果已经合并了,那么就git rm 文件名
- 26.多人协作(切记要将开发者的所有电脑的ssh都绑定到同一个GitHub上):
当你从远程仓库克隆时,实际上Git自动把本地的
master
分支和远程的master
分支对应起来了,并且,远程仓库的默认名称是origin
。要查看远程库的信息:git remote 或者 git remote -v显示详细信息
推送本地分支到云端:git push origin 分支名 ; 推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上
如果推送失败,先用
git pull
抓取远程的新提交;- 如果
git pull
提示no tracking information
,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
。 git pull---git status---git add 文件名---git commit -m"msg"---git push origin 分支名
分支是否推送:
master
分支是主分支,因此要时刻与远程同步;dev
分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
- 27.标签管理:
- 作用:作为指向某个commit的指针,commit号不方便记忆,使用tag就相当于给commit起别名;
- 查看所有的标签:git tag
- 注意事项:查看标签时标签的显示顺序为字母排序不是时间
- 查看某个标签的详情:git show 标签名
- 创建标签:
- 将分支切换到哟啊打标签的分支
- git tag 标签名
- 如果给已经提交了的文件补充标签:
- 查看log记录,并找到相应的commit 的 id:git log --pretty=oneline --abbrev-commit
- 补充标签: git tag 标签名 id
- 创建带有说明的标签,用
-a
指定标签名,-m
指定说明文字: - git tag -a 标签名 -m"说明文字" id
- 删除标签:
- 删除本地标签:
- git tag -d 标签名
- 创建的标签都只存储在本地,不会自动推送到远程。打错的标签可以在本地安全删除。
- 删除远程标签:
- 先从本地删除:git tag -d 标签名
- 再从远程删除:git push origin :refs/tags/标签名
- 推送标签到远程:
- 推送单个标签到远程:
- git push origin 标签名
- 推送所有标签到远程:
- git push origin --tags
- 28.码云使用:
- 生成并添加SSH公钥;
- 关联本地和云端仓库--操作同步骤9(GitHub)git remote add 远程库地址
- 关联库--冲突解决(远程库重名已存在):
- 方法一:删除已有库
- 如果关联失败,则查看远程库信息:git remote -v
- 删除已有的其他远程库:git remote rm origin
- 再关联码云库
- 方法二:更改云端库名称--多库共存
- 删除默认关联的origin库(选择性操作): git remote rm origin
- 先关联删除的GitHub远程库:git remote add 自定义远程库名 远程库地址
- 再关联码云远程库:git remote add 自定义远程库名 远程库地址
- 提交代码:
- 提交到GitHub:git push github master
- 提交到码云库:git push mayun master
- 29.指定某些特殊/机密文件被忽略不要上传:
- 在Git工作区的根目录下创建一个特殊的
.gitignore
文件(Windows需要使用另存为来新建这种文件),然后把要忽略的文件名填进去(new.txt),Git就会自动忽略这些文件。 - 提交.gitignore文件:git add .gitignore git commit -m".g"
- 查看本地库状态:git status 如果为空不显示new.txt则成功;
- 或者试着提交new.txt文件,不能提交为成功
- 30.强制上传被忽略的文件:
- git add -f 文件名
- 31.给指令配置别名,简化操作:
- 修改单个指令:
- 拿git status 举例: git config --global alias.别名 status
- 修改多个指令:
- 拿reset HEAD举例:git config --global alias.别名 "reset HEAD"
- 32.搭建git服务器:www.liaoxuefeng.com/wiki/896043…
- 完结。