Git操作


文章目录


一、centos安装

1.查看版本-git --version

复制代码
git --version

2.卸载-sudo yum remve git -y

复制代码
sudo yum remve git -y

3.下载-sudo yum install git -y

复制代码
sudo yum install git -y

二、基本操作

1.创建本地仓库-git init

复制代码
git init

2.配置本地仓库-git config

需要配置name和email,name是主页@后内容,email是账号邮箱

配置name和email,只在当前仓库中

复制代码
git config user.name "aaa"//创建name为aaa
git config user.email "[email protected]"//创建email为[email protected]

查看配置内容

复制代码
git config -l

删除配置,只在当前仓库中

复制代码
git config --unset user.name
git config --unset user.email

配置name和email,在所有本地仓库中

复制代码
git config --global user.name "aaa"//创建name为aaa
git config --global user.email "[email protected]"//创建email为[email protected]

删除配置,在所有本地仓库中

复制代码
git config --global --unset user.name
git config --global --unset user.email

3.工作区,暂存区,版本库

创建的文件都是在工作区,文件add之后到缓存区,文件commit之后到版本库

4.添加到暂存区中-git add

复制代码
//将当前路径下所有文件添加到暂存区中
git add .
//将文件1添加到暂存区中
git add 文件1
//将123添加到暂存区中
git add 123

5.添加到版本库中-git commit

复制代码
//-m用于提交缓存区文件,"测试程序"是日志
git commit -m "测试程序"

6.打印日志-git log

复制代码
git log

commit b9e3a0d708ee5a81ea5ff383c6dabe716eec8cf1 (HEAD -> master)
Author: StephenZhou <[email protected]>
Date:   Tue Dec 29 12:15:13 2020 +0800
 test add new file "test.c"
  1. commit后是id,head->表示指向哪,master是主仓库,head->分支仓库则代表提交到分支仓库
  2. Author是提交者,显示格式是:用户名 <邮箱>
  3. Date的意思是提交时间
  4. 注释

7.查看提交后文件是否改动-git status

复制代码
git status//查看本地文件提交情况

8.版本回退-git reset

第一步git log查看版本,之后git reset回滚

要回滚id,是commit后面的id,调用git log可以看到

本质是回退的版本库内容

复制代码
git reset --soft 要回滚id//只回退版本库
git reset --mixed 要回滚id//只回退版本库,缓存区,回退默认
git reset --hard 要回滚id//只回退版本库,缓存区,工作区

9.查看提交历史-git reflog

凡是对仓库版本进行迭代的都会出现在这个里面,包括你回滚版本都会出现在这个历史中,下面橙色字就是我们需要id

复制代码
git reflog

10.撤销修改-git checkout

代码只在工作区

复制代码
git checkout -- file//将file文件恢复到上次提交状态

代码在工作区,缓存区

复制代码
git reset --hard HEAD file//回退file到当前版本

代码在工作区,缓存区,版本区,前提条件没有push即可

复制代码
git reset --hard HEAD^ file//回退file到上一个版本

11.删除文件-git rm

复制代码
git rm file//删除file文件
git commit -m "delete file//删除文件后需要commit一下

三、分支管理

1.查看当前分支-git branch

复制代码
git branch//列出本地分支
git branch -a//列出本地和远程分支

2.创建分支-git branch

复制代码
git branch dev//创建dev分支

3.切换分支-git checkout

复制代码
git checkout master//切换为master分支

4.合并分支-git merge

想要把分支提交至master,只需要切换到master仓库,并执行git merge 分支名,前提是合并分支前已经提交

复制代码
git checkout master//切换为master分支
git merge dev//将dev分支合并到master分支

合并冲突

原本master分支有一个文件内容是aaa,然后创建新分支dev,将文件内容修改为bbb,master分支将文件内容修改为ccc,此时如果将dev合并到master当中就会发生冲突,此时需要手动解决,将冲突的内容删除,例如只能保留ccc或者bbb,并且删除后要提交一次

5.删除本地分支-git branch -d

其中把d改成D就是强制删除,注意,删除分支1不能在分支1中删除,必须切换到分支2时,删除分支1

复制代码
git branch -d 分支名

6.删除远程分支-git push origin --delete

复制代码
git push origin --delete 远程分支名

7.修改分支名称git branch -m

复制代码
git branch -m 分支名 新的分支名

8.保存当前工作-git stash

复制代码
git stash

在当前工作区1执行完之后,可以切换别的分支工作区2,之后再切回来工作区1的时候,执行以下代码,状态恢复

复制代码
git stash pop

三、远程操作

1.克隆仓库-HTTPS-git clone

注意不能在任意一个本地仓库所存在的目录下执行,本地仓库里也有master等内容,一般是在根目录,不用提前git init

复制代码
git clone https://gitee.com/peng_zhihui/Dummy-Robot.git

2.向远程仓库推送-git push

本地仓库:远程仓库

复制代码
git push origin master:master//提交本地仓库master分支到远程分支master,前提是切换到本地仓库
git push origin dev:master//提交本地仓库dev分支到远程分支master,前提是切换到本地仓库

3.拉取远程仓库-git pull

复制代码
git pull origin master:master//将远程仓库master分支代码拉取并合并到本地master分支,前提是切换到本地仓库

4.忽略特殊文件-.gitignore

如果在add时有些文件不想添加,除了一个一个add之外还可以将不想添加的文件放入.gitignore中,.gitignore文件必须创建在根目录的工作区中

复制代码
*.so//在.gitignore文件中写入这个,表示不想传送以.so结尾的文件
!c.so//不排除c.so文件

四、标签管理

1.创建标签-git tag

复制代码
git tag//查看所有标签
git tag v1.0//创建标签v1.0,代表最新一次提交的id
git tag v1.0 具体id//将具体的id替换为v1.0

2.删除标签-git tag -d

复制代码
git tag -d v1.0//将v1.0标签删除
git push origin :v1.0//将远程仓库中v1.0删除

3.推送标签

复制代码
git push origin v1.0//推送v1.0标签到远程仓库
git push origin --tag//推送所有标签到远程仓库

五、多人协作

同一分支下的多人协作

1.准备

目标:master分支下file.txt文件新增代码aaa 和bbb

实现,由开发人员1新增代码aaa,由开发人员2新增代码bbb

条件:在一个分支下完成操作

  1. 在gitee新建分支dev
  2. 开发人员1在工作区git pull,已经建立连接
  3. 开发人员2在本地git clone 仓库链接,没有建立连接

2.协作

  1. 开发人员1输入,git checkout -b dev origin/dev ,创建本地dev分支并且切换到本地dev,同时本地dev分支和远程dev分支建立了连接

  2. 开发人员1对file.txt文件修改内容aaa,然后add和commit,此时在本地分支dev中file.txt修改了代码

  3. 开发人员1将内容推送git push,已经连接可以省略部分

  4. 如果开发人员2输入,git checkout -b dev,创建本地dev分支并且切换到本地dev,本地dev分支和远程dev分支没有建立了连接,不能用git pull(错误示范)

  5. 如果开发人员2输入,git checkout -b dev origin/dev,创建本地dev分支并且切换到本地dev,本地dev分支和远程dev分支建立了连接,能用git pull(正确示范)

  6. 开发人员2对file.txt文件修改内容bbb,然后add和commit,此时在本地分支dev中file.txt修改了代码

  7. 开发人员2将内容推送git push,已经连接可以省略部分(注意:如果开发人员2要修改的位置已经被别人修改了,那么需要git pull,把远程内容拉下来手动修改)

  8. 手动修改完后再git push

3.将内容合并进master分支

1.pull requests申请单

在gitee中找到pull requests,源分支选择dev分支,目标分支选择master分支,完善PR

或者

2.本地操作

  1. 开发人员1在本地dev分支中git pull,将远程dev分支中代码跟新到本地
  2. 开发人员1git checkout master,切换为master分支,然后git pull将远程master分支中代码跟新到本地
  3. 开发人员1git checkout dev,切换到dev分支,然后git merge master 将本地master分支合并到dev分支,确保合并后代码不会冲突,如果冲突就在dev分支中修改
  4. 开发人员1git checkout master,切换为master分支,将没有问题的代码合并,输入git merge dev
  5. 开发人员1git push即可
  6. 完成开发后在gitee删除dev分支

4.总结

  • 写好代码后,add,commit,之后git push
  • 如果失败,可能是远程分支比本地更块更新,需要先将最新代码git pull下来尝试合并
  • 如果合并有冲突,则解决冲突,然后合并,然后git push
  • 将分支dev合并到master分支,然后删除dev分支

不同分支下多人协作

1.准备

目标:master分支下新增function1和function2文件

实现,由开发人员1新增function1,由开发人员2新增代function2

条件:在不同分支下完成操作

  1. 开发人员1在工作区git checkout -b feat-1,创建本地分支feat-1
  2. 开发人员2在本地git checkout master,切换到本地master,为了保证本地master是最新代码,我们需要git pull
  3. 开发人员2在工作区git checkout -b feat-2,创建本地分支feat-2

2.协作

  1. 开发人员1在feat-1分支中开发function1,vim function1,然后add,commit ,需要和远程建立连接git push origin feat-1,将分支feat-1推送到远端,输入git push

  2. 开发人员2在feat-2分支中开发function2,vim function2,然后add,commit ,需要和远程建立连接git push origin feat-2,将分支feat-2推送到远端,输入git push

3.从分支feat-1切换到分支feat-2

  1. 开发人员1将分支feat-2拉下来,git pull,前提分支feat-2在远端存在
  2. 开发人员1切换到分支feat-2,并且让远端分支feat-2和本地分支feat-2建立连接,git checkout -b feat-2origin/feat-2
  3. 开发人员1在分支feat-2中开发function2,vim function2,然后add,commit ,git push

4.将分支feat-1和分支feat-2合并进master分支

1.pull requests申请单

在gitee中找到pull requests,源分支选择feat-1分支和feat-2分支,目标分支选择master分支,完善PR

或者

2.本地操作

  1. 开发人员1在本地feat-1分支中git pull,将远程feat-1分支中代码跟新到本地
  2. 开发人员1git checkout master,切换为master分支,然后git pull将远程master分支中代码跟新到本地
  3. 开发人员1git checkout feat-1,切换到feat-1分支,然后git merge master 将本地master分支合并到feat-1分支,确保合并后代码不会冲突,如果冲突就在feat-1分支中修改
  4. 开发人员1git checkout master,切换为master分支,将没有问题的代码合并,输入git merge feat-1
  5. 开发人员1git push即可
  6. 完成开发后在gitee删除feat-1分支

feat-2分支也是操作一样

解决git branch -a打印已删除分支方法

当远程分支在gitee上已经删除的情况下,在本地运行git branch -a,还能看到远程已经删除的分支

解决:git remote prune origin是删除本地显示的远程分支

六、企业开发模型

开发环境 develop 开发分支
测试环境 release 预发布分支
预发布环境 release 预发布分支
生产环境 master 主分支
本地 feature 需求开发分支,开发完后合并到develop
本地 hotfix 紧急修复分支,也就是补丁,修复完后合并到develop和master

DevOps开发


相关推荐
咖啡教室5 小时前
日常开发中常用的git操作命令和使用技巧
git
你觉得2058 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
大数据·人工智能·python·gpt·学习·机器学习·aigc
啊喜拔牙8 小时前
1. hadoop 集群的常用命令
java·大数据·开发语言·python·scala
Elasticsearch8 小时前
Elasticsearch:使用机器学习生成筛选器和分类标签
elasticsearch
别惊鹊8 小时前
MapReduce工作原理
大数据·mapreduce
8K超高清8 小时前
中国8K摄像机:科技赋能文化传承新图景
大数据·人工智能·科技·物联网·智能硬件
2401_8712905810 小时前
MapReduce 的工作原理
大数据·mapreduce
SelectDB技术团队11 小时前
Apache Doris 2025 Roadmap:构建 GenAI 时代实时高效统一的数据底座
大数据·数据库·数据仓库·人工智能·ai·数据分析·湖仓一体
你觉得20511 小时前
浙江大学朱霖潮研究员:《人工智能重塑科学与工程研究》以蛋白质结构预测为例|附PPT下载方法
大数据·人工智能·机器学习·ai·云计算·aigc·powerpoint
益莱储中国11 小时前
世界通信大会、嵌入式展及慕尼黑上海光博会亮点回顾
大数据