一.Git简介与安装
1.1-Git简介
- Git是一个免费的、开源的`分布式版本控制系统`,被广泛应用于各种软件项目的版本管理和协作中。
Git 的核心概念和特点
- 分布式版本控制:Git 是分布式的,每个工作副本(或者称为克隆)都包含完整的版本历史记录。每个开发者都可以在本地工作,不需要依赖网络即可进行版本控制操作。
- 版本管理:Git 记录每次提交的变更,允许开发者回溯、比较不同版本,甚至撤销不必要的修改。
- 支持分支管理:分支是 Git 的一个核心概念,允许开发者独立线上工作,同时进行多个功能开发而不会干扰主线的开发。分支可以轻松地创建、合并和删除,如果某个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始即可,团队协作更加灵活和高效。
- 高效的协作:Git 提供了多种协作模式,例如通过远程仓库共享代码、合并请求(Pull Request)的审查和讨论等,有助团队的有效沟通和合作。
- 本地化操作:大部分 Git 操作都可以在本地完成,响应速度很快。只有在需要与远程仓库同步或者分享代码时才需要网络连接。
- 灵活的工作流程:Git 允许根据项目的需要定制不同的工作流程,例如集中式工作流、Git flow 等,以适应不同的开发模式和团队规模。
Git 的基本工作流程
- 初始化仓库:通过
git init
命令初始化一个新的 Git 仓库,或者通过git clone
命令克隆一个已有的仓库到本地。 - 添加和提交文件:使用
git add
将文件的修改添加到暂存区,然后使用git commit
提交这些修改到本地仓库。 - 分支操作:使用
git branch
查看、创建或删除分支;使用git checkout
切换分支;使用git merge
合并分支等。 - 远程操作:使用
git remote
管理远程仓库;使用git fetch
获取远程仓库的更新;使用git pull
获取并合并远程仓库的更新;使用git push
将本地提交推送到远程仓库等。 - 版本回溯和比较:使用
git log
查看提交历史;使用git diff
比较文件或者提交之间的差异等。
1.2-Git下载安装
官网下载地址:Git - Downloads
二.仓库操作
2.1-创建码云仓库
注册登录码云后选择新建仓库
创建格式如下,下面那三个多选框一般不需要勾选
看到这个页面说明创建成功
2.2-创建本地仓库
有了远程仓库,我们还需要创建本地git仓库,不一定要新建一个目录,也可以将本地目录进行git初始化,此时目录就成了本地git仓库,同时目录下还会新增一个.git文件。
进入要初始化的文件夹目录,右键选择开启Git Bash,输入 git init 命令即可完成本地git仓库初始化:
2.3-代码上传
回到码云创建成功页面,按照教程进行,先进行Git 全局设置
如果是第一次创建仓库,复制创建 git 仓库里的代码就行,有仓库就复制已有仓库里的
- git add -xxx是选中文件;
- git commit -m “xxx” 是提交,xxx”是为本次提交命名;
- git remote add origin xxx 的作用是添加远程仓库地址,设置origin为远程仓库的别名;
- git push 为上传文件,-u设置上流分支,之后上传时,默认使用-u后面的分支为上传目标分支,之后上传直接git push即可,master为主分支,它是新建仓库时的默认分支;
创建成功可以看见代码里新增一个README.md文件
三.Git常用命令
git init # 初始化本地git仓库(创建新仓库)
git config --global user.name "xxx" # 配置用户名
git config --global user.email "xxx@xxx.com" # 配置邮件
git status # 查看当前版本状态(是否修改)
git add xyz # 添加xyz文件至暂存区
git add . # 增加当前子目录下所有更改过的文件至暂存区(超级常用)
git commit -m 'xxx' # 提交到本地仓库区(超级常用)
git commit -am 'xxx' # 将add和commit合为一步
git log # 查看历史记录
git relog # 查看历史记录(可以提供版本号)
git reset --hard 版本号 # 跳转指定版本
git diff # 显示所有未添加至暂存区的变更
git diff --cached # 显示所有已添加暂存区但还未commit的变更
git diff HEAD^ # 比较与上一个版本的差异
git diff origin/master..master # 比较远程分支master上有本地分支master上没有的
git diff origin/master..master --stat # 只显示差异的文件,不显示具体内容
git branch # 显示当前本地分支
git branch xxx # 创建名为xxx的本地分支
git checkout xxx # 切换到名为xxx的本地分支
git branch --merged # 显示所有已合并到当前分支的分支
git branch --no-merged # 显示所有未合并到当前分支的分支
git branch -m master master_copy # 本地分支改名
git checkout -b master_copy # 从当前分支创建新分支master_copy并切换到该分支
git checkout -b devel origin/develop # 从远程分支develop创建新本地分支devel并切换到该分支
git merge xxx # 合并xxx分支至当前分支
git push origin master # 将当前分支push到远程master分支
git fetch # 获取所有远程分支(不更新本地分支,另需merge)
git pull origin master # 获取远程分支master并merge到当前分支
git mv README README2 # 重命名文件README为README2
git branch -D hotfixes/BJVEP933 # 强制删除分支hotfixes/BJVEP933
git whatchanged # 显示提交历史对应的文件修改