修改格式;

补充生成和应用 Patch 方法.

Signed-off-by: ithink.chan <chenyang@autoai.com>
This commit is contained in:
ithink.chan 2020-01-08 16:42:51 +08:00
parent 26d4bcfc23
commit 3971e42466
1 changed files with 153 additions and 52 deletions

View File

@ -6,28 +6,38 @@
在使用 Git 前需要配置好用户名和电子邮件信息Git 需要使用这些配置信息用于提交代码。在 Git 命令行下,可以使用如下命令设置用户名和电子邮件信息: 在使用 Git 前需要配置好用户名和电子邮件信息Git 需要使用这些配置信息用于提交代码。在 Git 命令行下,可以使用如下命令设置用户名和电子邮件信息:
git config --global user.name "Your name" ```sh
git config --global user.email "Your email" git config --global user.name "Your name"
git config --global user.email "Your email"
```
查看当前配置的用户名和电子邮件信息命令如下: 查看当前配置的用户名和电子邮件信息命令如下:
git config --global user.name ```sh
git config --global user.email git config --global user.name
git config --global user.email
```
git 访问某些 https 连接会出现 SSL 认证错误,此时可通过全局配置关闭 SSL 认证: git 访问某些 https 连接会出现 SSL 认证错误,此时可通过全局配置关闭 SSL 认证:
git config --global http.sslVerify "false" ```sh
git config --global http.sslVerify "false"
```
### Git 与 SSH ### Git 与 SSH
如果想访问远程 Git 服务器,则最好通过 SSH 方式。这需要先生成 RSA 密钥,然后将公钥部署到远程服务器上即可。生成 RSA 密钥可使用 OpenSSH命令如下Windows 下该命令位于 /\<git 安装目录\>/usr/bin/ 下,可使用 Git Bash 直接访问): 如果想访问远程 Git 服务器,则最好通过 SSH 方式。这需要先生成 RSA 密钥,然后将公钥部署到远程服务器上即可。生成 RSA 密钥可使用 OpenSSH命令如下Windows 下该命令位于 /\<git 安装目录\>/usr/bin/ 下,可使用 Git Bash 直接访问):
ssh-keygen ```sh
ssh-keygen
```
之后一路回车,生成文件为: 之后一路回车,生成文件为:
<Usr>/.ssh/id_rsa ```sh
<Usr>/.ssh/id_rsa.pub <Usr>/.ssh/id_rsa
<Usr>/.ssh/id_rsa.pub
```
其中 id_rsa 为私钥id_rsa.pub 为公钥,将公钥中的内容拷贝到远程服务器中对应的设置项中即可。 其中 id_rsa 为私钥id_rsa.pub 为公钥,将公钥中的内容拷贝到远程服务器中对应的设置项中即可。
@ -39,7 +49,9 @@ TortoiseGit 需要额外修改 Settings->Network->SSH 为 C:\Windows\System32\Op
在要进行版本管理的目录下键入 在要进行版本管理的目录下键入
git init ```sh
git init
```
命令,可完成软件版本仓库的创建操作,在创建完软件仓库后,该目录下会生成一个名为“.git”的隐藏文件夹该文件夹下保存了软件的历史和分支等版本信息通常不需要直接操作该目录。 命令,可完成软件版本仓库的创建操作,在创建完软件仓库后,该目录下会生成一个名为“.git”的隐藏文件夹该文件夹下保存了软件的历史和分支等版本信息通常不需要直接操作该目录。
@ -47,31 +59,43 @@ TortoiseGit 需要额外修改 Settings->Network->SSH 为 C:\Windows\System32\Op
版本仓库所在文件夹下的文件并不是全部都会被 git 跟踪和管理。如果需要将该文件夹下将某个文件纳入到版本管理中,则需要通过 add 命令添加到 git 仓库中进行跟踪: 版本仓库所在文件夹下的文件并不是全部都会被 git 跟踪和管理。如果需要将该文件夹下将某个文件纳入到版本管理中,则需要通过 add 命令添加到 git 仓库中进行跟踪:
git add <file name> ```sh
git add <file name>
```
例如: 例如:
git add main.c ```sh
git add main.c
```
## 取消跟踪文件 ## 取消跟踪文件
如果对某个文件取消跟踪,但还需要保留本地文件,则使用如下命令: 如果对某个文件取消跟踪,但还需要保留本地文件,则使用如下命令:
git rm --cached <file name> ```sh
git rm --cached <file name>
```
如果取消对某个文件的版本管理,并且要删除该文件,则使用如下命令: 如果取消对某个文件的版本管理,并且要删除该文件,则使用如下命令:
git rm --f <file name> ```sh
git rm --f <file name>
```
## Clone 仓库 ## Clone 仓库
更多的时候,不需要手动创建 git 仓库。git 仓库很可能已经存在于远端服务器或别人的计算机中,这时候我们只需要将其 clone 到本地即可: 更多的时候,不需要手动创建 git 仓库。git 仓库很可能已经存在于远端服务器或别人的计算机中,这时候我们只需要将其 clone 到本地即可:
git clone <URL> ```sh
git clone <URL>
```
例如: 例如:
git clone https://192.168.1.8/path/repo.git ```sh
git clone https://192.168.1.8/path/repo.git
```
git 支持 http、https、ssh 格式的 URL 访问。 git 支持 http、https、ssh 格式的 URL 访问。
@ -79,12 +103,16 @@ git 支持 http、https、ssh 格式的 URL 访问。
在修改代码或相关文件后,需要先将变更缓存到本地,这一步被称作 commit。带签名的提交命令如下 在修改代码或相关文件后,需要先将变更缓存到本地,这一步被称作 commit。带签名的提交命令如下
git add . ```sh
git commit -s -m "Message" git add .
git commit -s -m "Message"
```
如果想对上次提交进行修改,或将本次提交与上次提交合并,可为 commit 增加 amend 参数,如下: 如果想对上次提交进行修改,或将本次提交与上次提交合并,可为 commit 增加 amend 参数,如下:
git commit --amend ```sh
git commit --amend
```
之后可通过交互界面进行编辑和修改。 之后可通过交互界面进行编辑和修改。
@ -92,18 +120,24 @@ git 支持 http、https、ssh 格式的 URL 访问。
如果文件尚未 stash可使用 checkout 命令撤回修改: 如果文件尚未 stash可使用 checkout 命令撤回修改:
git checkout -- <file> ```sh
git checkout -- <file>
```
如果文件已 stash 但是没有 commit可使用 reset 命令撤回修改: 如果文件已 stash 但是没有 commit可使用 reset 命令撤回修改:
git reset HEAD <file> ```sh
git reset HEAD <file>
```
如果文件已经 commit可使用下列命令 如果文件已经 commit可使用下列命令
git reset --soft <commit id> ```sh
git reset --hard <commit id> git reset --soft <commit id>
git reset --hard HEAD~10 git reset --hard <commit id>
git revert <commit id> git reset --hard HEAD~10
git revert <commit id>
```
注意 soft 与 hard 的区别主要在于 hard 不保留工作区中的内容,但是 soft 保留工作区中的内容。而 reset 与 revert 的区别在于 revert 是放弃指定提交的修改但是会生成一次新的提交需要填写提交注释以前的历史记录都在而reset是指将HEAD指针指到指定提交历史记录中不会出现放弃的提交记录。 注意 soft 与 hard 的区别主要在于 hard 不保留工作区中的内容,但是 soft 保留工作区中的内容。而 reset 与 revert 的区别在于 revert 是放弃指定提交的修改但是会生成一次新的提交需要填写提交注释以前的历史记录都在而reset是指将HEAD指针指到指定提交历史记录中不会出现放弃的提交记录。
@ -111,70 +145,100 @@ git 支持 http、https、ssh 格式的 URL 访问。
通过以下命令创建新的本地分支: 通过以下命令创建新的本地分支:
git branch <branch> ```sh
git branch <branch>
```
还可以通过以下命令查看分支情况: 还可以通过以下命令查看分支情况:
git branch ```sh
git branch -a git branch
git branch -a
```
使用下列命令切换到对应分支: 使用下列命令切换到对应分支:
git checkout <branch> ```sh
git checkout <branch>
```
删除某本地分支的命令为: 删除某本地分支的命令为:
git branch -d <branch> ```sh
git branch -d <branch>
```
删除某远程分支的命令为 删除某远程分支的命令为
git push <repository> --delete <branch> ```sh
git push <repository> --delete <branch>
```
将某个分支与当前分支合并的命令为: 将某个分支与当前分支合并的命令为:
git merge <branch> ```sh
git merge <branch>
```
以下命令为本地分支指定一个与之对应的远程分支: 以下命令为本地分支指定一个与之对应的远程分支:
git branch --set-upstream-to=origin/<remote branch> <local branch> ```sh
git branch --set-upstream-to=origin/<remote branch> <local branch>
```
## 查看历史 ## 查看历史
版本管理提供的最主要的功能之一便是历史追溯,可以查看每一次变更的内容,相关提交的信息等。通过下列命令实现: 版本管理提供的最主要的功能之一便是历史追溯,可以查看每一次变更的内容,相关提交的信息等。通过下列命令实现:
git show ```sh
git show
```
## Tag 节点 ## Tag 节点
可以通过: 可以通过:
git tag ```sh
git tag
```
命令列出当前仓库中的所有标签,创建一个带附注的的标签则可以使用以下命令实现: 命令列出当前仓库中的所有标签,创建一个带附注的的标签则可以使用以下命令实现:
git tag -a <tag name> -m "Message" ```sh
git tag -a <tag name> -m "Message"
```
还可以使用: 还可以使用:
git tag <tag name> ```sh
git tag <tag name>
```
创建一个轻量标签。 创建一个轻量标签。
## 推送本地分支到远程分支 ## 推送本地分支到远程分支
git push <repository> <local refspec>:<remote refspec> ```sh
git push <repository> <local refspec>:<remote refspec>
```
如,推送本地的 new 分支与 origin 主机的 master 分支合并: 如,推送本地的 new 分支与 origin 主机的 master 分支合并:
git push origin new:master ```sh
git push origin new:master
```
## 从远程分支更新本地分支 ## 从远程分支更新本地分支
git pull <repository> <remote refspec>:<local refspec> ```sh
git pull <repository> <remote refspec>:<local refspec>
```
如,要取回 origin 主机的 new 分支,与本地的 master 分支合并: 如,要取回 origin 主机的 new 分支,与本地的 master 分支合并:
git pull origin new:master ```sh
git pull origin new:master
```
如果远程仓库有所变更,但本地代码没有更新就进行了 commit在使用 git pull 的时候会进行自动 merge如果有冲突则需要手动解决。 如果远程仓库有所变更,但本地代码没有更新就进行了 commit在使用 git pull 的时候会进行自动 merge如果有冲突则需要手动解决。
@ -182,39 +246,55 @@ git 支持 http、https、ssh 格式的 URL 访问。
删除远程分支命令为: 删除远程分支命令为:
git push origin --delete <branchName> ```sh
git push origin --delete <branchName>
```
删除远程 Tag 的命令为: 删除远程 Tag 的命令为:
git push origin --delete tag <tagname> ```sh
git push origin --delete tag <tagname>
```
如果远程分支/Tab 已经删除,需要同步到本地,可使用以下命令: 如果远程分支/Tab 已经删除,需要同步到本地,可使用以下命令:
git remote prune <repository> ```sh
git remote prune <repository>
```
## 推送/获取 Tag ## 推送/获取 Tag
推送本地 Tag 到远程的命令为: 推送本地 Tag 到远程的命令为:
git push --tags ```sh
git push --tags
```
从远程获取 Tag 到本地的命令为: 从远程获取 Tag 到本地的命令为:
git fetch origin tag <tagname> ```sh
git fetch origin tag <tagname>
```
## Rebase ## Rebase
由于合并分支,或从远程仓库中更新代码产生了额外的 merge 节点,此时可通过 rebase 命令消除这些额外的 merge 节点,使 git 历史的线性更好: 由于合并分支,或从远程仓库中更新代码产生了额外的 merge 节点,此时可通过 rebase 命令消除这些额外的 merge 节点,使 git 历史的线性更好:
git rebase [-i] [upstream] ```sh
git rebase [-i] [upstream]
```
通过增加 -i 参数可进入交互模式。使用 Rebase 还可以将多次提交进行合并,或设置起止点。 通过增加 -i 参数可进入交互模式。使用 Rebase 还可以将多次提交进行合并,或设置起止点。
git rebase [-i] [start point] [end point] ```sh
git rebase [-i] [start point] [end point]
```
如果发生了冲突,可以在解决冲突并 add 后,通过: 如果发生了冲突,可以在解决冲突并 add 后,通过:
git rebase --continue ```sh
git rebase --continue
```
命令继续 rebase。 命令继续 rebase。
@ -222,10 +302,31 @@ git 支持 http、https、ssh 格式的 URL 访问。
基本原理是增加上游仓库,然后进行 fetch 和 merge最后 push 到当前仓库,如果已经添加了上游仓库,无需再次添加。 基本原理是增加上游仓库,然后进行 fetch 和 merge最后 push 到当前仓库,如果已经添加了上游仓库,无需再次添加。
git remote add upstream <upstream repository url> ```sh
git fetch upstream git remote add upstream <upstream repository url>
git merge upstream/master git fetch upstream
git push <repository> git merge upstream/master
git push <repository>
```
## Patch
### 生成 Patch
先 git log 看一下有哪些提交,然后看一下要从那个 commit id 开始生成 Patch。然后从 commit id 开始(不包含该 commit id生成 Patch
```sh
git format-patch <commit id>
```
### 应用 Patch
将所有 Patch 拷贝到某一文件夹下,然后:
```sh
git am --abort
git am <patch dir>/*.patch
```
## 参考 ## 参考