Post

Git Base

Git default

Git 全局设置

  • git config –global user.name “Cc”
  • git config –global user.email “li_chao_cheng@163.com”

创建 git 仓库

  • mkdir client_user_server
  • cd client_user_server
  • git init
  • touch README.md
  • git add README.md
  • git commit -m “first commit”
  • git remote add origin https://gitee.com/Cc/Cc.git
  • git push -u origin master

已有仓库?

  • cd existing_git_repo
  • git remote add origin https://gitee.com/Cc/Cc.git
  • git push -u origin master

SSH 管理本地 Code

  • 通过命令 ssh-keygen 生成 SSH Key
    • t key 类型
    • C 注释
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ ssh-keygen -t rsa -C "li_chao_cheng@163.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/admin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/admin/.ssh/id_rsa.
Your public key has been saved in /c/Users/admin/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:qbiJsDmN4w1ZiJuH1nWNkMeXdaYrsFnYJ91dFAjDr0k li_chao_cheng@163.com
The key's randomart image is:
+---[RSA 2048]----+
|          .+.o.o+|
|      o o +.*.. .|
|     o = * +.. . |
|. .   o O.oE..   |
|.. . . =So..o    |
| ++ ....  .o     |
|=*... .          |
|==+. o           |
|++..o            |
+----[SHA256]-----+

Cc@DESKTOP-3Q5O26A MINGW64 /d/go/gopath/src/lichaocheng/yun_mao (master)
  • 查看生成的 SSH 公钥和私钥:
    • 私钥文件 id_rsa 公钥文件 id_rsa.pub
1
ls ~/.ssh/
  • 查看
1
cat ~/.ssh/id_rsa.pub
  • 复制到 Git 控制台
  • 测试
1
ssh -T git@github.com

克隆操作(Clone)

在 Git 中,克隆操作用于创建一个远程仓库的本地副本。这是开始使用 Git 项目的第一步,允许您在本地计算机上进行开发。以下是一些常用的克隆命令和相关概念:

常用克隆操作

  • 克隆远程仓库

    1
    
    git clone <repository-url>
    
  • 克隆并指定本地目录

    1
    
    git clone <repository-url> <local-directory>
    
  • 克隆特定分支

    1
    
    git clone -b <branch-name> <repository-url>
    
  • 克隆时设置深度(浅克隆)

    1
    
    git clone --depth <depth> <repository-url>
    

    这将仅克隆最近的几次提交,适用于只需要部分历史的情况。

  • 克隆并排除某些文件或目录(使用 .gitignore 文件):

    1
    
    git clone --filter=blob:none <repository-url>
    

注意事项

  • 克隆操作会创建一个完整的本地仓库,包括所有的提交历史和分支。
  • 克隆的副本与远程仓库连接,您可以在本地进行更改并使用 git push 将更改推送回远程仓库。
  • 在克隆之前,确保您有适当的访问权限,特别是对于私有仓库。

通过使用克隆操作,您可以快速开始使用 Git 项目并在本地进行开发。

拉取操作(Pull)

在 Git 中,拉取操作用于从远程仓库获取最新的更改并将其合并到本地分支。以下是一些常用的拉取命令和相关概念:

常用拉取操作

  • 拉取当前分支的更新

    1
    
    git pull origin <branch-name>
    
  • 拉取并合并所有分支的更新

    1
    
    git pull
    
  • 拉取并重新基于(rebase)最新的远程提交

    1
    
    git pull --rebase origin <branch-name>
    
  • 拉取特定的远程分支

    1
    2
    
    git fetch origin <branch-name>
    git merge origin/<branch-name>
    
  • 查看拉取的详细信息

    1
    
    git pull --verbose
    

注意事项

  • 合并冲突:在拉取时,如果您的本地更改与远程更改冲突,Git 会提示您解决冲突。您需要手动解决这些冲突后再提交。
  • 保持同步:定期拉取最新的远程更改可以确保您的本地仓库与团队的工作保持同步,减少合并冲突的风险。

通过使用拉取操作,您可以轻松地将远程仓库中的最新更改集成到您的本地工作中。

提交代码

添加文件到暂存区

  • 指定文件:git add file_name
  • 当前目录所有:git add .
  • 模糊:git add *.go
  • 指定目录:git add src/
  • 交互模式:git add -i

提交操作(Commit)

在 Git 中,提交操作用于将暂存区的更改记录到本地仓库的历史中。以下是一些常用的提交命令和相关概念:

常用提交操作

  • 提交暂存区的更改

    1
    
    git commit -m "Your commit message"
    
  • 提交并打开编辑器以编写更详细的提交消息

    1
    
    git commit
    
  • 提交所有更改(包括未跟踪的文件)

    1
    
    git commit -a -m "Your commit message"
    
  • 使用特定的编辑器进行提交消息

    1
    
    GIT_EDITOR=nano git commit
    
  • 添加文件到暂存区并立即提交(结合使用):

    1
    
    git add . && git commit -m "Your commit message"
    
  • 提交时跳过暂存区(直接提交工作目录中的更改)

    1
    
    git commit -a -m "Your commit message"
    
  • 查看提交的详细信息

    1
    
    git show commit_hash
    

提交消息规范

  • 提交消息应简洁明了,通常以动词开头(如 “Add”, “Fix”, “Update”)。
  • 可以使用更多行来详细描述更改,第一行通常限制在 50 个字符内。

注意事项

  • 提交是版本控制的核心,确保每次提交都反映出逻辑上的更改,以便于后续的追踪和管理。
  • 定期提交可以减少合并冲突的风险,并保持代码的稳定性。

这些命令和建议帮助开发者有效地管理代码的版本历史。

推送操作(Push)

在 Git 中,推送操作用于将本地仓库的更改上传到远程仓库。以下是一些常用的推送命令和相关概念:

常用推送操作

  • 推送当前分支到远程仓库

    1
    
    git push origin <branch-name>
    
  • 推送所有本地分支到远程仓库

    1
    
    git push origin --all
    
  • 推送标签到远程仓库

    1
    
    git push origin <tag-name>
    
  • 推送所有标签到远程仓库

    1
    
    git push origin --tags
    
  • 强制推送(慎用)

    1
    
    git push --force origin <branch-name>
    
  • 推送到不同的远程分支

    1
    
    git push origin <local-branch>:<remote-branch>
    
  • 推送并设置上游分支(用于后续的简单推送):

    1
    
    git push -u origin <branch-name>
    

注意事项

  • 强制推送会覆盖远程分支的历史,可能会导致其他开发者的工作丢失,因此需要谨慎使用。
  • 在推送之前,最好先拉取(git pull)远程仓库的最新更改,以避免冲突。

这些命令使得开发者能够将本地的更改有效地同步到远程仓库,促进团队协作。

状态查询(Status)

在 Git 中,状态查询用于查看当前工作目录和暂存区的状态。以下是一些常用的状态查询命令:

常用状态查询操作

  • 查看当前状态

    1
    
    git status
    
  • 查看更详细的状态信息

    1
    
    git status -v
    
  • 查看当前分支与其他分支的差异

    1
    
    git status -b
    
  • 查看未跟踪的文件

    1
    
    git status -u
    
  • 查看更改的简洁预览

    1
    
    git status -s
    
  • 查看分支状态的简洁输出

    1
    
    git status -sb
    

这些命令帮助开发者快速获取项目的当前状态,便于管理和跟踪文件的变化。

日志操作(Log)

在 Git 中,日志操作用于查看提交历史。以下是一些常用的日志命令:

常用日志操作

  • 查看提交历史

    1
    
    git log
    
  • 以简洁的方式显示每个提交的一行摘要信息

    1
    
    git log --oneline
    
  • 以图形化方式显示提交历史

    1
    
    git log --graph
    
  • 按作者筛选提交

    1
    
    git log --author="Cc"
    
  • 按日期范围筛选提交

    1
    
    git log --since="2023-01-01" --until="2023-04-30"
    
  • 查看特定文件的提交历史

    1
    
    git log -- file_name
    
  • 查看某个分支或标签的提交历史

    • 查看分支历史:

      1
      
      git log branch_name
      
    • 查看标签历史:

      1
      
      git log tag_name
      
  • 查看合并提交的历史

    1
    
    git log --merges
    
  • 查看非合并提交的历史

    1
    
    git log --no-merges
    
  • 显示某个提交的详细信息

    1
    
    git log commit_hash
    

这些命令使得开发者能够有效地跟踪项目的历史记录,了解代码的演变和变更。

对比操作(Diff)

在 Git 中,对比操作用于查看文件或提交之间的差异。以下是一些常用的对比命令:

常用对比操作

  • 比较两个提交或某个提交与文件之间的差异

    1
    
    git diff [commit1] [commit2] -- [file]
    
  • 比较暂存区与最新提交之间的差异

    1
    
    git diff --staged
    
  • 比较两个不同提交之间的差异

    1
    
    git diff commit1 commit2
    
  • 比较特定文件的修改

    1
    
    git diff file_name
    
  • 比较两个提交之间某个文件的修改

    1
    
    git diff commit1 commit2 -- file_name
    
  • 比较某个分支或标签与当前分支之间的差异

    1
    
    git diff branch_or_tag
    
  • 查看暂存区中的改动

    1
    
    git diff --cached [file]
    
  • 查看缓存状态摘要(显示差异统计)

    1
    
    git diff --stat [file]
    

这些命令帮助你在开发过程中有效地跟踪更改,确保代码质量和版本控制。

撤回操作(Undo)

在 Git 中,撤回操作用于恢复到之前的状态,撤销提交、修改或暂存的内容。以下是一些常用的撤回命令:

常用撤回操作

  • 查看当前状态

    1
    
    git status
    
  • 查看提交历史

    1
    
    git log
    
  • 重置到特定提交(丢弃所有更改)

    1
    
    git reset --hard [hash]
    
  • 强制删除,丢弃所有未保存的修改

    1
    
    git reset --hard
    
  • 撤销最近一次提交,但保留更改

    1
    
    git reset --soft HEAD^
    
  • 取消最近一次提交并取消暂存的内容

    1
    
    git reset --mixed HEAD^
    
  • 彻底删除最近一次提交及其更改(慎用)

    1
    
    git reset --hard HEAD^
    
  • 将分支引用移动到特定的提交

    1
    
    git reset commit_hash
    
  • 取消暂存,但保留工作目录的修改

    1
    
    git reset
    

这些命令提供了灵活的方式来管理和撤回更改,但需要谨慎使用,特别是涉及到 --hard 参数时,因为这将永久删除未保存的更改。

分支(Branch)概念

在 Git 中,分支是一种用于同时开发不同功能或修复问题的机制。分支允许你在主开发线(通常是 mainmaster)上创建独立的工作流,便于协作和版本管理。以下是一些关于分支的基本概念和操作:

分支的主要概念

  1. 独立开发

    • 分支使得多个开发者可以在同一项目中独立工作,互不干扰。
  2. 版本控制

    • 通过创建分支,可以在不影响主线的情况下进行实验和开发。
  3. 合并

    • 完成分支上的工作后,可以将其合并回主分支。这是版本控制的核心功能之一。
  4. 删除分支

    • 一旦分支上的工作完成并合并,可以安全地删除该分支以保持项目的整洁。

常用分支操作

  • 列出远程所有分支

    1
    
    git branch -r
    
  • 列出所有分支

    1
    
    git branch -a
    
  • 创建新分支

    1
    
    git branch new_feature
    
  • 切换到新分支

    1
    
    git checkout new_feature
    
  • 创建并切换到新分支

    1
    
    git checkout -b hotfix_bug
    
  • 删除已合并的分支

    1
    
    git branch -d branch_name
    
  • 强制删除未合并的分支

    1
    
    git branch -D feature_in_progress
    
  • 重命名分支

    1
    
    git branch -m old_name new_name
    
  • 删除远程分支

    • 通过推送删除:
    • 1
      
      git push origin --delete [branch-name]
      
      • 本地删除远程引用:
    • 1
      
      git branch -dr [remote/branch]
      

tag

  • 列出所有标签

    1
    
    git tag
    
  • 创建轻量标签

    1
    
    git tag <tag-name>
    
  • 创建附注标签

    1
    
    git tag -a <tag-name> -m "your message"
    
  • 查看标签信息

    1
    
    git show <tag-name>
    
  • 删除标签

    1
    
    git tag -d <tag-name>
    
  • 推送标签到远程

    1
    
    git push origin <tag-name>
    
  • 推送所有标签

    1
    
    git push origin --tags
    
  • 检出标签

    1
    
    git checkout <tag-name>
    
  • 重命名标签

    1
    2
    
    git tag -d <old-tag-name>
    git tag <new-tag-name> <commit>
    
  • 列出符合特定模式的标签

    1
    
    git tag -l "v1.*"
    
This post is licensed under CC BY 4.0 by the author.