补充 rebase 交互指令,修正格式.
Signed-off-by: rick.chan <chenyang@autoai.com>
This commit is contained in:
parent
dc37112389
commit
8b51980008
|
@ -4,14 +4,14 @@
|
||||||
|
|
||||||
### 1.1.Git 初始配置
|
### 1.1.Git 初始配置
|
||||||
|
|
||||||
在使用 Git 前需要配置好用户名和电子邮件信息,Git 需要使用这些配置信息用于提交代码。在 Git 命令行下,可以使用如下命令设置用户名和电子邮件信息:
|
在使用 Git 前需要配置好用户名和电子邮件信息,Git 需要使用这些配置信息用于提交代码。在 Git 命令行下,可以使用如下命令设置用户名和电子邮件信息:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git config --global user.name "Your name"
|
git config --global user.name "Your name"
|
||||||
git config --global user.email "Your email"
|
git config --global user.email "Your email"
|
||||||
```
|
```
|
||||||
|
|
||||||
查看当前配置的用户名和电子邮件信息命令如下:
|
查看当前配置的用户名和电子邮件信息命令如下:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git config --global user.name
|
git config --global user.name
|
||||||
|
@ -32,44 +32,44 @@ git config --global http.postBuffer 524288000
|
||||||
|
|
||||||
### 1.2.Git 与 SSH
|
### 1.2.Git 与 SSH
|
||||||
|
|
||||||
如果想访问远程 Git 服务器,则最好通过 SSH 方式。这需要先生成 RSA 密钥,然后将公钥部署到远程服务器上即可。生成 RSA 密钥可使用 OpenSSH,命令如下(Windows 下该命令位于 /\<git 安装目录\>/usr/bin/ 下,可使用 Git Bash 直接访问):
|
如果想访问远程 Git 服务器,则最好通过 SSH 方式。这需要先生成 RSA 密钥,然后将公钥部署到远程服务器上即可。生成 RSA 密钥可使用 OpenSSH,命令如下(Windows 下该命令位于 /\<git 安装目录\>/usr/bin/ 下,可使用 Git Bash 直接访问):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ssh-keygen
|
ssh-keygen
|
||||||
```
|
```
|
||||||
|
|
||||||
之后一路回车,生成文件为:
|
之后一路回车,生成文件为:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
<Usr>/.ssh/id_rsa
|
<Usr>/.ssh/id_rsa
|
||||||
<Usr>/.ssh/id_rsa.pub
|
<Usr>/.ssh/id_rsa.pub
|
||||||
```
|
```
|
||||||
|
|
||||||
其中 id_rsa 为私钥,id_rsa.pub 为公钥,将公钥中的内容拷贝到远程服务器中对应的设置项中即可。
|
其中 id_rsa 为私钥,id_rsa.pub 为公钥,将公钥中的内容拷贝到远程服务器中对应的设置项中即可。
|
||||||
|
|
||||||
TortoiseGit 需要额外修改 Settings->Network->SSH 为 C:\Windows\System32\OpenSSH\ssh.exe 才可以通过 OpenSSH 密钥来访问服务器。否则默认使用 PuTTY 格式密钥。
|
TortoiseGit 需要额外修改 Settings->Network->SSH 为 C:\Windows\System32\OpenSSH\ssh.exe 才可以通过 OpenSSH 密钥来访问服务器。否则默认使用 PuTTY 格式密钥。
|
||||||
|
|
||||||
## 2.创建仓库
|
## 2.创建仓库
|
||||||
|
|
||||||
软件版本管理依赖于软件仓库的概念,一个软件仓库包容了要进行版本管理的源码和 Release 发布等内容。
|
软件版本管理依赖于软件仓库的概念,一个软件仓库包容了要进行版本管理的源码和 Release 发布等内容。
|
||||||
|
|
||||||
在要进行版本管理的目录下键入
|
在要进行版本管理的目录下键入:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git init
|
git init
|
||||||
```
|
```
|
||||||
|
|
||||||
命令,可完成软件版本仓库的创建操作,在创建完软件仓库后,该目录下会生成一个名为“.git”的隐藏文件夹,该文件夹下保存了软件的历史和分支等版本信息,通常不需要直接操作该目录。
|
命令,可完成软件版本仓库的创建操作,在创建完软件仓库后,该目录下会生成一个名为“.git”的隐藏文件夹,该文件夹下保存了软件的历史和分支等版本信息,通常不需要直接操作该目录。
|
||||||
|
|
||||||
## 3.添加跟踪文件
|
## 3.添加跟踪文件
|
||||||
|
|
||||||
版本仓库所在文件夹下的文件并不是全部都会被 git 跟踪和管理。如果需要将该文件夹下将某个文件纳入到版本管理中,则需要通过 add 命令添加到 git 仓库中进行跟踪:
|
版本仓库所在文件夹下的文件并不是全部都会被 git 跟踪和管理。如果需要将该文件夹下将某个文件纳入到版本管理中,则需要通过 add 命令添加到 git 仓库中进行跟踪:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git add <file name>
|
git add <file name>
|
||||||
```
|
```
|
||||||
|
|
||||||
例如:
|
例如:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git add main.c
|
git add main.c
|
||||||
|
@ -77,13 +77,13 @@ git add main.c
|
||||||
|
|
||||||
## 4.取消跟踪文件
|
## 4.取消跟踪文件
|
||||||
|
|
||||||
如果对某个文件取消跟踪,但还需要保留本地文件,则使用如下命令:
|
如果对某个文件取消跟踪,但还需要保留本地文件,则使用如下命令:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git rm --cached <file name>
|
git rm --cached <file name>
|
||||||
```
|
```
|
||||||
|
|
||||||
如果取消对某个文件的版本管理,并且要删除该文件,则使用如下命令:
|
如果取消对某个文件的版本管理,并且要删除该文件,则使用如下命令:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git rm --f <file name>
|
git rm --f <file name>
|
||||||
|
@ -91,36 +91,36 @@ git rm --f <file name>
|
||||||
|
|
||||||
## 5.Clone 仓库
|
## 5.Clone 仓库
|
||||||
|
|
||||||
更多的时候,不需要手动创建 git 仓库。git 仓库很可能已经存在于远端服务器或别人的计算机中,这时候我们只需要将其 clone 到本地即可:
|
更多的时候,不需要手动创建 git 仓库。git 仓库很可能已经存在于远端服务器或别人的计算机中,这时候我们只需要将其 clone 到本地即可:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone <repository url>
|
git clone <repository url>
|
||||||
```
|
```
|
||||||
|
|
||||||
例如:
|
例如:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://192.168.1.8/path/repo.git
|
git clone https://192.168.1.8/path/repo.git
|
||||||
```
|
```
|
||||||
|
|
||||||
git 支持 http、https、ssh 格式的 URL 访问。
|
git 支持 http、https、ssh 格式的 URL 访问。
|
||||||
|
|
||||||
## 6.提交变更
|
## 6.提交变更
|
||||||
|
|
||||||
在修改代码或相关文件后,需要先将变更缓存到本地,这一步被称作 commit。带签名的提交命令如下:
|
在修改代码或相关文件后,需要先将变更缓存到本地,这一步被称作 commit。带签名的提交命令如下:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git add .
|
git add .
|
||||||
git commit -s -m <message>
|
git commit -s -m <message>
|
||||||
```
|
```
|
||||||
|
|
||||||
如果想对上次提交进行修改,或将本次提交与上次提交合并,可为 commit 增加 amend 参数,如下:
|
如果想对上次提交进行修改,或将本次提交与上次提交合并,可为 commit 增加 amend 参数,如下:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git commit --amend
|
git commit --amend
|
||||||
```
|
```
|
||||||
|
|
||||||
之后可通过交互界面进行编辑和修改。
|
之后可通过交互界面进行编辑和修改。
|
||||||
|
|
||||||
## 7.时光穿梭
|
## 7.时光穿梭
|
||||||
|
|
||||||
|
@ -149,7 +149,7 @@ git revert <commit id>
|
||||||
|
|
||||||
## 8.分支管理
|
## 8.分支管理
|
||||||
|
|
||||||
通过以下命令创建新的本地分支:
|
通过以下命令创建新的本地分支:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git branch <branch>
|
git branch <branch>
|
||||||
|
@ -174,7 +174,7 @@ git checkout <branch>
|
||||||
git push <repository> <local branch>:<remote branch>
|
git push <repository> <local branch>:<remote branch>
|
||||||
```
|
```
|
||||||
|
|
||||||
如,推送本地的 new 分支与 \<repository\> 主机的 master 分支合并:
|
如,推送本地的 new 分支与 \<repository\> 主机的 master 分支合并:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git push <repository> new:master
|
git push <repository> new:master
|
||||||
|
@ -206,7 +206,7 @@ git branch -d <branch>
|
||||||
git push <repository> --delete <branch>
|
git push <repository> --delete <branch>
|
||||||
```
|
```
|
||||||
|
|
||||||
将某个分支与当前分支合并的命令为:
|
将某个分支与当前分支合并的命令为:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# merge 谋 branch 到当前分支.
|
# merge 谋 branch 到当前分支.
|
||||||
|
@ -265,19 +265,19 @@ git diff <commit id 0> <commit id 1> [file/folder]
|
||||||
|
|
||||||
## 11.Tag 管理
|
## 11.Tag 管理
|
||||||
|
|
||||||
可以通过:
|
可以通过:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git tag
|
git tag
|
||||||
```
|
```
|
||||||
|
|
||||||
命令列出当前仓库中的所有标签,创建一个带附注的的标签则可以使用以下命令实现:
|
命令列出当前仓库中的所有标签,创建一个带附注的的标签则可以使用以下命令实现:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git tag -a <tag name> -m <message>
|
git tag -a <tag name> -m <message>
|
||||||
```
|
```
|
||||||
|
|
||||||
还可以使用:
|
还可以使用:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git tag <tag name>
|
git tag <tag name>
|
||||||
|
@ -323,13 +323,13 @@ git remote prune <repository>
|
||||||
|
|
||||||
## 12.Rebase
|
## 12.Rebase
|
||||||
|
|
||||||
由于合并分支,或从远程仓库中更新代码产生了额外的 merge 节点,此时可通过 rebase 命令消除这些额外的 merge 节点,使 git 历史的线性更好:
|
由于合并分支,或从远程仓库中更新代码产生了额外的 merge 节点,此时可通过 rebase 命令消除这些额外的 merge 节点,使 git 历史的线性更好:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git rebase [-i] [upstream]
|
git rebase [-i] [upstream]
|
||||||
```
|
```
|
||||||
|
|
||||||
通过增加 -i 参数可进入交互模式。使用 Rebase 还可以将多次提交进行合并,或设置起止点。
|
通过增加 -i 参数可进入交互模式。使用 Rebase 还可以将多次提交进行合并,或设置起止点。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git rebase [-i] <start commit id> <end commit id>
|
git rebase [-i] <start commit id> <end commit id>
|
||||||
|
@ -339,7 +339,17 @@ git rebase [-i] HEAD~<n>
|
||||||
git rebase [-i] <to commit id>
|
git rebase [-i] <to commit id>
|
||||||
```
|
```
|
||||||
|
|
||||||
使用 -i 参数进入交互模式后,可通过设置 pick/squash 检出/压缩提交。如果发生了冲突,可以在解决冲突并 add 后,通过:
|
使用 -i 参数进入交互模式后,可以:
|
||||||
|
|
||||||
|
* pick:保留该commit(缩写:p)
|
||||||
|
* reword:保留该commit,但我需要修改该commit的注释(缩写:r)
|
||||||
|
* edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
|
||||||
|
* squash:将该commit和前一个commit合并(缩写:s)
|
||||||
|
* fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
|
||||||
|
* exec:执行shell命令(缩写:x)
|
||||||
|
* drop:我要丢弃该commit(缩写:d)
|
||||||
|
|
||||||
|
如果发生了冲突,可以在解决冲突并 add 后,通过:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git rebase --continue
|
git rebase --continue
|
||||||
|
@ -354,7 +364,7 @@ git rebase <from branch>
|
||||||
git rebase <from branch> <to branch>
|
git rebase <from branch> <to branch>
|
||||||
```
|
```
|
||||||
|
|
||||||
命令继续 rebase。
|
命令继续 rebase。
|
||||||
|
|
||||||
## 13.同步 fork 的仓库
|
## 13.同步 fork 的仓库
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue