git总结

本文详细介绍了Git的使用,包括工作区、暂存区、本地仓库和远程仓库的状态模型,以及仓库管理操作如克隆、提交、拉取和推送。此外,还讲解了分支管理、标签管理和解决冲突的方法,提供了实际操作示例,帮助开发者更好地理解和运用Git进行项目管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

状态模型

  • 工作区(workplace)
  • 暂存区(index)
  • 本地仓库(local repository)
  • 远程仓库(remote repository)

 

仓库管理

工作区(workpace->暂存区(index)

git add . #当前文件夹以及子文件夹 git add fileName #某个文件

暂存区(index)->本地仓库(local repository)

git commit -m '备注提交内容'

克隆远程仓库

git clone -b xxxxx分支 xxxx地址 (不加分支默认master) #默认拉取master分支代码 git clone git@gitee.com:liuzhenyu666/test0130.git #拉取dev分支代码 git clone -b dev git@gitee.com:liuzhenyu666/test0130.git

查看远程仓库

git remote -v

同步远程仓库

#未关联远程仓库时 git pull origin xxxxx git push origin xxxxx #关联之后,不需要加分支名字 git pull git push

设置本地仓库和远程仓库关联

git push --set-upstream origin xxx

工作常用步骤

git status #查看当前仓库状态 git add . #添加到暂存区 git commit -m 'xxxx' #添加到本地仓库 git pull # 同步远程仓库到本地,检查远程仓库是否比本地版本更高一些 git push #推送到远程仓库

:千万记住不要使用 -f参数,会强制用本地仓库覆盖远程仓库例如:git push -f 或 git push orign

日志查看

提交日志

git log #日志 git log --pretty=oneline #美化输出,行格式显示 git log --pretty=oneline --abbrev-commit #简化版本号 行格式显示

历史命令日志

#版本相关,如果再版本回滚时误操作了,可以通过这 #个地方来找历史的版本号和命令进行恢复 git reflog

撤销和回退

撤销修改

git checkout xxx #撤销某个文件修改 git checkout . #撤销当前文件夹内所有修改 git reset --hard HEAD #放弃暂存区中所有的修改和新增

版本回退,慎用

git reset --hard xxxcommit版本号 #回退到某个版本 git reset --hard HEAD #放弃当前所有修改,回退到当前版本 git reset --hard HEAD^ #回退到上一个版本

分支管理

查看分支

git branch #查看本地分支 git branch -a #查看所有分支

创建分支

git checkout -b xxx分支名字 #创建并切分支

git branch xxx分支 #创建 git checkout xxx分支 #切分支

合并分支到当前分支

git merge xxx分支名字

删除分支

git branch -d # 删除已合并的分支,有未合并代码不允许删除 git branch -D # 强制删除有未合并代码的分支 git push origin --delete dev_new #删除远程分支

本地分支和远程分支第一次关联

git push --set-upstream origin master0513

标签管理

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。

Git有commit,为什么还要引入tag?

“请把上周一的那个版本打包发布,commit号是6a5819e...”

“一串乱七八糟的数字不好找!”

如果换一个办法:

“请把上周一的那个版本打包发布,版本号是v1.2”

“好的,按照tag v1.2查找commit就行!”

所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。

创建和查看

git tag v1.0 #创建一个v1.0的标签 git tag v0.9 f52c633 #基于某一个版本,创建一个v0.9的标签 #基于某一个版本,添加备注,创建一个v0.1的标签 git tag -a v0.1 -m "version 0.1 released" 1094adb git tag #查看标签列表 git show <tagname> #查看某个标签详情 git checkout tagname #切标签

同步和删除

git tag -d v0.1 #删除本地分支 git push origin v1.0 #推送某个分支到远程 git push origin --tags #推送所有分支到远程

删除远程标签

#先删除本地标签 git tag -d v0.9 #后删除远程标签 git push origin :refs/tags/v0.9

解决冲突

  • CONFLICT => 表明该文件有冲突,被至少2人修改。
  • 解决
    • 查看日志,去线下和对应修改人员沟通,确定如何修改。
  • 切忌在协作开发时,随意修改或者删除他人代码

冲突示例,同步代码出现:CONFLICT

$ git pull remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), 432 bytes | 43.00 KiB/s, done. From gitee.com:liuzhenyu666/test0130 7b3e8f6..5484e31 master -> origin/master Auto-merging HelloWorld.java CONFLICT (content): Merge conflict in HelloWorld.java Automatic merge failed; fix conflicts and then commit the result.

<<<<<<< HEAD System.out.println("Hello World666"); System.out.println("Hello World6661234565"); =======================================分界线,以上是自己的代码,以下是别人的代码 System.out.println("Hello World6asd6688888"); int c = 0; System.out.println(c); >>>>>>> 5484e31669c498dadd814067524b3efe7a4a9ebd

删除

从暂存区和工作区删除

git rm <file> git rm test.txt #删掉文件 #如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f git rm -f test.txt

从跟踪清单中删除

#如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可: git rm --cached <file> git rm --cached test.txt git rm --cached -r .

忽略文件.gitignore

  • 内容示例,忽略.idea、target文件夹和所有以iml为后缀的文件

/.idea/ /target/ *.iml

  • 作用
    • 第一次初始化项目时 忽略文件就配置成功了
    • 其他人正常同步代码
  • 已提交的文件如何恢复忽略
    • git rm --cached 文件
    • git rm --cached -r 文件夹
    • git rm --cached -r .
  • 后期调整忽略文件
    • 调整完毕忽略文件
    • 所有人都执行 : git rm --cached -r .
    • 其中一个人执行
      • git add .
      • git commit -m 'init '
      • git pull
      • git push
    • 其他所有人执行
      • git pull
      • 正常同步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值