git 版本控制从入门到精通

news/2025/3/4 11:52:57/

文章目录

  • 1、git安装
    • 1.1、Linux安装
    • 1.2、Windows安装
    • 1.3、MAC安装
  • 2、配置git
  • 3、git命令使用
  • 4、git远程服务器
  • 5、提交到远端服务器
  • 6、commit合并
  • 7、创建分支
  • 8、命令练习记录

1、git安装

1.1、Linux安装

在linux上我们建议你用二进制的方式来安装git,可以使用发行版包含的基础软件包管理工具来安装,如果你是
是CentOS或者Fedora的操作系统,可以使用yum命令来安装git:
sudo yum install git
如果你是ubuntu或者是Debian可以使用apt-get的命令来安装git:
sudo apt-get install git

1.2、Windows安装

在 Windows 上安装 Git 也有几种安装方法。 官方版本可以在 Git 官方网站下载。 打开
http://git-scm.com/download/win,会检查你的操作系统是32位的还是64位的,并自动开始下载对应的安装包。

1.3、MAC安装

通过homebrew安装git
首先homebrew: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)„
安装git: brew install git

2、配置git

当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:
git config --global user.name “lizhiyong”
git config --global user.email lizhiyong4360@gmail.com
可以使用git config --list来查看git的所有配置

如果你遇到问题也可以查看git的官方文档。
https://git-scm.com/book/zh/v2

3、git命令使用

在这里插入图片描述
1、创建仓库
git init

2、add
git add . # 将所有修改添加到暂存区

3、commit
git commit -m “描述信息”

4、git远程服务器

在这里插入图片描述
在这里插入图片描述

虽然我们说git是一个分布式的版本管理工具,不像svn
那样离开了中央服务器的仓库就干不了活了,但是如果有个
中央服务器存在,还是方便了多人之间的协作

一:创建git账号和git用户组sudo adduser git  #添加git用户sudo passwd git   #添加git的密码sudo groupadd git #添加git用户组sudo usermod -G git git #添加git用户到git用户组二、创建git仓库cd /srv     # srv目录下存放git的仓库mkdir nginx-docs.git # 创建nginx-docs.git目录cd nginx-docs.gitgit init --bare # bare选项指示该仓库为裸仓库sudo chown -R git:git /srv/nginx-docs.git # 修改权限为git用户git的工作流程一般是这样的:
1、在工作目录中添加、修改文件;
2、将需要进行版本管理的文件add到暂存区域;
3、将暂存区域的文件commit到git仓库;
4、本地的修改push到远程仓库,如果失败则执行第5步
5、git pull将远程仓库的修改拉取到本地,如果有冲突需要修改冲突。回到第三步
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

5、提交到远端服务器

# 1、添加的-a参数会把当前暂存区里所有的修改(包括删除操作)都提交,但是那些尚未添加到暂存区的内容是不会提交的,
git commit –a –m “commit messeages# 2、他会把此次提交追加到上一次的commit内容里
git commit --amend# 3、git push命令用于将本地分支的更新,推送到远程主机
git push <远程主机名> <本地分支名>:<远程分支名>
例如:
git push origin master:refs/for/master

6、commit合并

在这里插入图片描述
在这里插入图片描述

# 4、git commit合并
git rebase
命令了,即git rebase –i 4cbeb4248f7, -i后面的参数表示不要合并的commit的hash值。# 5、查看commit内容
git log# 6、每条日志显示一行
git log --online# 7、只显示多少行
git log -[length]# 8、跳过前面的skip条日志
git log --skip=[skip] -3# 9、显示一些统计信息以及文件的改动内容和行信息
git log -p# 10、显示提交作者日期
git log --stat# 11、显示每个author提交commit和多少条commit
git shortlog# 12、按日期
git log --after="2018-7-1"    # 2018年7月1好之后的所有日志
git log –-before="2014-7-1"# 13、按作者
git log --author="Dounin"  # 14、按照提交信息
git log --grep=“issue”  # 按照提交本中是否包含issue的日志# 15、按文件
git log -- ./src/http/modules/ngx_http_xslt_filter_module.c# 16、按照内容
git log -S “ngx_free” # 即所有文件中包含了 ngx_free字符串的修改# 17、按照范围 
git log <since>..<until> # 比如 git log master..feature这可以显示出自从master分支fork之后,feature分支上所有的提交# 18、显示commit-id的提交内容,包括所有文件的修改信息
git show commit-id  

7、创建分支

# 1、创建分支:git branch dev
# 2、分支切换git checkout dev
或者:git checkout -b dev

8、命令练习记录

# 创建裸仓库,一般用于远端服务器
git init --bare# 拉取代码
git clone /Users/zhu/Desktop/Audio_Study/git_testgit clone 用户名@ip:/path/to# 生成公私钥
ssh-keygem -t rsa# 查看分支
git brach# 查看用户信息
git config --local -l# 修改当前目录的用户信息
git config user.name mark-a
git config user.enail mark.a@qq.com# 全局修改
git config --global user.name mark-a# 推送到远端
git push origin master# 逆向操作
# 当前world.c已经在暂存区
git restore -S .
git restore -S world.c# 查看状态
git status# 现在world.c已经通过commit提交到本地仓库了,现在要退回
# 查看简洁提交记录
git reflog	# 退回之前的版本
# (默认的,退回到workspace)
git reset --mixed head~1
# 退回到暂存区
git reset --soft head~1
# 上次提交直接清空
git reset --hard head~1# 整理操作
# 整理上一次的提交
git commit -amend 
# 整理以前的
git rebase -i 前七位~ 前七位(md5)# 解决冲突
git pullgit add world.c
git commit world.c -m "first commit"git commit# 创建分支
git branch develop 
# 切换分支
git checkout develop# 合并
git merge bug/timer# 排除添加文件
创建一个.gitignore
*.exe

http://www.ppmy.cn/news/602148.html

相关文章

6月27日亚马逊云科技中国峰会议程抢先看

大会亮点预览 ● 汇聚百余位重磅嘉宾共同探路云端 ● 技术分享与发布 赋能数字化转型创新 ● 共同探索行业转型之道 驱动创新价值 ● 聚焦前沿科技 云计算年度热点话题盘点 ● 热点主题展示 打造数字科技创新型展区 ● 开发者专属版块 学玩一体 高效进阶 ● Amazon De…

依赖包版本号前面的 ^ 或者 ~ 或者* 的符号的含义

参考1 指定版本&#xff1a;比如1.2.2&#xff0c;遵循“大版本.次要版本.小版本”的格式规定&#xff0c;安装时只安装指定版本。 波浪号&#xff08;tilde&#xff09;&#xff0c;作用于小版本号&#xff1a;比如~1.2.2&#xff0c;表示安装1.2.x的最新版本&#xff08;不低…

[Vue3]学习笔记-reactive对比refsetup的两个注意点

reactive对比ref 从定义数据角度对比&#xff1a; ref用来定义&#xff1a;基本类型数据。reactive用来定义&#xff1a;对象&#xff08;或数组&#xff09;类型数据。备注&#xff1a;ref也可以用来定义对象&#xff08;或数组&#xff09;类型数据, 它内部会自动通过reacti…

校园定位系统app的设计与实现(源码+文档+报告+任务书)

本系统以HTML、CSS、JavaScript作为开发语言。采用前后端分离思想&#xff0c;开发工具为hubuliderx和uniapp&#xff0c;编程语言为JavaScript、vue3。服务器端通过Node.js开发&#xff0c;以本地服务器为基础&#xff0c;把数据库放入本地服务器&#xff0c;使用预留的接口地…

Scala集合与Java集合的互转函数asScala与asJava

只有引入隐式转换类 JavaConverters&#xff0c;才能使用Scala集合与Java集合之间的转换函数。 为方便理解&#xff0c;看下面的例子&#xff1a; import scala.collection.JavaConverters._ val javaList java.util.Arrays.asList("hi", "bye") val sca…

【Java面试题】Java基础——集合

文章目录 集合的形式List和Set的区别ArrayList和LinkedList的区别ArrayList和数组的区别ArrayList的扩容机制是什么&#xff1f;ArrayList有哪些特点List和Map的区别如何让map存储有序数据如何创建Map?常用的Map有哪些?如何在HashMap中插入一个数据遍历一个 List 有哪些不同的…

个人职业生涯规划书范文

个人职业生涯规划书范文篇1 第一章认识自我 1.职业兴趣 我是一个相对来说性格活泼开朗的男孩&#xff0c;我喜欢相对外向的工作&#xff0c;所以&#xff0c;我喜欢比较有挑战性的工作&#xff0c;具体的讲&#xff0c;我的梦想是通过自己的努力&#xff0c;拥有一家自己的企业…

当初急吼吼冲进来的老王们,已经撤了……撤了……

* * * 原创&#xff1a;刘教链 * * * 号外&#xff1a;今天在“刘教链Pro”发表了《内参&#xff1a;为何要在31k对15k后悔莫及&#xff1f;》&#xff0c;欢迎关注公众号“刘教链Pro”并阅读。 * * * 坊间消息&#xff0c;几个月前高调带资5000万美刀入场、“all in” AI的王…