Git 和 Github 的终极指南

文章亮点:  

  1. Git 简介
  2. Git 存储库结构
  3. Github 的
  4. 通过 HTTPS 或 ssh 访问 Github 中央仓库
  5. 使用 git – 重要的 Git 命令

Git 简介

关于在 ubuntu 上的安装目的,可以参考这篇文章: 如何在 Ubuntu 上安装、配置和使用 GIT? 

Git 是一个分布式版本控制系统。那么,什么是版本控制系统?

版本控制系统是一个系统,当我们在团队或个人中工作时,它会维护您项目的不同版本。(系统管理对文件的更改)随着项目的进展,会向其添加新功能。因此,版本控制系统会为您维护项目的所有不同版本,并且您可以通过为其命名(如 MyProject、MyProjectWithFeature1 等)回滚到所需的任何版本,而不会给您维护不同版本带来任何麻烦。

分布式版本控制系统意味着每个协作者(任何从事团队项目的开发人员)在他/她的本地计算机中都有一个项目的本地存储库,这与 central 不同,团队成员每次将他们的工作更新到主中央存储库时都应该有 Internet 连接。

所以,分布式是指:项目是分布式的。存储库是保存所有项目文件、图像等的区域。就 Github 而言:不同版本的项目对应提交。
关于 Github 介绍的更多细节,可以参考:Github 介绍 

Git 存储库结构

它由 4 个部分组成:

  1. 工作目录:这是您创建项目 (编写代码) 并对其进行更改的本地目录。
  2. 暂存区(或索引):这是您在提交之前首先需要放置项目的区域。这用于其他团队成员的代码审查。
  3. 本地仓库:这是您的本地仓库,您可以在将更改推送到 Github 上的中央仓库之前将更改提交到项目。这就是分布式版本控制系统提供的内容。这对应于我们目录中的 .git 文件夹。
  4. 中央存储库: 这是中央服务器上的主项目,其副本与每个团队成员一起作为本地存储库。

所有存储库结构都是 Git 内部的,对开发人员是透明的。

一些与存储库结构相关的命令:  

// transfers your project from working directory
// to staging area.
git add .

// transfers your project from staging area to 
// Local Repository.
git commit -m "your message here"


// transfers project from local to central repository.
// (requires internet)
git push

Github 的

Github 基本上是 Microsoft 拥有的一家营利性公司,它在线托管 Git 存储库。它帮助用户在线、与其他用户共享他们的 git 存储库,或远程访问它。您还可以在 Github 上免费托管公共存储库。

用户出于各种原因在线共享他们的仓库,包括但不限于项目部署、项目共享、开源贡献、帮助社区等等。

访问 通过 HTTPS 或 SSH 的 Github 中央存储库

在这里,transfer project 意味着 transfer changes,因为 git 非常轻量级并且适用于项目中的更改。它在内部通过使用无损压缩技术并传输压缩文件来执行传输。Https 是访问 Github 中央仓库的默认方式。

  • 通过 git remote add origin http_url:remote 表示远程中央仓库。Origin 对应于您需要定义的中央存储库(在此提供 HTTPS URL),以便将更改推送到 Github。
  • 通过 SSH:远程连接到 Linux 或其他服务器。

如果您通过 ssh 访问 Github,则无需在每次将更改推送到 GitHub 时都键入用户名和密码。

终端命令: 

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
This does the ssh key generation using RSA cryptographic algorithm.

eval "$(ssh-agent -s)" -> enable information about local login session.

ssh-add ~/.ssh/id_rsa -> add to ssh key.
cat ~/.ssh/id_rsa (use .pub file if not able to connect)
add this ssh key to github.


Now, go to github settings -> new ssh key -> create key

ssh -T git@github.com -> activate ssh key (test connection)

Refresh your github Page.

使用 git – 重要的 Git 命令 

Git 用户配置(第一步)  

git --version (to check git version)
git config --global user.name "your name here"
git config --global user.email "your email here"

这些是附加到提交的信息。

初始化目录 

git init 

初始化您的目录以使用 git 并创建本地存储库。.git 文件夹已创建 (OR)

git clone http_url 

如果我们有一个现有的 git 仓库,并且我们想将其内容复制到新的地方,就可以这样做。

连接到远程存储库

git remote add origin http_url/ssh_url 

连接到中央仓库进行 Push/Pull。pull 意味着将远程仓库上的更改采用到您的本地仓库。push 将本地仓库中的更改合并到远程仓库。

git pull origin master

在推送之前,应始终先从中央存储库中提取内容,以便了解其他团队成员的最新工作。它有助于防止合并冲突。这里,master 是指 master 分支(在 Git 中)。

git 中的 Stash Area

git stash

无论暂存区域中存在哪个文件,它都会在提交之前将该文件移动到 stash。

git stash pop

每当我们想从 stash 提交文件时,我们应该使用这个命令。

git stash clear

通过执行此作,将删除存储区域中的所有文件。

将文件添加到远程存储库的步骤: 

首先,您的文件位于您的工作目录中,通过键入将其移动到暂存区域:

git add -A (for all files and folders)
#To add all files only in the current directory
git add .

Git Status:此处,未跟踪的文件是指您尚未添加到暂存区域的文件。Changes are not staged for commit 意味着您在工作目录中对该文件进行更改之前暂存了文件,并且需要再次暂存更改。Changes ready to be commit:这些是已提交并准备推送到中央存储库的文件。

git status
git commit -a -m "message for commit"
-a: commit all files and for files that have been 
     staged earlier need not to be git add once more
-a option does that automatically.
git push origin master -> pushes your files to 
                         github master branch
git push origin anyOtherBranch -> pushes any 
                      other branch to github.
git log ; to see all your commits
git checkout commitObject(first 8 bits) file.txt-> 
revert back to this previous commit for file file.txt

以前的提交可以通过 git log 命令看到。

HEAD -> pointer to our latest commit.  

提交时忽略文件

在许多情况下,该项目会创建大量日志和其他不相关的文件,这些文件将被忽略。所以要忽略这些文件,我们必须将它们的名称放在 “.gitignore” 文件中。

touch .gitignore
echo "filename.ext" >>.gitignore
#to ignore all files with .log extension
echo "*.log" > .gitignore

现在,在推送新提交时,写入 .gitignore 文件中的文件名将被忽略。获取 commits、commit 和 working tree 之间的更改。

git diff

'git diff' 命令将暂存区域与工作目录进行比较,并告诉我们所做的更改。它比较早期信息和当前修改的信息。

Git 中的分支 

create branch ->
git branch myBranch
or
git checkout -b myBranch -> make and switch to the 
                                  branch myBranch

在你的分支中做工作。然后

git checkout master ; to switch back to master branch

现在,通过以下方式将内容与您的 myBranch 合并:

git merge myBranch (writing in master branch)

此合并将进行新的提交。

另一种方式 

git rebase myBranch

这将以串行方式将 branch 与 master 合并。现在

git push origin master

移除或删除文件

删除。我们使用的 Git 仓库中的一个文件

git rm “file name”

仅从暂存区域中删除

git rm –cached “ file name”

撤消更改

要将所有文件更改为与上一个提交相同,请使用

git checkout -f

为开源做出贡献

开源可能被视为全球用户可以分享他们的意见、自定义或共同解决问题或共同完成所需项目的一种方式。许多公司在 Github 上在线托管存储库,以允许开发人员访问以更改他们的产品。一些公司(不一定是全部)以不同的方式奖励他们的贡献者。

您可以通过 fork 项目、对 fork 的存储库进行所需的更改,然后打开拉取请求来为 Github 上的任何开源项目做出贡献。项目所有者将审查您的项目,并要求改进它或合并它。

登录后免费查看全文
立即登录
  • App下载
  • 项目客服
  • 培训客服
  • 平台客服

TOP

10
2
1