快速使用请看结尾

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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐