码云:Gitee - 基于 Git 的代码托管和研发协作平台
为什么要用git?
- 现实编码中涉及好多修改,你记不住。-git可以跟踪历史版本。
- 可以更好进行团队协作开发-提交历史,版本修改,代码冲突问题。
创建仓库并拉取:码云(国内),Github(国外),Gitlab(国外)
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。如果不想每次提交git都输入用户名和密码,如何操作?
方法一(全局设置用户):(全局保存用户名和邮箱)
git config --global user.name "Your Name" // Your Name 是你的码云的用户名
git config --global user.email "[email protected]" // [email protected] 是你的码云上绑定的邮箱
方法二(生成ssh公钥)
// 生成ssh公钥
ssh-keygen -t rsa -C "邮箱地址"
// 生成地址一般默认是在(C:\Users\dell\.ssh\id_rsa.pub)
// 查看公钥
cat ~/.ssh/id_rsa.pub
// 查看后复制到自己的Git帐号的SSH公钥设置中(!!!注意查看命令,要在 Git Bash Here里才有效)
注意:完成以上两种方法后:
查看所以配置项,看看有没有user.name,user.email这两个配置:
git config --list
!!!克隆仓库的时候,会让你输入Git仓库的登录账号和密码(输入这一次就可以了,后面就不需要再进行输入了)
克隆仓库:
// 克隆所有
git clone url
// url 是仓库的地址
// 克隆指定分支
git clone -b dev url
// url 是仓库地址
// dev 是分支的名称
Git基本操作:
本地仓库推到远程仓库(!!!注意本地仓库里不能有空文件夹(因为空的文件是不会推到远程仓库),不能有多个 .git 文件,推到远程仓库之前需要先拉取)
git init
// 初始化本地仓库
git remote add origin url
// url 仓库地址 关联远程仓库
git pull origin master
// master 拉取的分支名 拉取分支
git add txt
// txt 文件名 提交到暂存区 【git add -A 或git add . 提交本地全部文件】
git status
// 查看当前提交状态
git commit -m text
// text 提交说明的字符 提交说明
git push origin master
// master 分支名 提交到远程仓库
git push --set-upstream origin master
// (省略形式为:git push -u origin master
// 或者先关联远程库 git remote add origin url // url 仓库地址
// 然后每次提交用 git push origin master // master 分支名 提交到版本库)
团队合作开发的话,我们一般是用分支的(分支:每个人同的模块)
- 需要先拉取远程仓库的分支:查看本地分支与远程分支是否一致
- 然后把自己分支推送到远程仓库
- 合并分支:每个人加入到对方的分支中
分支操作基本流程:
新建分支 → 进入分支(在分支上开发(书写代码))→ 提交子分支 → 进入主分支(将子分支合并到主分支上) → 提交主分支
git branch child
// child 创建分支名
git branch
// 查看当前分支 前面带 * 并且会有高亮
git checkout master
// master 要切换的分支名
git merge child
// child 需要合并的分支 会合并到当前分支
git push origin child
// 推到远程子分支
git push origin master
// 推到远程主分支
// 注意!!!git pull origin master 推之前先拉取分支
分支其他命令:
- 查看所有分支
git branch -a
- 查看本地分支
git branch
- 创建并切换分支(加 -b 表示创建并切换)
git checkout -b child // child 分支名
- 切换回分支
git checkout child // child 分支名
- 从主分支里创建新分支
git checkout master -b child // master 主分支 child 新分支名
- 合并某分支到当前分支
git merge child // child 需要合并的分支名 会合并到当前分支
- 删除分支 - 不要在当前分支下,否则删除不了
git branch -d child // child 分支名git branch -D child // child 分支名 强制删除分支
- 删除远程分支
git push origin --delete child // child 分支名
Git 使用时造成的冲突:
本地合并冲突:
分支与分支之间的冲突(修改了同一个地方,但是Git不知道以谁为主,一般情况下是以最后提交的为主)。
问题描述:(冲突的地方:Head代表的是当前分支,login代表的是另一个分支)
< < < < < < < Head
1
=========
2
> > > > > > > login
解决方法:
- 把多余的删掉,留下最新的
- 然后使用:git add . ,git commit ,git merge 最后合并另一个分支到当前分支
远程合并冲突:
多个分支向同一个远端分支推送代码。
跟本地冲突解决方法一样,修改的时候要与另一个合并分支的人进行沟通,看说的代码时最合适的,最好的,就用谁的。
回滚问题,
git diff // 提交历史号,可以查看冲突地方
git log // 查看版本号
git reflog // 查看所有历史信息,包括删除的
git reset --hard 版本号 // (版本号不用复制全,前7位字母就可以了) 回滚到某个版本号
// 还有一下2种方法可以回滚版本号
git reset --hard HEAD // 回滚到最新版本
git reset --hard HEAD~1 // 回滚到相比与最新版本的其次1个版本(1 可以设置任意正整数)
git push -f origin 分支名 // 强制删除远程分支(删除24小时内的)
Git的三个区:
- 工作区:自己可以在电脑上看到的目录,工作的文件
- 暂存区:工作区需要提交的文件修改都会放在暂存区,然后一次性提交暂存区的所有文件到远程稳定版本区(优点:作为过渡层,避免误操作,保护工作区和版本区,分支处理)
- 版本区(库):稳定版本区,远程仓库
版权归原作者 ٨ـﮩﮩ٨ـ玖玥ﮩ٨ـﮩ٨ 所有, 如有侵权,请联系我们删除。