{"id":15931049,"url":"https://github.com/xdpcs/git-learning","last_synced_at":"2026-01-12T07:28:17.826Z","repository":{"id":157277943,"uuid":"544036378","full_name":"XdpCs/git-learning","owner":"XdpCs","description":"Git learning","archived":false,"fork":false,"pushed_at":"2023-01-05T05:42:43.000Z","size":13,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-26T03:58:36.765Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/XdpCs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-01T13:25:04.000Z","updated_at":"2023-08-28T04:20:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"278b00ee-e571-44b4-bc3b-433026c1f6bb","html_url":"https://github.com/XdpCs/git-learning","commit_stats":{"total_commits":2,"total_committers":1,"mean_commits":2.0,"dds":0.0,"last_synced_commit":"0258874da73916eca5d67bbc04d174cbb8e39b7b"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/XdpCs/git-learning","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XdpCs%2Fgit-learning","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XdpCs%2Fgit-learning/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XdpCs%2Fgit-learning/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XdpCs%2Fgit-learning/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/XdpCs","download_url":"https://codeload.github.com/XdpCs/git-learning/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XdpCs%2Fgit-learning/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28336514,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T06:09:07.588Z","status":"ssl_error","status_checked_at":"2026-01-12T06:05:18.301Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-07T01:03:31.241Z","updated_at":"2026-01-12T07:28:17.809Z","avatar_url":"https://github.com/XdpCs.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Git-Learning\n\n## 原理\n\n* 本地仓库由`git`维护三棵\"树\"\n* 第一个是`工作目录`,它拥有实际的文件\n* 第二个是`暂存区`，它类似于缓存的存在，临时保存你的改动\n* 第三个是`HEAD`,它指向最后一次提交的结果\n  ![在这里插入图片描述](images/git.jpg)\n\n## 概念\n\n### 分支\n\n* 分支是用来将特性开发隔离开。在你创建仓库的时候，`master`或`main`是默认的分支。我们一般在其他分支上进行开发，完成后再将它们合并到主分支上\n* 你在本地创建的分支，如果不推送到远端仓库，这个分支就只能在本地可见\n\n## 命令\n\n* 命令只介绍在开发过程中，常用的命令\n\n### 创建新的`git`仓库\n\n```shell\ngit init\n```\n\n### 添加到暂存区\n\n```shell\ngit add \u003cfilename\u003e\ngit add .\n```\n\n* `git add \u003cfilename\u003e` ,添加具体文件到暂存区\n* `git add .`,将所有变动添加到暂存区\n* 这是`git`基本工作流程的第一步，将文件添加到暂存区\n\n### 提交\n\n```shell\ngit commit -m \"提交信息\"\n```\n\n* 将改动提交到本地仓库的`HEAD`中\n* 这是`git`基本工作流程的第二步，将文件提交到本地仓库的`HEAD`中\n\n### 推送\n\n```shell\ngit push origin master\n```\n\n* 将改动提交到远端仓库，可以将`master`换成任何你想要推送的分支\n* 这是`git`基本工作流程的第三步，推送到远端仓库\n\n```shell\ngit remote add origin \u003cserver\u003e\n```\n\n* 将你的仓库连接到远端仓库，若你本地仓库未和远端仓库建立关系\n\n### 分支\n\n```shell\ngit checkout -b feature_xdp\n```\n\n* 创建一个叫做`feature_xdp`的分支\n\n```shell\ngit checkout master\n```\n\n* 切换到主分支\n\n### 更新与合并\n\n```shell\ngit pull \u003c远程主机名\u003e \u003c远程分支名\u003e:\u003c本地分支名\u003e\n```\n\n* 标准格式\n* 以当前工作目录进行获取（fetch）并合并（merge）远端的改动\n\n```shell\ngit pull\ngit pull origin\n```\n\n* 将远端仓库的`origin`的`master`分支拉取到本地，并与本地的当前分支进行合并\n\n```shell\ngit pull origin master:feature_xdp\n```\n\n* 将远端仓库的`origin`的`master`分支拉取过来，与本地的`feature_xdp`分支合并\n\n```shell\ngit pull origin master\n```\n\n* 如果远端仓库的分支是与当前分支合并，则冒号后面的部分可以省略\n\n```shell\ngit merge \u003cbranch\u003e\n```\n\n* 合并其他分支到当前分支\n\n### 冲突\n\n* `git pull \u003c远程主机名\u003e \u003c远程分支名\u003e:\u003c本地分支名\u003e` 和 `git merge \u003cbranch\u003e`,在两种情况下，`git`\n  会尝试自动合并改动，但是并不是每一次都会成功，可能会出现冲突。这个时候，需要你手动修改来合并这些冲突\n\n```shell\ngit add \u003cfilename\u003e\n```\n\n* 合并完成后，需要将它们添加到暂存区\n\n```shell\ngit diff \u003csource_branch\u003e \u003ctarget_branch\u003e\n```\n\n* 可以使用该命令预览差异，在合并改动之前\n\n### log\n\n```shell\ngit log\n```\n\n* 查看本地仓库历史记录\n\n```shell\ngit log --author=XdpCs\n```\n\n* 只看`XdpCs`的提交记录\n\n```shell\ngit log --pretty=oneline\n```\n\n* 每一条提交记录只占一行输出\n\n```shell\ngit log --graph --oneline --decorate --all\n```\n\n* 通过树形结构来展示所有的分支，每个分支都标明它的名字和标签\n\n```shell\ngit log --name-status\n```\n\n* 查看哪些文件发生改变\n\n### 标签\n\n* 通过创建标签，发布软件是一个不错的方法\n\n```shell\ngit tag 1.0.0 1fd11181114\n```\n\n* 创建一个叫`1.0.0`的标签，`1fd11181114`是你想要标记的`提交ID`\n* `提交ID`可以通过上面的`git log`获取\n* 只要`提交ID`具有指向唯一性，`提交ID`可以少几位\n\n### 替换本地改动\n\n```shell\ngit checkout -- \u003cfilename\u003e\n```\n\n* 使用`HEAD`中最新的内容替换掉你工作目录中的文件\n* 已添加到暂存区的改动和新文件不会受到影响\n\n```shell\ngit fetch origin\ngit reset --hard origin/master\n```\n\n* 丢弃本地的所有改动和提交，从远端服务器获取最新的版本历史，并将本地分支指向它\n\n### 克隆仓库\n\n```shell\ngit clone ../xdpcs.github.io\n```\n\n* 创建一个本地仓库的克隆版本\n\n```shell\ngit clone git@github.com:XdpCs/Solidity-Learning.git\n```\n\n* 克隆一个远端服务器上的仓库","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxdpcs%2Fgit-learning","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxdpcs%2Fgit-learning","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxdpcs%2Fgit-learning/lists"}