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

如何使用Git:参考指南

原创
作者头像
信姜缘
修改2018-11-16 16:07:30
1.4K0
修改2018-11-16 16:07:30
举报
文章被收录于专栏:云计算教程系列

介绍

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

这个备忘单样式指南提供了对在Git存储库中工作和协作有用的命令的快速参考。

如何使用本指南:

  • 本指南采用备忘单格式,包含自包含的命令行代码段。
  • 跳转到与您要完成的任务相关的任何部分。
  • 当您在本指南的命令中看到highlighted text时,请记住,此文本应引用您自己的存储库中的提交和文件。

要完成本教程,您需要一台已经设置好可以使用sudo命令的非root账号的CentOS服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

设置和初始化

使用以下命令检查您的Git版本,该命令还将确认已安装Git。

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

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

代码语言:javascript
复制
git init

要复制远程托管的现有Git存储库,您将在repo的URL或服务器位置使用git clone(在后一种情况下,您将使用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 .

您可以从暂存中删除文件,同时用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

合并提取的提交。

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

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

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

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

代码语言:javascript
复制
git pull

检查

显示当前活动分支的提交历史记录。

代码语言:javascript
复制
git log

显示更改特定文件的提交。无论文件重命名如何,都会跟随文件。

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

显示一个分支上的提交,而不显示另一个分支上的提交。这将显示在a-branch上而非b-branch上提交。

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

查看引用日志(reflog)以查看分支和其他引用的提示何时在存储库中最后更新。

代码语言:javascript
复制
git reflog

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

代码语言:javascript
复制
git show de754f5

显示更改

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

比较暂存区域中的已修改文件。

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

显示在a-branch但不在b-branch上内容的差异。

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

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

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

存储

有时您会发现您对某些代码进行了更改,但在完成之前,您必须开始处理其他内容。您还没有准备好提交您目前所做的更改,但您不想丢失您的工作。该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}

如果您保存了多个藏匿处并且不再需要使用其中任何一个,则可以使用clear将其删除。

代码语言:javascript
复制
git stash clear

忽略文件

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

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

代码语言:javascript
复制
nano .gitignore

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

rebase

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

您可以通过调用您要进行rebase的提交次数来启动rebase(5在下面的例子中)。

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

或者,您可以根据特定的提交字符串或哈希进行rebase。

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

一旦您压缩或重写了提交,您就可以在项目上游代码的最新版本之上完成您的分支的rebase。

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

重置

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

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

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

警告:除非有一个非常重要的理由,否则强行推向掌握者往往不赞成。在处理自己的存储库时谨慎使用,并在协作时避免这种情况。

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

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

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

如果您需要修改本地存储库以使其看起来像当前的上游主服务器(即冲突太多),则可以执行硬重置。

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

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

结论

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

作为Git工作的一部分,您可能会发现许多其他命令和变体。要了解有关所有可用选项的更多信息,您可以运行:

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

接收有用的信息。您还可以阅读更多关于Git的信息,并从官方Git网站上查看Git的文档。

想要了解更多使用Git的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《How To Use Git: A Reference Guide》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 设置和初始化
  • 分期
  • 提交
  • 分行
  • 协作和更新
  • 检查
  • 显示更改
  • 存储
  • 忽略文件
  • rebase
  • 重置
  • 结论
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档