git和github的简单介绍

开始使用Git和GitHub

首先,访问官方GitHub网站创建一个帐户。其次,您必须在命令行上安装Git。每个操作系统都应附带一个默认命令行,但您可以查看此开发人员设置指南以了解我的设置。第三,我强烈建议为您的GitHub帐户设置SSH。它是可选的,但可以保护您对GitHub的访问权限。此外,它还省去了繁琐的任务,当您将本地存储库的更改推送到GitHub上的远程存储库时,您始终必须输入凭据。

最后但并非最不重要的是,在GitHub上探索和社交。您可以通过访问人员和组织的个人资料来探索不同的存储库。您可以观看和加注存储库以获取更新并显示您的钦佩。您甚至可以开始作为开源贡献者在存储库上做出贡献。

为了社交,您可以关注在GitHub上开始有趣项目或讨论的人。通过关注我的帐户来尝试获得您的第一个社交关系。我很想看到你使用它。

如果您在使用GitHub时对Pull请求和问题的工作流程一无所知,请查看官方GitHub学习实验室。它应该提供一切,让你加快速度。这是开始使用GitHub的好方法。

使用Git和GitHub初始化存储库

一开始,你不得不初始化一个Git存储库。您可以使用git init本地计算机上项目文件夹中的命令初始化本地存储库。

本地存储库具有.git文件,其中保存有关存储库的所有信息(例如提交历史记录)。可以添加另一个文件,即.gitignore文件,以忽略不应添加到远程存储库的某些文件。忽略的文件仅在您的本地存储库中。

git init
touch .gitignore

例如,您可能希望忽略.env文件,其中存储项目的合理环境变量或node_modules /文件夹,以便不将所有项目依赖项上载到远程GitHub存储库。

.env

node_modules/

git init本地项目中使用该命令后,可以在GitHub上创建存储库。在那里你可以给它一个名字,一个可选的描述和许可证(例如麻省理工学院)。不要使用复选框添加README.md。相反,请取消选中该复选框。然后,您将获得在下一步中将本地存储库链接到远程存储库的说明。

此外,您可能希望在项目中添加README.md文件,然后将其显示在GitHub上的存储库中。基本上,这是初始化git项目,向其添加.gitignore文件,将其连接到GitHub上的远程存储库时需要知道的一切,添加添加,提交和推送序列的更改。您将在下一节中了解有关此序列的更多信息。

git和github的简单介绍_第1张图片
git github项目设置

否则,如果选中该复选框,您将有一个准备就绪的远程存储库,您可以将其克隆到本地计算机以将其作为本地存储库。如果要拥有远程存储库的副本,可以使用git clone 本地计算机克隆它。

在链接本地存储库并添加,提交并将初始项目推送到远程存储库(而不是在克隆它之后)之后,您可以开始调整项目(本地存储库)。之后,您始终遵循添加,提交和推送顺序。在下一节中有关于此的更多信息。

推送您的更改

在过去几年中,我注意到我使用的GitHub命令仅分解为我在重复出现的场景中使用的几个基本命令。这些基本命令足以让我在Web开发中出现。

拥有本地存储库后,您希望“提交”对代码库的更改。每个提交都保存为更改存储库的原子步骤。它保存在Git历史记录中,可以在命令行和GitHub上访问。

提交附带提交消息。稍后您将看到如何编写提交消息。此外,会自动生成散列以标识您的提交。您不必在开始时关心哈希,但稍后它可以用于跳转到历史记录中的特定点或相互比较提交。

提交发生在您的本地存储库中,然后最终将它们“推送”到远程存储库,在那里每个人都可以访问它们。在通过推送将它们同步到远程存储库之前,您可以在本地累积多个提交。

您如何从本地存储库获取更改到远程存储库?有三个基本命令:add,commit,push。

首先,您可以为下次提交添加全部或仅选定的已更改文件。

git add .
git add 

这些文件将从非暂存文件更改为暂存文件。您可以随时验证它git status。文件暂存时,可以提交它们。还有从暂存文件到非暂存文件的方法。

git reset HEAD 

其次,您可以使用提交消息附带的提交提交暂存文件。该消息描述了您的更改。有两种提交方式。您可以使用快捷方式commit命令内联添加提交消息:

git commit -m ""

此外,您可以使用默认的commit命令在之后使用多行生成更详细的提交消息。

git commit

后一个命令将打开您的默认命令行编辑器。通常,默认的命令行编辑器是vim。在vim中,您可以键入提交消息。之后,您可以使用:wq哪个代表写入和退出来保存并退出vim 。大多数情况下,您将使用快捷方式提交。它很快并且通常内联提交消息就足够了。

现在,在进入第三步之前,多个提交可以在本地存储库中累积。最后,在第三步中,您将把一个命令中的所有提交推送到远程存储库。

git push origin master

这些是从本地存储库到远程存储库进行更改的三个必要步骤。但是当您与其他人协作时,在推送更改之前可能会有一个中间步骤。当您在本地存储库中进行更改时,可能会发生其他人已在远程存储库中推送更改的情况。因此,在允许推送自己的更改之前,必须从远程存储库中提取所有更改。它可以很简单:

git pull origin master

但是,我从不直接拉。相反,我拉动rebase:

git pull --rebase origin master

拉动和拉动变形有什么区别?基本git pull只需将远程存储库中的所有更改放在更改之上。通过拉动反转,它是另一种方式。首先是来自远程存储库的更改,然后您的更改将添加到顶部。从本质上讲,拉动基数有两个好处:

  • 它保留了有序的git历史记录,因为您的更改始终是最后添加的
  • 如果遇到冲突,它可以帮助您解决冲突,因为您可以更轻松地调整自己的更改

如果从远程存储库中提取时已更改但未更改的文件,则会要求您先保存已更改的文件。在完成所有更改后,您可以再次应用存储。存储将在本文后面解释。

Git状态,日志和历史记录

有三个基本的git命令可以为您提供有关当前和最近更改的项目状态。它们不会更改本地存储库中的任何内容,只会向您显示信息。例如,每当要检查本地暂存和未暂存的更改时,请键入:

git status

每当您想要查看与最近提交相比的本地非暂停更改时,请键入:

git diff

每当您想要查看提交的git历史记录时,请键入:

git log

默认设置git log对大多数人没有帮助。每次提交都占用太多空间,很难扫描历史记录。您可以使用以下配置来设置更简洁的别名:

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

现在你可以用git lg而不是git log。试试看看差异。

分枝

Git Branches用于多种用例。想象一下,您正在为您的项目开发一项新功能。您希望为其打开一个新分支,以独立于整个项目跟踪更改,更具体:独立于主分支。在将分支合并到主分支之前,您(或其他人)可以查看更改。

另一个用例是您在开发人员团队中工作。您希望让每个人都可以独立完成改进,错误修复和功能。因此,从主分支分支出这些用例是有意义的。Git分支的基本命令是什么?您可以自己创建一个新分支:

git checkout -b 

或者检查已经存在的分支。

git checkout 

当分支由另一个协作者新创建并且您的本地存储库尚不知道时,您可以从远程存储库中获取所有分支信息。毕竟分支也是远程跟踪的。之后,您可以签出本地存储库中的分支。

git fetch
git checkout 

进入分支后,您可以从远程存储库中提取它的所有最新更改。

git pull --rebase origin 

现在,您可以开始调整代码git add .git commit它们,并最终推送您的更改。但是,不是将它们推送到主分支,而是将它们推送到分支机构。

git push origin 

这就是你如何为你的项目所谓的功能分支工作。其他开发人员可以在这些分支上进行协作,最终将分支在Pull Request中合并到master分支。

合并拉取请求

在某些时候,您希望将分支合并到主分支。在合并之前,您将使用GitHub接口打开Pull Request(PR)。Pull Requests有助于激发讨论和同行评审,以提高代码质量并在协作者之间分享知识。

在打开PR之前,我通常按照这些步骤检查分支,获取所有更新以将它们与我自己合并,从主分支获取所有最近的更改,并强制将所有更改推送到分支本身。

首先,当在主分支上时,将主分支更新为最近的更改:

git pull --rebase origin master

二,结账分行:

git checkout 

如果您还没有分支,请先从远程存储库中获取所有分支,然后签出分支:

git fetch
git checkout 

第三,从分支中拉出最近的所有变化:

git pull --rebase origin 

第四,从最近的主分支机构本地改变所有变化:

git rebase master

最后但并非最不重要的是,强制将所有更改推送到远程分支:

git push -f origin 

分支与来自所有协作者的更改,您的更改以及来自主分支的更改同步。最后,当在远程存储库中更新分支时,您可以点击GitHub上的“Merge Pull Request”按钮。

解决冲突

有时,当您从远程存储库中提取最近的更改或在分支上对主服务器进行rebase时,会遇到冲突。当Git无法解析同一文件上的多个更改时,就会发生冲突。在与多人合作时,这种情况可能比预期的更频繁。

例如,假设它发生git rebase master在您的分支上。命令行将指示它停止了rebase并向您显示冲突的文件。这没有理由恐慌。您可以打开指定的文件并解决冲突。在文件中,您应该看到更改分开:来自master(HEAD)和分支(通常是提交消息)的更改。您必须决定要采用哪两个版本才能解决冲突。解决所有文件中的所有冲突(通常所有文件都显示在命令行上)后,您可以继续使用rebase:

git add .
git rebase --continue

如果再次运行冲突,则可以解决它们并再次运行命令。

Git Stash

当你想永久地或暂时地抛弃变化时,通常会发生git藏匿。

git stash

后者,当您只想暂存时,可以在想要在其间执行其他操作时使用。例如,修复错误或代表某人创建PR。

藏匿处是一堆。您可以选择最新的存储,将其再次应用到本地存储库。

git stash apply

如果您不希望通过存储“丢弃”所有更改,而只是选择文件,则可以使用checkout命令:

git checkout -- 

该文件从未分级到完全没有变化。但请记住,虽然存储允许您从堆中获取存储,但结帐会恢复文件中的所有更改。因此您无法检索这些更改。

删除分支

合并Pull Request后,通常需要删除远程和本地分支。

git branch -d 
git push origin :

当第一个命令删除本地计算机上的分支时,第二个命令将删除GitHub上的远程分支。在你之后清理总是好的,所以你应该养成这个习惯。

交互式Rebase

我必须承认,它不是Git的必要命令,但我经常使用它来组织我在一个分支上的提交。在我打开它作为其他人的公关之前,我喜欢有一个整洁的分支。整理分支意味着以有意义的顺序提交提交,重写提交消息或“压缩”提交。压缩提交意味着将多个提交合并为一个。

使用交互式rebase时,您可以决定要以交互方式调整的提交数。

git rebase -i HEAD˜

之后,由于您调整了Git历史记录,因此您需要强制推送您的更改。强制推送将覆盖远程存储库中的Git提交。

git push -f origin master

一般来说,你应该小心推力。一个好的经验法则是你可以在分支上执行它们,但从不在主分支上执行它们。在较大的项目中,强制推送通常在编程上不允许在主分支上。

提交消息约定

当您与他人协作或希望自己提交整洁的提交消息时,您可以遵循Git提交消息约定。有一些惯例。我习惯于遵循Angular社区中提出的这些内容:

  • 专长:一项新功能
  • 修复:错误修复
  • docs:文档更改
  • style:代码样式更改,不会更改实现细节
  • 重构:代码更改既不修复错误也不添加功能
  • perf:改进性能的代码更改
  • 测试:测试代码时
  • 家务:对构建过程或辅助工具和库的更改

他们遵循以下语法: ():

从命令行获取的示例可以是:

git commit -m "feat(todo-list) add filter feature"

这就是你如何为自己和你的团队保持整洁的提交历史。

Git Aliases

Git别名用于通过使用内置的Git命令组成自己的Git命令。别名允许您使Git命令更简洁或对它们进行分组。例如,您可以将两个Git命令分组,以便在一个命令中执行它们。例如,如果你想删除一个分支,这将是有意义的。本地和远程删除将在一个命令中发生。像这样:git nuke。在另一种情况下,你会缩写git pull --rebasegpr

你可能感兴趣的:(git和github的简单介绍)