轻松玩转Git
- 快速入门
- 什么是Git
- 为什么要做版本控制
- 安装git
- Git实战
- 单枪匹马开始干
- 拓展新功能
- 小结
- 紧急修复bug
- 分支
- 紧急修复bug方案
- 命令总结
- 工作流
- 上传GitHub
- 第一天上班前在家上传代码
- 初次在公司新电脑下载代码
- 下班回到家继续写代码
- 到公司继续开发
- 在公司约妹子忘记提交代码
- 回家继续写代码
- 到公司继续写代码
- 其他
- 快速解决冲突
- 小总结
- 多人协同开发工作流
- 其他
- 配置
- 免密码登录
- git忽略文件
快速入门
什么是Git
Git是一个分布式的版本控制软件。
- 软件,类似于QQ、office、dota等安装到电脑上才能使用的工具。
- 版本控制,类似于毕业论文、写文案、视频剪辑等,需要反复修改和保留原历史数据。
- 分布式
- 文件夹拷贝
- 本地版本控制
- 集中式版本控制
- 分布式版本控制
为什么要做版本控制
要保留之前所有的版本,以便回滚和修改。
安装git
详见:https://git-scm.com/book/zh/v2/起步-安装-Git
Git实战
单枪匹马开始干
想要让git对一个目录进行版本控制需要以下步骤:
-
进入要管理的文件夹
-
执行初始化命令
git init
-
查看管理目录下的文件状态
git status注:新增的文件和修改过后的文件都是红色
-
管理指定文件(红变绿)
git add 文件名
git add .
-
个人信息配置:用户名、邮箱 【一次即可】
git config --global user.email "you@example.com"git config --global user.name "Your Name"
-
生成版本
git commit -m '描述信息'
-
查看版本记录
git log
拓展新功能
git add .
git commit -m '短视频'
git init
git add
git commit
git log
git reflog
git reset --hard 版本号
紧急修复bug
分支
分支可以给使用者提供多个环境,意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。
- 查看分支
紧急修复bug方案
命令总结
-
查看分支
git branch
-
创建分支
git branch 分支名称
-
切换分支
git checkout 分支名称
-
分支合并(可能产生冲突)
git merge 要合并的分支注意:切换分支再合并
-
删除分支
git branch -d 分支名称
工作流
上传GitHub
第一天上班前在家上传代码
首先,需要注册github账号,并创建远程仓库,然后再执行如下命令,将代码上传到github。
1. 给远程仓库起别名git remote add origin 远程仓库地址
2. 向远程推送代码git push -u origin 分支
初次在公司新电脑下载代码
1. 克隆远程仓库代码git clone 远程仓库地址 (内部已实现git remote add origin 远程仓库地址)
2. 切换分支git checkout 分支
在公司下载完代码后,继续开发
1. 切换到dev分支进行开发git checkout dev
2. 把master分支合并到dev [仅一次]git merge master
3. 修改代码
4. 提交代码git add . git commit -m 'xx'git push origin dev
下班回到家继续写代码
1. 切换到dev分支进行开发git checkout dev
2. 拉代码git pull origin dev
3. 继续开发4. 提交代码git add . git commit -m 'xx'git push origin dev
到公司继续开发
1. 切换到dev分支进行开发git checkout dev
2. 拉最新代码(不必再clone,只需要通过pull获取最新代码即可)git pull origin dev
3. 继续开发4. 提交代码git add . git commit -m 'xx'git push origin dev
开发完毕,要上线
1. 将dev分支合并到master,进行上线git checkout mastergit merge dev git push origin master
2. 把dev分支也推送到远程git checkout devgit merge master git push origin dev
在公司约妹子忘记提交代码
1. 拉代码git pull origin dev
2. 继续开发3. 提交代码git add . git commit -m 'xx'注:忘记push了
回家继续写代码
1. 拉代码,发现在公司写的代码忘记提交...git pull origin dev 2. 继续开发其他功能3. 把dev分支也推送到远程git add . git commit -m 'xx'git push origin dev
到公司继续写代码
1. 拉代码,把晚上在家写的代码拉到本地(有合并、可能产生冲突)git pull origin dev 2. 如果有冲突,手动解决冲突3. 继续开发其他功能4. 把dev分支也推送到远程git add . git commit -m 'xx'git push origin dev
其他
git pull origin dev
等价于
git fetch origin dev
git merge origin/dev
快速解决冲突
-
安装beyond compare
-
在git中配置
git config --local merge.tool bc3 git config --local mergetool.path '/usr/local/bin/bcomp' git config --local mergetool.keepBackup false
-
应用beyond compare 解决冲突
git mergetool
小总结
-
添加远程连接(别名)
git remote add origin 地址
-
推送代码
git push origin dev
-
下载代码
git clone 地址
-
拉取代码
git pull origin dev 等价于 git fetch origin dev git merge origin/dev
-
保持代码提交整洁(变基)
git rebase 分支
-
记录图形展示
git log --graph --pretty=format:"%h %s"
多人协同开发工作流
其他
配置
-
项目配置文件:项目/.git/config
git config --local user.name '武沛齐' git config --local user.email 'wupeiqi@xx.com'
-
全局配置文件: ~/.gitconfig
git config --global user.name 'wupeiq' git config --global user.name 'wupeiqi@xx.com'
-
系统配置文件:/etc/.gitconfig
git config --system user.name 'wupeiq' git config --system user.name 'wupeiqi@xx.com'注意:需要有root权限
应用场景:
git config --local user.name '武沛齐'
git config --local user.email 'wupeiqi@xx.com'git config --local merge.tool bc3
git config --local mergetool.path '/usr/local/bin/bcomp'
git config --local mergetool.keepBackup falsegit remote add origin 地址 ,默认添加在本地配置文件中(--local)
免密码登录
-
URL中体现
原来的地址:https://github.com/WuPeiqi/dbhot.git 修改的地址:https://用户名:密码@github.com/WuPeiqi/dbhot.gitgit remote add origin https://用户名:密码@github.com/WuPeiqi/dbhot.git git push origin master
-
SSH实现
1. 生成公钥和私钥(默认放在 ~/.ssh目录下,id_rsa.pub公钥、id_rsa私钥)ssh-keygen 2. 拷贝公钥的内容,并设置到github中。 3. 在git本地中配置ssh地址git remote add origin git@github.com:WuPeiqi/dbhot.git4. 以后使用git push origin master
git忽略文件
让Git不再管理当前目录下的某些文件。
*.h
!a.h
files/
*.py[c|a|d]