Py学习  »  Git

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

终码一生 • 2 周前 • 55 次点击  
点击“终码一生”,关注,置顶公众号
每日技术干货,第一时间送达!
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
 
55 次点击