前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用 Git:参考指南

如何使用 Git:参考指南

作者头像
梦溪
发布2021-09-08 11:13:59
1.2K0
发布2021-09-08 11:13:59
举报
文章被收录于专栏:梦溪博客梦溪博客

Git备忘单

介绍

开发人员和开源软件维护人员团队通常通过 Git(一种支持协作的分布式版本控制系统)管理他们的项目。

此备忘单样式指南提供了对在 Git 存储库中工作和协作有用的命令的快速参考。要安装和配置 Git,请务必阅读“如何为开源做出贡献:Git 入门”。

如何使用本指南:

  • 本指南采用备忘单格式,带有独立的命令行片段。
  • 跳转到与您尝试完成的任务相关的任何部分。
  • 当您<span class="highlight">highlighted text</span>在本指南的命令中看到时,请记住,此文本应指代您自己 存储库中的提交和文件。

设置和初始化

使用以下命令检查您的 Git 版本,这也将确认安装了 Git:

代码语言:javascript
复制
git --version

Git 允许您配置一些将应用于本地计算机上所有存储库的设置。例如,配置一个用户名,Git 将使用该用户名将您对本地存储库所做的任何更改归功于您:

代码语言:javascript
复制
git config --global user.name “firstname lastname”

配置要与每个历史标记关联的电子邮件地址:

代码语言:javascript
复制
git config --global user.email “valid-email”

还要配置您首选的文本编辑器:

代码语言:javascript
复制
git config --global core.editor “nano”

您可以使用以下命令将当前工作目录初始化为 Git 存储库 init

代码语言:javascript
复制
git init

要复制远程托管的现有 Git 存储库,您将使用存储库 git clone的 URL 或服务器位置(在后一种情况下,您将使用 ssh):

代码语言:javascript
复制
git clone https://www.github.com/username/repo-name

显示当前 Git 目录的远程存储库:

代码语言:javascript
复制
git remote

要获得更详细的输出,请使用以下 -v标志:

代码语言:javascript
复制
git remote -v

添加 Git 上游,它可以是 URL,也可以托管在服务器上(在后一种情况下,使用 连接 ssh):

代码语言:javascript
复制
git remote add upstream https://www.github.com/username/repo-name

分期

当您修改了一个文件并将其标记为下次提交时,它被认为是一个暂存文件。

检查 Git 存储库的状态,包括添加的未暂存的文件和暂存的文件:

代码语言:javascript
复制
git status

要暂存修改后的文件,请使用该 add命令,您可以在提交前多次运行该命令。如果您进行了要包含在下一次提交中的后续更改,则必须 add再次运行。

您可以使用以下命令指定特定文件 add

代码语言:javascript
复制
git add my_script.py

随着 .您可以添加在当前目录下的所有文件,包括一个开头的文件 .

代码语言:javascript
复制
git add .

如果要添加当前目录中的所有文件以及子目录中的文件,可以使用 -all-A标志:

代码语言:javascript
复制
git add -A

您可以使用以下命令从暂存中删除文件,同时保留工作目录中的更改 reset

代码语言:javascript
复制
git reset my_script.py

承诺

暂存更新后,您就可以提交它们,这将记录您对存储库所做的更改。

要提交暂存文件,您将 commit使用有意义的提交消息运行该命令,以便您可以跟踪提交:

代码语言:javascript
复制
git commit -m "Commit message"

您可以通过一步提交来压缩暂存所有跟踪的文件:

代码语言:javascript
复制
git commit -am "Commit message"

如果需要修改提交消息,可以使用以下 --amend标志:

代码语言:javascript
复制
git commit --amend -m "New commit message"

分行

Git 中的分支是指向存储库中提交之一的可移动指针,它允许您隔离工作并管理功能开发和集成。您可以通过阅读Git 文档了解有关分支的更多信息。

使用 branch命令列出所有当前分支。*您当前活动的分支旁边会出现一个星号 ( ):

代码语言:javascript
复制
git branch

创建一个新分支。您将留在当前活动的分支上,直到切换到新分支:

代码语言:javascript
复制
git branch new-branch

切换到任何现有分支并将其检出到您当前的工作目录:

代码语言:javascript
复制
git checkout another-branch

您可以使用以下 -b标志来合并新分支的创建和检出:

代码语言:javascript
复制
git checkout -b new-branch

重命名您的分支名称:

代码语言:javascript
复制
git branch -m current-branch-name new-branch-name

将指定分支的历史记录合并到您当前正在使用的分支中:

代码语言:javascript
复制
git merge branch-name

中止合并,以防出现冲突:

代码语言:javascript
复制
git merge --abort

您还可以选择要与 cherry-pick引用特定提交的字符串合并的特定提交:

代码语言:javascript
复制
git cherry-pick f7649d0

当您合并了一个分支并且不再需要该分支时,您可以将其删除:

代码语言:javascript
复制
git branch -d branch-name

如果您尚未将分支合并到主分支,但确定要删除它,则可以强制 删除分支:

代码语言:javascript
复制
git branch -D branch-name

协作和更新

要从另一个存储库(例如远程上游)下载更改,您将使用 fetch

代码语言:javascript
复制
git fetch upstream

合并获取的提交。请注意,某些存储库可能会使用 master而不是 main

代码语言:javascript
复制
git merge upstream/main

将您的本地分支提交推送或传输到远程存储库分支:

代码语言:javascript
复制
git push origin main

从跟踪远程分支获取并合并任何提交:

代码语言:javascript
复制
git pull

检查

显示当前活动分支的提交历史:

代码语言:javascript
复制
git log

显示更改特定文件的提交。无论文件重命名如何,这都遵循文件:

代码语言:javascript
复制
git log --follow my_script.py

显示在一个分支上而不是在另一个分支上的提交。这将显示在提交 <span class="highlight">a-branch</span>不属于上 <span class="highlight">b-branch</span>

代码语言:javascript
复制
git log a-branch..b-branch

查看参考日志 ( reflog) 以了解分支提示和其他参考在存储库中的最后更新时间:

代码语言:javascript
复制
git reflog

通过其提交字符串或哈希以更易读的格式显示 Git 中的任何对象:

代码语言:javascript
复制
git show de754f5

显示更改

git diff命令显示提交、分支等之间的更改。您可以通过Git 文档更全面地了解它。

比较暂存区上的修改后的文件:

代码语言:javascript
复制
git diff --staged

显示在 <span class="highlight">a-branch</span>但不在的差异 <span class="highlight">b-branch</span>

代码语言:javascript
复制
git diff a-branch..b-branch

显示两个特定提交之间的差异:

代码语言:javascript
复制
git diff 61ce3e6..e221d9c

通过从项目中删除文件来跟踪路径更改并暂存此删除以进行提交:

代码语言:javascript
复制
git rm file

或者更改现有文件路径,然后暂存移动:

代码语言:javascript
复制
git mv existing-path new-path

检查提交日志以查看是否移动了任何路径:

代码语言:javascript
复制
git log --stat -M

藏匿

有时您会发现您对某些代码进行了更改,但在完成之前您必须开始处理其他代码。您还没有准备好提交到目前为止所做的更改,但您不想丢失您的工作。该 git stash命令将允许您保存本地修改并恢复到与最近 HEAD提交一致的工作目录。

隐藏你当前的工作:

代码语言:javascript
复制
git stash

查看您当前存储的内容:

代码语言:javascript
复制
git stash list

您的藏匿处将命名为 stash@{0}stash@{1}等。

显示有关特定存储的信息:

代码语言:javascript
复制
git stash show stash@{0}

要将当前存储中的文件从存储中取出,同时仍保留存储,请使用 apply

代码语言:javascript
复制
git stash apply stash@{0}

如果您想从存储中取出文件,并且不再需要存储,请使用 pop

代码语言:javascript
复制
git stash pop stash@{0}

如果您不再需要保存在特定存储中的文件,您可以 drop存储:

代码语言:javascript
复制
git stash drop stash@{0}

如果您保存了多个 stash 并且不再需要使用它们中的任何一个,则可以使用 clear删除它们:

代码语言:javascript
复制
git stash clear

忽略文件

如果您想将文件保留在本地 Git 目录中,但不想将它们提交到项目中,则可以将这些文件添加到您的 .gitignore文件中,以免它们引起冲突。

使用文本编辑器(例如 nano)将文件添加到 .gitignore文件中:

代码语言:javascript
复制
nano .gitignore

复制

要查看 .gitignore文件示例,您可以查看 GitHub 的.gitignore模板 repo

变基

rebase 允许我们通过更改分支所基于的提交来移动分支。通过变基,您可以压缩或改写提交。

您可以通过调用您想要变基的提交数量来启动变基(5在下面的情况下):

代码语言:javascript
复制
git rebase -i HEAD~5

或者,您可以根据特定的提交字符串或哈希值进行变基:

代码语言:javascript
复制
git rebase -i 074a4e5

压缩或改写提交后,您可以在项目上游代码的最新版本之上完成分支的变基。请注意,某些存储库可能会使用 master而不是 main

代码语言:javascript
复制
git rebase upstream/main

恢复和重置

您可以使用 来恢复对给定提交所做的更改 revert。为了实现这一点,您的工作树需要保持干净:

代码语言:javascript
复制
git revert 1fc6665

有时,包括在 rebase 之后,您需要重置您的工作树。您可以使用以下命令重置为特定提交,并删除所有更改

代码语言:javascript
复制
git reset --hard 1fc6665

要将最后一次已知的非冲突提交强制推送到原始存储库,您需要使用 --force

警告master除非有非常重要的原因,否则强制推送到主(有时)分支通常是不受欢迎的。在您自己的存储库上工作时要谨慎使用,并在合作时努力避免这种情况。

代码语言:javascript
复制
git push --force origin main

要从 Git 目录中删除本地未跟踪的文件和子目录以获得干净的工作分支,您可以使用 git clean

代码语言:javascript
复制
git clean -f -d

需要修改你的本地仓库,让它看起来像当前的上游主分支(也就是冲突太多),你可以执行硬重置:

注意 :执行此命令将使您的本地存储库看起来与上游完全一样。您所做的任何提交但未进入上游的提交都将被销毁

代码语言:javascript
复制
git reset --hard upstream/main

结论

本指南涵盖了您在管理存储库和协作软件时可能使用的一些更常见的 Git 命令。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021 年 09 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Git备忘单
    • 介绍
    • 设置和初始化
    • 分期
    • 承诺
    • 分行
    • 协作和更新
    • 检查
    • 显示更改
    • 藏匿
    • 忽略文件
    • 变基
    • 恢复和重置
    • 结论
    相关产品与服务
    文件存储
    文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档