补充 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 初始配置
|
||||
|
||||
在使用 Git 前需要配置好用户名和电子邮件信息,Git 需要使用这些配置信息用于提交代码。在 Git 命令行下,可以使用如下命令设置用户名和电子邮件信息:
|
||||
在使用 Git 前需要配置好用户名和电子邮件信息,Git 需要使用这些配置信息用于提交代码。在 Git 命令行下,可以使用如下命令设置用户名和电子邮件信息:
|
||||
|
||||
```bash
|
||||
git config --global user.name "Your name"
|
||||
git config --global user.email "Your email"
|
||||
```
|
||||
|
||||
查看当前配置的用户名和电子邮件信息命令如下:
|
||||
查看当前配置的用户名和电子邮件信息命令如下:
|
||||
|
||||
```bash
|
||||
git config --global user.name
|
||||
|
@ -32,44 +32,44 @@ git config --global http.postBuffer 524288000
|
|||
|
||||
### 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
|
||||
ssh-keygen
|
||||
```
|
||||
|
||||
之后一路回车,生成文件为:
|
||||
之后一路回车,生成文件为:
|
||||
|
||||
```bash
|
||||
<Usr>/.ssh/id_rsa
|
||||
<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.创建仓库
|
||||
|
||||
软件版本管理依赖于软件仓库的概念,一个软件仓库包容了要进行版本管理的源码和 Release 发布等内容。
|
||||
软件版本管理依赖于软件仓库的概念,一个软件仓库包容了要进行版本管理的源码和 Release 发布等内容。
|
||||
|
||||
在要进行版本管理的目录下键入
|
||||
在要进行版本管理的目录下键入:
|
||||
|
||||
```bash
|
||||
git init
|
||||
```
|
||||
|
||||
命令,可完成软件版本仓库的创建操作,在创建完软件仓库后,该目录下会生成一个名为“.git”的隐藏文件夹,该文件夹下保存了软件的历史和分支等版本信息,通常不需要直接操作该目录。
|
||||
命令,可完成软件版本仓库的创建操作,在创建完软件仓库后,该目录下会生成一个名为“.git”的隐藏文件夹,该文件夹下保存了软件的历史和分支等版本信息,通常不需要直接操作该目录。
|
||||
|
||||
## 3.添加跟踪文件
|
||||
|
||||
版本仓库所在文件夹下的文件并不是全部都会被 git 跟踪和管理。如果需要将该文件夹下将某个文件纳入到版本管理中,则需要通过 add 命令添加到 git 仓库中进行跟踪:
|
||||
版本仓库所在文件夹下的文件并不是全部都会被 git 跟踪和管理。如果需要将该文件夹下将某个文件纳入到版本管理中,则需要通过 add 命令添加到 git 仓库中进行跟踪:
|
||||
|
||||
```bash
|
||||
git add <file name>
|
||||
```
|
||||
|
||||
例如:
|
||||
例如:
|
||||
|
||||
```bash
|
||||
git add main.c
|
||||
|
@ -77,13 +77,13 @@ git add main.c
|
|||
|
||||
## 4.取消跟踪文件
|
||||
|
||||
如果对某个文件取消跟踪,但还需要保留本地文件,则使用如下命令:
|
||||
如果对某个文件取消跟踪,但还需要保留本地文件,则使用如下命令:
|
||||
|
||||
```bash
|
||||
git rm --cached <file name>
|
||||
```
|
||||
|
||||
如果取消对某个文件的版本管理,并且要删除该文件,则使用如下命令:
|
||||
如果取消对某个文件的版本管理,并且要删除该文件,则使用如下命令:
|
||||
|
||||
```bash
|
||||
git rm --f <file name>
|
||||
|
@ -91,36 +91,36 @@ git rm --f <file name>
|
|||
|
||||
## 5.Clone 仓库
|
||||
|
||||
更多的时候,不需要手动创建 git 仓库。git 仓库很可能已经存在于远端服务器或别人的计算机中,这时候我们只需要将其 clone 到本地即可:
|
||||
更多的时候,不需要手动创建 git 仓库。git 仓库很可能已经存在于远端服务器或别人的计算机中,这时候我们只需要将其 clone 到本地即可:
|
||||
|
||||
```bash
|
||||
git clone <repository url>
|
||||
```
|
||||
|
||||
例如:
|
||||
例如:
|
||||
|
||||
```bash
|
||||
git clone https://192.168.1.8/path/repo.git
|
||||
```
|
||||
|
||||
git 支持 http、https、ssh 格式的 URL 访问。
|
||||
git 支持 http、https、ssh 格式的 URL 访问。
|
||||
|
||||
## 6.提交变更
|
||||
|
||||
在修改代码或相关文件后,需要先将变更缓存到本地,这一步被称作 commit。带签名的提交命令如下:
|
||||
在修改代码或相关文件后,需要先将变更缓存到本地,这一步被称作 commit。带签名的提交命令如下:
|
||||
|
||||
```bash
|
||||
git add .
|
||||
git commit -s -m <message>
|
||||
```
|
||||
|
||||
如果想对上次提交进行修改,或将本次提交与上次提交合并,可为 commit 增加 amend 参数,如下:
|
||||
如果想对上次提交进行修改,或将本次提交与上次提交合并,可为 commit 增加 amend 参数,如下:
|
||||
|
||||
```bash
|
||||
git commit --amend
|
||||
```
|
||||
|
||||
之后可通过交互界面进行编辑和修改。
|
||||
之后可通过交互界面进行编辑和修改。
|
||||
|
||||
## 7.时光穿梭
|
||||
|
||||
|
@ -149,7 +149,7 @@ git revert <commit id>
|
|||
|
||||
## 8.分支管理
|
||||
|
||||
通过以下命令创建新的本地分支:
|
||||
通过以下命令创建新的本地分支:
|
||||
|
||||
```bash
|
||||
git branch <branch>
|
||||
|
@ -174,7 +174,7 @@ git checkout <branch>
|
|||
git push <repository> <local branch>:<remote branch>
|
||||
```
|
||||
|
||||
如,推送本地的 new 分支与 \<repository\> 主机的 master 分支合并:
|
||||
如,推送本地的 new 分支与 \<repository\> 主机的 master 分支合并:
|
||||
|
||||
```bash
|
||||
git push <repository> new:master
|
||||
|
@ -206,7 +206,7 @@ git branch -d <branch>
|
|||
git push <repository> --delete <branch>
|
||||
```
|
||||
|
||||
将某个分支与当前分支合并的命令为:
|
||||
将某个分支与当前分支合并的命令为:
|
||||
|
||||
```bash
|
||||
# merge 谋 branch 到当前分支.
|
||||
|
@ -265,19 +265,19 @@ git diff <commit id 0> <commit id 1> [file/folder]
|
|||
|
||||
## 11.Tag 管理
|
||||
|
||||
可以通过:
|
||||
可以通过:
|
||||
|
||||
```bash
|
||||
git tag
|
||||
```
|
||||
|
||||
命令列出当前仓库中的所有标签,创建一个带附注的的标签则可以使用以下命令实现:
|
||||
命令列出当前仓库中的所有标签,创建一个带附注的的标签则可以使用以下命令实现:
|
||||
|
||||
```bash
|
||||
git tag -a <tag name> -m <message>
|
||||
```
|
||||
|
||||
还可以使用:
|
||||
还可以使用:
|
||||
|
||||
```bash
|
||||
git tag <tag name>
|
||||
|
@ -323,13 +323,13 @@ git remote prune <repository>
|
|||
|
||||
## 12.Rebase
|
||||
|
||||
由于合并分支,或从远程仓库中更新代码产生了额外的 merge 节点,此时可通过 rebase 命令消除这些额外的 merge 节点,使 git 历史的线性更好:
|
||||
由于合并分支,或从远程仓库中更新代码产生了额外的 merge 节点,此时可通过 rebase 命令消除这些额外的 merge 节点,使 git 历史的线性更好:
|
||||
|
||||
```bash
|
||||
git rebase [-i] [upstream]
|
||||
```
|
||||
|
||||
通过增加 -i 参数可进入交互模式。使用 Rebase 还可以将多次提交进行合并,或设置起止点。
|
||||
通过增加 -i 参数可进入交互模式。使用 Rebase 还可以将多次提交进行合并,或设置起止点。
|
||||
|
||||
```bash
|
||||
git rebase [-i] <start commit id> <end commit id>
|
||||
|
@ -339,7 +339,17 @@ git rebase [-i] HEAD~<n>
|
|||
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
|
||||
git rebase --continue
|
||||
|
@ -354,7 +364,7 @@ git rebase <from branch>
|
|||
git rebase <from branch> <to branch>
|
||||
```
|
||||
|
||||
命令继续 rebase。
|
||||
命令继续 rebase。
|
||||
|
||||
## 13.同步 fork 的仓库
|
||||
|
||||
|
|
Loading…
Reference in New Issue