社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

工作中常用的 git 命令,建议收藏!

终码一生 • 10 月前 • 331 次点击  
点击“终码一生”,关注,置顶公众号
每日技术干货,第一时间送达!
01
了解版本控制
什么是版本控制?我真的需要吗?版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。
什么是分布式版本控制系统分布式版本控制系统( Distributed Version Control System,简称 DVCS )。

在这类系统中,像 Git,Mercurial,Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份
02
Git 常用命令
git-系统配置
git config -l
git-global 配置
git config --global --list
# 可以设全局公用识别的 邮箱和用户名
git config --global user.name 'xxxxxx'
git config --global user.email 'xxxxx@xxx.com'
项目单独 git 配置
# 查看
git config --list
# 为项目设置单独的user.name和user.email
git config user.name 'xxxxxx'
git config user.email 'xxxxx@xxx.com'
Git 初始化
  • 本地初始化
git init
  • 远程拉取
git clone 远程仓库地址
  • 本地仓库与远程仓库的关联
# 本地-建立关联-远程
git remote add origin 远程仓库地址
# 本地-取消关联-远程
git remote rm origin
Git 保存和提交
  • 查看状态
git status
  • 查看所有文件修改详情
git diff HEAD
  • 查看指定文件的修改详情
git diff HEAD ./README.md
  • 添加保存
  • ".": 所有修改文件
git add .

git add ./home.vue
  • 添加保存说明(提交到本地仓库)
git commit -m '对这次保存添加说明描述'
  • 拉取代码
  • 多人协作开发的时候,提交之前先拉取下代码,解决可能未来的冲突
git pull origin 分支名
  • 提交代码
git push origin 分支名
Git 提交日志
  • 查看提交记录
  • 查看曾经的提交记录 可以显示所有提交过的版本信息,不包括已经被删除的 commit 记录和 reset 的操作
git log --pretty=oneline
  • 控制显示条数
git log -30 --pretty=oneline
  • 图形化展示查看当前分支的版本演变信息
git log --graph
  • 按作者名字查看提交记录
git log --author="John"
  • 搜索提交历史,根据关键词
git log -S 关键词
  • 按日期
git log --after="2023-2-1"
  • 搜索过滤合并提交
git log --no-merges 
or 
git log --merges
  • 按提交信息
  • 比如说,你的团队规范要求在提交信息中包括相关的 issue 编号,你可以用下面这个命令来显示这个 issue 相关的所有提交
  • 查看当前 版本标志位
  • git reflog 是 Git 操作的一道安全保障,它能够记录几乎所有本地仓库的改变,包括所有分支的 commit 提交,以及已经被删除的 commit
Git 回退到某个版本
  • 回退到上一个版本
git reset --hard HEAD^ # 回退上一个版本
git reset --hard HEAD~3  # 回退上上上一个版本 
git reset --hard bae128  # 回退到某个版本回退点之前的所有信息。 
  • HEAD 说明:
  • HEAD 表示当前版本
  • HEAD^ 上一个版本
  • HEAD^^ 上上一个版本
  • HEAD^^^ 上上上一个版本
  • 以此类推...
  • 可以使用 ~数字表示
  • HEAD~0 表示当前版本
  • HEAD~1 上一个版本
  • HEAD^2 上上一个版本
  • HEAD^3 上上上一个版本
Git 分支指令
  • 查看素有分支
git branch -a
  • 切换分支
git checkout 分支名
  • 创建本地分支
git branch 新分支名
# 创建并切换到新分支
git checkout -b 新分支名
  • 根据指定版本号创建分支
git checkout -b 分支名 提交ID
  • 推送本地分支到远程仓库
git push origin 新分支名
  • 删除本地某个分支
  • 这是一个“安全”操作,因为 Git 会阻止我们删除具有未合并更改的分支
git branch -d 分支名
  • 强制删除本地某个分支
  • 即使它有未合并的更改。如果想永久丢弃与特定开发线相关的所有提交,则可以使用此命令
git branch -D 分支名
  • 删除远程仓库的某个分支
git push origin --delelte 分支名
  • 显示所有远程仓库
  • 查看仓库源名称
git remote -v
  • 更新远程分支列表
git remote update origin(仓库源名称) --prune
  • 推送所有分支到远程仓库
git push origin(仓库源名称) --all
  • 强行推送当前分支到远程仓库,即使有冲突
git push origin(仓库源名称) --force
Git 合并分支
  • 想将 develop 分支合并到 master 分支
git checkout master # 首先切换到master分支上
git pull origin master # 如果是多人开发的话 需要把远程master上的代码pull下来
git merge --no-ff develop # 然后我们把develop分支的代码合并到master上
  • 关于 git merge develop 和 git merge --no-ff develop 的区别
git merge develop

==== >  结果就会变成

          A---B---C develop
         /         master
D---E---F 
  • 执行此句话后,因为 develop 就在 master 的下游,所以直接移动了 master 的指针,master 和 develop 都指向了 C
  • 而如果执行了 git merge --no-ff feature 的话,是下面的结果:
git merge --no-ff develop

==== >  结果就会变成

          A---B---C develop
         /         \
D---E---F-----------G master

由于 --no-ff 禁止了快进,所以会生成一个新的提交,master 指向 G。
  • 从合并后的代码来看,结果其实是一样的,区别就在于 --no-ff 会让 Git 生成一个新的提交对象, 通常我们把 master 作为主分支,上面存放的都是比较稳定的代码,而 feature 是用来开发特性的,上面会存在许多零碎的提交,快进式合并会把 feature 的提交历史混入到 master 中,搅乱 master 的提交历史
Git 标签
  • 查看 tag 列表
git tag -l
  • 本地添加 tag
git tag -a 标签名 -m '版本说明'
  • 查看 tag 信息
git show 标签名
  • 本地删除某个 tag
git tag -D 标签名
or
git tag -d 标签名
  • 推送本地 tag 到远程仓库
git push origin 标签名
  • 删除远程仓库 tag



    
git push origin --delete 标签名
03
小记
cmd 中使用 log 命令,不会自动退出,需要手动按下英文状态下的 q 退出
04
Git 常见错误
  1. 修改最后一次提交消息 - 提交消息写错了
(按 i 进行编辑,编辑后,按 ESC,如果保存退出使用 :wq,只退出输入 :q,如果出错,退出不保存使用 :qa!)
git commit --amend #该命令将打开编辑器,并允许更改最后一次提交消息
  1. Git 撤回 commit,但未 push 的内容
  2. 让单个文件回退到指定版本
  3. 解决冲突
只要所有开发者都遵守这个规则,那么解决冲突是一件非常容易的事情
例如我的分支叫做 dev 分支。我把代码修改完成了,现在不知道有没有冲突。
执行命令 git pull 确保当前 master 分支是最新代码。
提交代码:git push。
来源:juejin.cn/post/7204293342947688506



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/185874