git/github/gitee快速使用+详细语法教程 万字长文
总结了Git版本控制系统的核心操作指南,包括基础配置、分支管理、远程仓库操作等关键内容。重点介绍了:1. 基础操作流程(init/add/commit/push/pull);2. 分支管理策略(创建/切换/合并/删除);3. 远程仓库连接与同步方法;4. 冲突解决技巧;5. 版本标签管理。特别说明团队协作时的分支规范(master/develop/feature等分支作用),并提供了常用命令示例和
快速使用请看结尾
git基本操作
先创建git 文件夹
1、git init 初始化仓库
git init
在某个目录下初始化仓库后会自动产生.git目录,改目录下工作的所有文档可使用git进行管理
2、git status查看文件、分支状态
git status
3、git add/rm 将指定的文件提交到暂存区
git add <文件名> 将指定文件(任意文件类型的文件)提交到暂存区
git add * 将当前目录下所有的文件提交到暂存区
注意:
提交到暂存区的文件没有存放在本地仓库中
git rm --cache <文件名> 删除暂存区的指定文件
4、git commit 将暂存区的文件提交到本地仓库
git commit -m <提交说明> 将文件同步到本地仓库并且设置提示说明
注意:
一般提示时需要附加一些同步信息,在-m后添加
所有对工作区的修改,如果想同步到仓库,都需要执行当前命令(add --> commit)
5、git log 查看commit日志
git log 查看所有cimmit日志
git log --pretty=oneline 查看单行日志
前七位有效

6、git diff比本地文件和本地仓库中文件的区别
git diff <文件名>
7、git push
将本地仓库中的内容和gitee上远端仓库的内容保持一致。
git tag 创建标签 版本管理
-
标签:在当前工作的位置添加快照,保存工作状态,一般用于版本的迭代
git tag <标签名称> 创建标签,最新版本
git tag <标签名称> -m <提示信息> 创建标签并设置提示信息
例如:git tag v1.0
默认是在最新的commit id处创建标签
1、git tag创建标签
git tag <标签名称> <commit id> 指定某一个commit id处创建标签
-
查看标签
git tag
2、git tag -d 删除标签
git tag -d <标签名称>
3、git show <标签名称>
-
查看指定标签的具体信息
4、git reset 恢复到指定标签的位置
git reset --hard <标签名称>
git stash 临时工作区管理
查看哪种算法更好用
-
创建保存临时工作区
git stash
-
查看临时工作区
git stash list
-
使用指定的工作区
git stash apply stash@{编号}
-
使用最新的临时工作区并删除
git stash pop
-
删除指定的临时工作区
git stash drop stash@{编号}
-
删除所有的临时工作区
git stash clear
项目分支介绍
分支主要用于多人协作工作,分支即获取原有代码,在此基础上创建自己的工作环境,单独开发,不会影响其他分支的操作,开发完成后再统一合并到主线分支中
创建分支的好处:安全,不影响其他人工作
-
分支的分类
project(项目库)
master(主线分支)
hotfix(线上紧急bug修复分支)
develop(开发分支)
feature(功能分支)
release(发布分支)
bugfix(bug修复分支)

长期分支
1、master:主线分支
记录项目主线版本的开发迭代过程,该分支是已发布的稳定的产品版本。
master分支的权限由版本管理员统一进行管理,除版本管理员外,其他任何人不允许向master分支合并代码。
其他分支需要向master分支合并代码时,首先提出合并请求,然后由版本管理员合并到master分支,合并后,版本管理员应立即添加版本号,发布随时可用的产品版本;每向master分支合并一次,产品版本号就会增加一次
2、develop开发分支
记录所有开发人员日常工作的成果,该分支是相对稳定的开发版本
develop分支的合并操作由研发主管和版本管理员共同管理,不允许开发人员将自己的代码直接合并到develop分支,也不允许开发人员在develop分支上直接进行开发工作,一经发现严肃处理
注意:一个项目库只能有一个master分支和一个develop分支
项目库创建后,由版本管理员从master分支创建develop分支,项目组所有成员需要克隆服务器上的项目库到本地,然后再从develop分支创建自己的feature分支进行工作
短期分支
项目库中存在的短期分支有:feature、release、bugfix和hotfix。
1、feature:功能分支
用于开发新的功能;
所有新功能的开发都要先创建feature分支,然后再进行开发工作,feature分支由开发人员从develop分支创建,不同的功能需创建不同的feature分支
2、release:发布分支
用于产品发布准备;
新功能开发完成后需要发布产品新版本时,要创建release分支进行发布准备,release分支由版本管理员从develop分支创建
3、bugfix:bug修复分支
用于修复不紧急的bug;
系统测试过程中发现bug,开发人员需要从release分支创建bugfix分支进行修改,不允许开发人员在release分支上直接修改bug
4、hotfix:线上紧急bug修复分支
用于修复产品发布后出现的紧急bug
产品上线后,在客户现场出现问题,需要马上解决时,由开发人员从master分支创建hotfix分支进行紧急修复
分支命令操作
1、git branch 查看当前分支
git branch
注意:前面有*的分支表示当前正在工作的分支
2、创建一个分支(默认在主分支创建)
git branch <分支名称>
分支名不能加空格可以加斜杆、中文、其他字符
3、git checkout切换工作分支
git checkout <分支名称>
4、创建并切换到新的分支
git checkout -b <分支名称>
主要用于在创建的分支基础上在创建分支

5、git merge将指定的分支合并到当前所在的分支
git merge <分支名称>
-
若合并无冲突,Git 会自动创建一个合并提交(或快速合并),直接更新当前分支。
-
若存在冲突,需手动解决冲突后提交。
例子:将beta分支合并到main分支
具体步骤:
1、切换并确认目标分支
git checkout main # 切换到接收合并的分支(main)
git branch # 查看当前分支(确认*指向main)

2、分支合并的两种模式
1、快速合并
git merge beta
-
特点:无新提交,仅移动分支指针,历史记录线性但丢失分支结构,不利于回溯分支合并历史。
2、禁用快速合并(--no-ff)
git merge --no--ff beta
-
特点:强制创建新的合并提交,保留分支结构,历史更清晰。
-
注意:执行后会进入 Vim 编辑器,需填写合并说明后保存退出(
:wq)。


若想默认使用 --no-ff 模式,可全局配置:
git config --global merge.ff no
此后直接执行 git merge beta 即默认禁用快速合并。
合并冲突问题:
不同的分支里,改了同一个文件,那么合并代码的时候,就会有一个问题?到底该采用哪个分支的代码为准呢?
当 Git 提示冲突时,你可以先通过git status查看哪些文件存在冲突,这些文件会被标记为both modified。
需要人为的选择,然后在进行add和commit的操作
所以在创建分支前,尽量保证当前分支是干净的,以减少冲突的发生

没有冲突的文件被放进了暂存栏目下,而合并栏目下,是存在冲突代码的文件。
<<<<<<< HEAD 当前分支(比如master)的代码 ======= 要合并的分支(比如feature)的代码 >>>>>>> feature
-
你需要根据需求决定:
-
保留当前分支代码:删除
=======到>>>>>>> feature之间的内容,以及冲突标记<<<<<<< HEAD、=======、>>>>>>> feature。 -
保留合并分支代码:删除
<<<<<<< HEAD到=======之间的内容,以及所有冲突标记。 -
合并两者代码:手动整合两边的逻辑,再删除冲突标记。
-
解决冲突后,通过git add <冲突文件名>将文件标记为已解决(放入暂存区)。
完成合并最后执行git commit完成合并(Git 会自动生成合并提交信息)。
6、git branch删除指定的分支
git branch -d < 分支名称>
注意:
如果删除的分支没有合并,是不能用当前命令删除的
使用-D删除,表示强制删除指定分支
远程仓库
1、什么是远程仓库
另一台主机上的仓库,可以被其他主机访问到
2、创建远程仓库
创建文件夹
mkdir <目录名>
3、设置文件夹的属主
chown <用户名>:<组名> <目录名>
4、进入文件夹,将该文件夹设置为共享仓库
git init --bare <项目名称>
(项目名称一般都是以.git结尾)
5、设置本地仓库的属主
chown -R <用户名>:<组名> <项目名称>
(3)添加远程仓库别名,这个名字就可以找到仓库的位置
git remote add <仓库名称> <用户名>@<ip地址>:<共享仓库的绝对路径>
git remote add my_share edu@ip:/home/edu/work/linux/6/01_git
注意:
默认使用ssg作为传输手段,仓库名称可以任意起名字
必须在本地的某个git仓库下执行,才能是本地仓库和远程仓库关联
(4)删除远程仓库
git remote rm <仓库名称>
(5)将本地仓库的文件推送到远程仓库
git push -u <远程仓库名> <要推送的分支>
注意:第一次推送需要加-u,以后不需要
(6)从远程仓库获取项目
git clone <用户名>@<ip地址>:<共享仓库的绝对路径>
(7)从远程仓库拉取分支或者代码,可以更新代码
git pull <远程仓库名> <远程分支名> 拉取远程仓库指定的分支并且与当前分支合并
git pull <远程仓库名> <远程分支名>:<本地分支名> 不合并
(8)代码推送和更新
git push 将本地仓库的文件推送到远程仓库
git pull 从远程仓库中更新代码
git fetch 也用于更新,但是如果有新的分支不会合并
(9)本地旧覆盖版远程新
git push --force <远程仓库名> 当本地比远程旧,用本地覆盖远程
命令行操作gitee仓库
(1)连接远程github仓库,如果输入密码,输入github密码即可
git remote
(2)操作远程仓库
git push
注意如果:远程仓库 提前创建好了readme 请作如下修改:
git pull --rebase origin master
git push -u origin master
关于在本地建立一个git中心仓库,用来管理代码例子:
1、在需要管理的文件夹下执行下面命令: git init 和 git add . git commis -s ;
2、在需要存放git仓库的目录执行:git clone --bare (上面对应的目录)
3、在任意目录即可通过 git clone 下载这个仓库了
1、快实现上传代码到github
fatal: 远程 origin 已经存在:此时只需要将远程配置删除,重新添加即可;
git remote rm origin
git pull origin master
第一次将Linux中的项目传到gitee仓库:
Cd 到仓库 查看是否有.git 文件
git init // 初始化
git add * // * 代表添加当前文件夹下所有文件到暂存区
git commit -m "first commit" // 把添加的文件提交到版本库,并填写提交备注
git remote add my_work git@gitee.com:mengmengxiangxiang/remoye.git
//建立远程链接,ssh模式,my_work 是名字,拷贝仓库的那两条
git push -u my_work master // 将代码上传
后续更新提交ll
git add. // .代表添加文件夹下所有文件
git commit -m "第一次提交" // 把添加的文件提交到版本库,并填写提交备注
git push // 将代码上传
git pull
这行代码的意思就是从远端仓库拉取最新版本仓库到本地。意思就是,有可能现在远端仓库里被其它分支更新过了,导致你现在分支的仓库比较落后,也就不同步了。当然,如果你的远端仓库只有你现在一个分支,也可以不用这个操作。
sudo apt-get install git //安装git
git config 配置
git config
三种级别的配置
(1)系统中所有的用户都可以使用该配置
git config --system 配置信息
配置文件是:/etc/gitconfig、
(2)当前用户可使用该配置
git config -- global 配置信息
配置文件是:~/.gitconfig
(3)当前项目可使用该配置
git config
配置文件是:当前项目下的 ./.git/config
配置信息
(1)配置用户名
git config --system user.name you
(2)配置邮箱
git config --system user.email you@1000phone.com
(3)配置编辑器 //依赖于项目
git config core.editor vim
(4)查看当前所有的配置信息
git config --list
工具推荐
git history
更多推荐
所有评论(0)