天之道,利而不害;圣人之道,为而不争。|

望兮

园龄:1年5个月粉丝:0关注:1

Git命令速查

初始化Git仓库

git init

初始化一个新的Git仓库。

配置Git用户信息

git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"

设置全局用户名称和邮箱地址。

添加远程仓库

git remote add origin git@github.com:yourusername/yourrepository.git

添加远程仓库地址。

查看远程仓库

git remote -v

显示已添加的远程仓库列表。

添加文件到索引

git add hello.c

将文件添加到索引中准备提交。

提交文件

git commit -m "Add hello.c file with Hello, World! program"

提交文件并添加提交信息。

查看提交日志

git log

显示提交日志,显示提交历史记录。

推送到远程仓库

git push -u origin main

将本地提交推送到远程仓库的main分支。

查看文件差异

git diff

显示工作目录和索引之间的差异。

git diff --staged

显示索引和最后一次提交之间的差异。

查看当前状态

git status

显示工作目录和索引的状态。

查看分支

git branch

显示本地分支列表,当前分支前会有一个*号。

创建新分支

git branch new-branch

创建一个名为new-branch的新分支。

切换分支

git checkout new-branch

切换到new-branch分支。

创建并切换到新分支

git checkout -b new-branch

创建并切换到new-branch分支。

合并分支

git checkout main
git merge new-branch

new-branch分支合并到main分支。

删除分支

git branch -d new-branch

删除new-branch分支。

显示提交的简短统计信息

git log --oneline

显示每个提交的简短统计信息。

回滚提交

git revert <commit-hash>

创建一个新的提交,撤销指定的提交。

重置文件到特定版本

git reset <commit-hash> --hard

将当前分支重置到指定的提交,并丢弃所有更改。

克隆远程仓库

git clone git@github.com:yourusername/yourrepository.git

克隆远程仓库到本地。

获取远程更新

git fetch

从远程仓库获取更新,但不合并到本地分支。

拉取远程更新并合并

git pull

从远程仓库拉取更新并自动合并到当前分支。

显示最近的提交日志

git log --graph --oneline --all

显示带有图形表示的提交日志。

忽略文件

创建一个.gitignore文件,添加你想要Git忽略的文件或目录。例如:

*.log
*.tmp
node_modules/

完整示例工作流程

以下是一个完整的工作流程示例,包括创建文件、提交、分支操作等:

# 初始化Git仓库
git init

# 设置用户信息
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"

# 添加远程仓库
git remote add origin git@github.com:yourusername/yourrepository.git

# 创建文件并添加内容
echo '#include <stdio.h>\n\nint main() {\n    printf("Hello, World!\\n");\n    return 0;\n}' > hello.c

# 添加文件到索引
git add hello.c

# 提交文件
git commit -m "Add hello.c file with Hello, World! program"

# 推送到远程仓库
git push -u origin main

# 查看文件差异
git diff

# 创建并切换到新分支
git checkout -b new-feature

# 修改文件
echo '// New feature added' >> hello.c

# 添加文件到索引并提交
git add hello.c
git commit -m "Add new feature to hello.c"

# 切换回main分支并合并新分支
git checkout main
git merge new-feature

# 推送到远程仓库
git push

# 删除新分支
git branch -d new-feature

在使用 Git 进行版本控制时,你会遇到一些核心概念和常用命令。理解这些基础概念是有效使用 Git 的关键。

核心概念

  1. 暂存区(Staging Area)
    暂存区是 Git 中的一个层级,用于暂存你的更改,之后可以一次性提交这些更改到你的本地仓库。暂存区提供了一个预览改动的机会,确认无误后再进行提交。

  2. 本地仓库(Local Repository)
    本地仓库是你的项目的一个私有副本,存在于你的计算机上。它包含了所有的文件、历史记录和分支,使你能够在不影响远程仓库(如 GitHub 上的仓库)的情况下进行工作。

  3. 远程仓库(Remote Repository)
    远程仓库通常位于网络上的某个服务上,如 GitHub、GitLab 或 Bitbucket。它允许多个开发者推送和拉取代码,共同协作开发。

常用 Git 命令

  1. 配置命令

    • git config --global user.name "username":设置用户名。
    • git config --global user.email "email@example.com":设置用户邮箱。
  2. 初始化和克隆

    • git init:在当前目录初始化一个新的 Git 仓库。
    • git clone [url]:从远程仓库克隆一份代码到本地。
  3. 基本操作

    • git add [file]:将文件添加到暂存区。
    • git commit -m "message":提交暂存区的内容到本地仓库。
    • git status:查看当前仓库的状态(哪些文件被修改但未暂存,哪些已暂存等)。
    • git log:查看提交历史。
  4. 分支管理

    • git branch:查看本地所有分支。
    • git branch [branch-name]:创建新分支。
    • git checkout [branch-name]:切换到指定分支。
    • git merge [branch]:将指定分支合并到当前分支。
  5. 远程操作

    • git remote add [name] [url]:添加一个新的远程仓库。
    • git push [remote-name] [branch-name]:将代码推送到远程仓库的指定分支。
    • git pull [remote-name] [branch-name]:从远程仓库拉取代码并自动合并到当前分支。
    • git fetch [remote-name]:从远程仓库获取最新的历史,但不自动合并。
  6. 撤销操作

    • git checkout -- [file]:撤销指定文件的修改。
    • git reset --hard [commit]:重置当前分支的HEAD到指定提交,同时丢弃之后的所有更改。
    • git revert [commit]:生成一个新提交,该提交撤销指定提交的更改。

补充 Git 命令

  1. 查看差异

    • git diff:显示工作目录中未暂存的更改。
    • git diff --stagedgit diff --cached:显示已暂存的与最后一次提交的差异。
    • git diff [branch1]...[branch2]:显示两个分支之间的差异。
  2. 查看状态和日志

    • git status:显示工作目录和暂存区状态。
    • git log:显示当前分支的版本历史。
    • git log --oneline:显示简短的提交历史。
    • git log --graph:以图形方式显示分支、合并历史。
  3. 标签管理

    • git tag:列出所有标签。
    • git tag [tag-name]:在当前提交上创建一个新标签。
    • git tag -a [tag-name] -m "message":创建一个含附注的标签。
    • git tag -d [tag-name]:删除一个标签。
  4. 撤销更改

    • git restore [file]:撤销对文件的修改(Git 2.23及以上版本)。
    • git restore --staged [file]:将文件从暂存区移出(Git 2.23及以上版本)。
  5. 重置与回退

    • git reset:重置当前HEAD到指定状态,但不改变工作目录(默认为 --mixed)。
    • git reset --soft [commit]:回退到某个提交,保留源码和暂存区。
    • git reset --hard [commit]:彻底回退到某个提交,清除工作目录和暂存区的所有更改。
  6. 处理大文件

    • 使用 Git LFS(Large File Storage)来处理大文件。需要安装 Git LFS 扩展:

      git lfs install
      git lfs track "*.psd"
      git add .gitattributes
      
  7. 高级分支策略

    • git cherry-pick [commit-id]:选择一个提交从一个分支应用到另一个分支。
    • git rebase [base-branch]:将当前分支的更改重新应用在基底分支之上。
  8. 查看配置和别名

    • git config --list:显示所有 Git 配置。
    • git config --global alias.ci commit:创建一个别名 ci 用于 commit 命令。

Git 基础概念

  1. 暂存区(Staging Area)
    暂存区是 Git 中用于临时保存你的更改,这些更改随后可以提交到本地仓库。这提供了一个机会来审查更改,确认无误后再进行提交。

  2. 本地仓库(Local Repository)
    本地仓库是你的项目的一个私有副本,存储在你的计算机上。它包括所有的文件、历史记录和分支,允许你在不影响远程仓库的情况下进行开发。

  3. 远程仓库(Remote Repository)
    远程仓库通常位于互联网上,例如在 GitHub、GitLab 或 Bitbucket 等平台上。它允许多个开发者推送和拉取代码,以便协同工作。

常用 Git 命令

配置与初始化

  • git config --global user.name "username":设置全局用户名。
  • git config --global user.email "email@example.com":设置全局邮箱。
  • git init:在当前目录初始化一个新的 Git 仓库。
  • git clone [url]:克隆一个远程仓库到本地。

基本操作

  • git add [file]:添加文件到暂存区。
  • git commit -m "message":提交暂存区的更改到本地仓库。
  • git status:查看仓库当前状态。
  • git log:查看提交历史记录。

分支与合并

  • git branch:列出、创建或删除分支。
  • git checkout [branch-name]:切换分支。
  • git merge [branch]:合并指定分支到当前分支。

远程操作

  • git remote add [name] [url]:添加一个新的远程仓库。
  • git push [remote-name] [branch-name]:推送本地分支到远程仓库。
  • git pull [remote-name] [branch-name]:从远程仓库拉取代码并合并到当前分支。
  • git fetch [remote-name]:从远程仓库获取数据到本地。

查看差异

  • git diff:查看工作目录中未暂存的更改。
  • git diff --staged:查看已暂存的与上次提交的差异。

撤销更改

  • git checkout -- [file]:撤销对文件的修改。
  • git reset [commit]:重置当前HEAD到指定提交,可选择性地更新暂存区或工作目录。
  • git revert [commit]:生成一个新提交,撤销指定提交的更改。

高级特性

  • git tag:用于标记发布版本。
  • git rebase:重新整理提交历史。
  • git cherry-pick [commit-id]:选择一个提交并应用到其他分支。

处理大文件

  • 使用 Git LFS(Large File Storage)来管理大文件:

    git lfs install
    git lfs track "*.psd"
    git add .gitattributes
    

1. 工作目录(Working Directory)

工作目录是你在计算机上实际看到的文件和目录,这里包含了当前项目的所有文件。当你编辑文件时,这些更改发生在工作目录中。这些文件尚未被 Git 跟踪,除非你显式地告诉 Git 去注意(通过 git add 命令将它们加入暂存区)。

2. 暂存区(Staging Area)

暂存区,也称为索引,是一个准备区,用于临时保存你对工作目录中文件所做的更改。通过 git add 命令,你可以选择性地添加工作目录中的更改到暂存区。只有在暂存区中的更改才会被包括在下一次提交中。暂存区允许你细致地控制即将提交的代码,确保只提交你想要的更改。

3. 本地仓库(Local Repository)

本地仓库是你的项目的 Git 数据库,存储了项目的历史记录、分支、标签等信息。当你执行 git commit 命令时,Git 会将暂存区中的更改提交到本地仓库。这个仓库位于你的计算机上,包括所有的提交历史,使得你可以回滚到之前的状态、创建和合并分支,以及进行其他版本控制操作。

工作流程简述

  1. 修改文件:在工作目录中对文件进行更改。
  2. 暂存更改:通过 git add 将更改的文件添加到暂存区,准备下一次提交。
  3. 提交更改:通过 git commit 将暂存区的更改提交到本地仓库。这一步会将更改永久记录到版本历史中。

通过这个流程,你可以有效地管理你的代码更改和版本控制。暂存区的设计使得你可以在最终提交之前精确控制哪些更改被包括,而本地仓库则是你项目的安全备份,记录了所有的版本历史。这种机制使得 Git 强大而灵活,适用于各种规模的项目开发。

好的,让我们以一个具体的项目目录结构为例来阐述如何使用 Git 中的工作目录、暂存区和本地仓库。假设你正在开发一个简单的网页项目,项目名称为 WebProject

项目目录结构

一个案例: WebProject 目录结构如下:

WebProject/
│
├── index.html
├── style.css
├── script.js
└── img/
    └── logo.png

步骤 1: 初始化 Git 仓库

首先,在项目的根目录下初始化 Git 仓库。打开终端,切换到 WebProject 目录,然后执行:

cd WebProject
git init

这会在 WebProject 目录下创建一个 .git 文件夹,其中包含了所有 Git 需要的数据和对象,此时该目录成为了一个本地仓库。

步骤 2: 工作目录的使用

你在 index.htmlstyle.cssscript.js 文件中进行了修改。这些文件当前处于工作目录中。在工作目录中,Git 还不知道这些更改,直到你明确告诉它。

步骤 3: 使用暂存区

你决定将这些更改添加到下一个提交中。你需要先将这些文件的更改添加到暂存区:

git add index.html style.css script.js

执行这个命令后,这些文件的当前更改被添加到暂存区。在这个阶段,你可以使用 git status 命令查看哪些文件已经被暂存。

步骤 4: 提交到本地仓库

一旦你满意于暂存区的状态,并准备将更改保存到版本历史中,你可以进行提交:

git commit -m "Updated the homepage and styles"

这个命令会将暂存区的内容提交到本地仓库中。现在,这些更改成为了项目的一部分,并记录在版本历史中。

步骤 5: 推送到远程仓库

如果你的项目托管在如 GitHub 这样的远程仓库上,你可能还会想将本地的更改推送到远程仓库:

git remote add origin https://github.com/yourusername/WebProject.git
git push -u origin master

这些命令首先添加了远程仓库的地址,然后将代码推送到远程仓库。

通过这个流程,你可以看到如何在实际的项目中应用工作目录、暂存区和本地仓库的概念。这样的管理方式使得你可以控制何时进行更改的记录,以及如何组织这些更改以便于团队协作和版本控制。

其实情况有些不同。当你使用 git add style.css 命令时,你是在将 style.css 文件当前的状态(即它在那一刻的内容)添加到暂存区。这意味着 Git 在那个特定时刻“记录”了文件的状态,准备将这个状态包含在下一次提交中。

如果在执行 git add 后,你继续修改了 style.css 文件,这些后续的修改不会自动被加入到暂存区。为了包括这些新的修改在内,你需要再次执行 git add style.css 来更新暂存区中文件的状态。

本文作者:望兮

本文链接:https://www.cnblogs.com/xywml/p/18407411

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   望兮  阅读(6)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起