加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

为Linux运维人员分享的Git 使用方法

发布时间:2022-07-15 14:22:57 所属栏目:Linux 来源:互联网
导读:跟大家分享的文章是关于为Linux运维人员分享的Git 使用技巧。Git,一个分布式版本控制系统,它已经成为了开源世界的源码控制默认工具。但是使用Git中更另人沮丧的是,你需要了解多少才能让你更有效的使用它。同时这也是使用Git中比较美妙的一件事,因为没有
  跟大家分享的文章是关于为Linux运维人员分享的Git 使用技巧。Git,一个分布式版本控制系统,它已经成为了开源世界的源码控制默认工具。但是使用Git中更另人沮丧的是,你需要了解多少才能让你更有效的使用它。同时这也是使用Git中比较美妙的一件事,因为没有什么比发现一个新的小技巧来简化或提高你的工作流的效率更加令人快乐了。
 
 
  1. 你的 ~/.gitconfig 文件
  在第一次用git命令来提交一个仓库的修改,你可能会首先看到像下面这种内容:
 
  为Linux运维人员分享的Git 使用技巧
  你可能还没有意识到那些命令正在修改~/.gitconfig文件的内容,这个文件就是Git存储全局配置选项的文件。通过你的~/.gitconfig文件你可要做很多事情,包括定义别名,永久的打开(或关闭)一些特定的命令选项,还可以修改Git如何工作的方面(例如:git diff使用哪个diff算法,或者默认使用什么类型的的合并策略)。你甚至可以按条件地基于路径包含其他配置文件到一个仓库!使用“man git-config”查看所有细节。
 
  2. 你的仓库的.gitconfig文件
  在之前的技巧中,你可能会想知道在git config 命令中的—global标识是做什么的。它告诉Git更新“global”配置,也就是~/.gitconfig发现的这个配置。当然,拥有一个全局的配置代表了一个本地配置,而且足够肯定的是,如果你省略—global选项,git config 会更新这个仓库自己的配置,这个配置文件存储在.git/config。
 
 
  3、别名
  别名是你可以在你的~/.gitconfig文件里做的另外一件事。他的工作原理就像shell命令行里的别名——设置一个新的命令名称来调用一个或者多个其他的命令,这些命令通常包括一些特定的选项或标识。别名对于你经常使用的那些又长又复杂的命令行是非常有效的。
 
  你可以使用git config命令来定义别名——例如,执行”git config —global —add alias.st status”命令后,会使得执行git st与执行git status做的是同样的事情——然而,我发现当定义别名的时候,只需要直接在~/.gitconfig文件里编辑通常会更加容易。
 
  如果你选择这么做,你会发现~/.gitconfig文件就是一个INI文件,INI是一种带有特定段落的基础键值对文件格式。添加一个别名时,你将改变[alias]段落。例如:上面提到的定义相同的git st别名,需要添加下面这段代码:
 
  为Linux运维人员分享的Git 使用技巧
  (如果已经有了[alias]这个段落,只需要在这个段落中添加到第二行)
 
  4. shell命令中的别名
  别名不仅仅是运行其他Git子命令——你也可以定义别名,这些别名可以运行其他shell命令。这是一个很好的方法来处理一个重复的、罕见的、复杂的任务:一旦你已经想到第一次怎么做,那就使用一个别名保存这个命令。例如,我有几个仓库是我fork了一个开源项目,而且在本地做了一些修改,这些修改不用贡献给这个项目。在项目的持续的开发的过程中我想保持最新的版本,同时保留我的本地修改。为了完成这个想法,我需要定期地从upstream仓库中合并这些修改到我的fork——我定义一个别名“upstream-merge”来完成这个操作。定义如下:
 
  upstream-merge = !"git fetch origin -v && git fetch upstream -v && git merge upstream/master && git push"
 
  别名定义开始的这个“!”是告诉Git来通过shell运行这个命令。这个例子包括了运行一些git命令,但是使用这种方式定义别名可以运行任何shell命令。
 
  (注意:如果你想复制我的upstream-merge别名,你将需要确认你有一个Git remote命名为upstream来指定这个你fork的upstream仓库。你可以通过“git remote add upstream ”来添加一个。)
 
  5. 可视化提交图
  如果你从事的是一个有很多分支活动的项目,有时可能很难掌握所有正在发生的工作以及它们之间的相关性。各种GUI工具可让你弄清楚不同分支的概况以及在所谓的“提交图”中提交记录。例如,以下是我使用 GitLab 提交图查看器进行可视化的一个存储卡的部分截图:
 
  为Linux运维人员分享的Git 使用技巧
  John Anderson, CC BY
 
  如果你是专注于命令行的用户,就可以不在多个工具之间切换导致分心,这个工具在命令行上实现了类似图形界面的提交视图。通过 -- graph 参数获取 git 的记录:
 
  为Linux运维人员分享的Git 使用技巧
  John Anderson, CC BY
 
  下面的命令可以得到一样的仓库可视化片段:
 
  git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
 
  --graph 选项将图表添加到日志的左侧, --abbrev-commit 存储提交使用了 SHA 方法, --date=relative 表达式用相对的术语来表示日期,并且 --pretty 以 bit 格式处理自定义格式。我知道 git lg 的别名,它是我最常运行的10个命令之一。
 
  6. 更优雅的强制推送(force-push)
  有时,就跟你尽量避免使用它一样困难的是,你会发现你需要运行 git push --force 来覆写你仓库的远程副本上的历史记录。你可能已得到了一些反馈,他们会要求你进行交互式的变基(rebase),或者你可能已经搞砸了,并且希望隐藏证据。
 
  当他人在仓库的远程副本的同一分支上进行改动后,会发生强制推送的风险。当你强制推送已重写的历史记录时,某些提交将会丢失。这是 git push --force-with-lease 出现的原因 - 如果远程分支已更新,它不会允许你执行强制推送,这将确保你不会丢弃他人的工作。
 
  7. git add -N
  你是否使用过git commit -a在一次行动中提交你所有未完成的修改,只有在你push完你的提交后才发现git commit -a忽略了新添加的文件?解决这个问题你可以用git add -N(“通知”)来告诉Git你想把新添加的文件包含在提交中在你第一次实际提交之前。
 
 

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读