您现在的位置是:首页 >技术教程 >Git 和 Github 的终极指南网站首页技术教程

Git 和 Github 的终极指南

你是不是觉得我很丑 2025-03-24 00:01:03
简介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 上的任何开源项目做出贡献。项目所有者将审查您的项目,并要求改进它或合并它。

    风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。