From 2d0cea290e8f00cbd1fbe36ec56deeb964d05e09 Mon Sep 17 00:00:00 2001 From: jaywcjlove Date: Tue, 1 Nov 2022 06:34:39 +0000 Subject: [PATCH] doc: Update `git.md` 5c0f89908ef5996a47a97dff07eb2002c9eba15d --- docs/git.html | 270 ++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 227 insertions(+), 43 deletions(-) diff --git a/docs/git.html b/docs/git.html index 60080f3c..4274a63e 100644 --- a/docs/git.html +++ b/docs/git.html @@ -41,19 +41,22 @@

本备忘单总结了常用的 Git 命令行指令,以供快速参考。

入门

+

入门

创建存储库

创建一个新的本地存储库

-
$ git init [project name]
+
$ git init [项目名称]
 
-

克隆存储库

-
$ git clone git_url
+

克隆存储库(代码仓库)

+
$ git clone <git_url>
 

将存储库克隆到指定目录

-
$ git clone git_url 指定目录
+
$ git clone <git_url> 指定目录
 
-

做出改变

- +

将存储库克隆到指定目录,并指定分支

+
$ git clone <git_url> -b <分支名称> 指定目录
+
+

做出改变

+

在工作目录中显示修改后的文件,为您的下一次提交暂存

$ git status
 
@@ -84,7 +87,8 @@

在指定分支之前应用当前分支的任何提交

$ git rebase [branch]
 
-

配置

+

配置

+

设置将附加到您的提交和标签的名称

$ git config --global user.name "name"
 
@@ -97,30 +101,55 @@

在文本编辑器中编辑全局配置文件

$ git config --global --edit
 
-

使用分支

+

显示本地 repo 配置设置

+
$ git config --list
+
+

删除全局设置

+
$ git config --global --unset <entry-name>
+
+

使用分支

+

列出所有本地分支

$ git branch
 

列出所有分支,本地和远程

$ git branch -av
 
-

切换到 my_branch,并更新工作目录

+

切换到 my_branch,并更新工作目录

$ git checkout my_branch
 
-

创建一个名为 new_branch 的新分支

+

创建一个名为 new_branch 的新分支

$ git checkout -b new_branch
 
-

删除名为 my_branch 的分支

+

删除名为 my_branch 的分支

$ git branch -d my_branch
 
-

将分支 A 合并到分支 B

+

将分支 A 合并到分支 B

$ git checkout branchB
 $ git merge branchA
 

标记当前提交

$ git tag my_tag
 
-

观察你的存储库

+

从远程分支中创建并切换到本地分支

+
$ git checkout -b <branch-name> origin/<branch-name>
+
+

临时提交

+
# 保存已修改和分阶段的更改
+$ git stash
+# 列出隐藏文件更改的堆栈顺序
+$ git stash list
+# 从存储堆栈顶部编写工作
+$ git stash pop
+# 丢弃存储堆栈顶部的更改
+$ git stash drop
+# 回到某个 stash 的状态
+$ git stash apply <stash@{n}>
+# 删除所有的 stash
+$ git stash clear
+
+

观察你的存储库

+

显示当前活动分支的提交历史

$ git log
 
@@ -136,7 +165,18 @@

以人类可读的格式显示 Git 中的任何对象

$ git show [SHA]
 
-

同步

+

重构文件名

+
# 从工作目录中删除文件并暂存删除
+git rm <filename>
+
+# 从版本控制中删除文件但在本地保留文件
+git rm --cached <filename>
+
+# 更改文件名并准备提交
+git mv <filename-orig> <filename-renamed>
+
+

同步

+

从该 Git 远程获取所有分支

$ git fetch [alias]
 
@@ -156,7 +196,8 @@

将另一个分支的一个特定提交合并到当前分支

$ git cherry-pick [commit_id]
 
-

远程

+

远程

+

添加一个 git URL 作为别名

$ git remote add [alias] [url]
 
@@ -172,19 +213,6 @@

更改 git repo 的 URL

$ git remote set-url origin [git_url]
 
-

临时提交

-

保存已修改和分阶段的更改

-
$ git stash
-
-

列出隐藏文件更改的堆栈顺序

-
$ git stash list
-
-

从存储堆栈顶部编写工作

-
$ git stash pop
-
-

丢弃存储堆栈顶部的更改

-
$ git stash drop
-

跟踪路径更改

从项目中删除文件并暂存删除以进行提交

$ git rm [file]
@@ -196,17 +224,27 @@
 
$ git log --stat -M
 

忽略文件

-
/logs/*
-# “!” 意思是不要忽视
-!logs/.gitkeep
-# 忽略 Mac 系统文件
-.DS_store
-# 忽略 node_modules 文件夹
-node_modules
-# 忽略 SASS 配置文件
-.sass-cache
+
/logs/*
+# “!” 意思是不要忽视
+!logs/.gitkeep
+# 忽略 Mac 系统文件
+.DS_store
+# 忽略 node_modules 文件夹
+node_modules
+# 忽略 SASS 配置文件
+.sass-cache
 

.gitignore 文件指定了 Git 应该忽略的未跟踪的文件

+

git 配置 ssh 代理

+
$ cat ~/.ssh/config
+Host gitlab.com
+# 直接使用 shadowsocks 提供的 socks5 代理端口
+ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p 
+
+Host github.com
+ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p    
+
+

Git 技巧

重命名分支

    @@ -245,7 +283,7 @@

    快速切换到上一个分支

    $ git checkout -
     
    -

    只获取远程分支

    +

    只获取所有远程分支

    $ git branch -r
     

    从另一个分支签出单个文件

    @@ -338,16 +376,162 @@
    $ git branch --merged master | grep -v '^\*\|  master' | xargs -n 1 git branch -d
     
    -

中文乱码的解决方案

-
$ git config --global core.quotepath false
-

把 A 分支的某一个 commit,放到 B 分支上

# 切换到 B 分支
 $ git checkout <B>
 # 将 A 分支 <hash-id> 的内容 pick 到 B 分支
 $ git cherry-pick <hash-id>
 
-
© 2022 Kenny Wang, All rights reserved.