From 8b51980008b89f4df27415d3af574069362fd6b6 Mon Sep 17 00:00:00 2001 From: "rick.chan" Date: Thu, 3 Jun 2021 10:12:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=20rebase=20=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=E6=8C=87=E4=BB=A4,=E4=BF=AE=E6=AD=A3=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: rick.chan --- Software/Applications/Git/Git_使用说明.md | 68 +++++++++++++---------- 1 file changed, 39 insertions(+), 29 deletions(-) diff --git a/Software/Applications/Git/Git_使用说明.md b/Software/Applications/Git/Git_使用说明.md index f08b7dd..fb2edcf 100644 --- a/Software/Applications/Git/Git_使用说明.md +++ b/Software/Applications/Git/Git_使用说明.md @@ -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 下该命令位于 /\/usr/bin/ 下,可使用 Git Bash 直接访问): +如果想访问远程 Git 服务器,则最好通过 SSH 方式。这需要先生成 RSA 密钥,然后将公钥部署到远程服务器上即可。生成 RSA 密钥可使用 OpenSSH,命令如下(Windows 下该命令位于 /\/usr/bin/ 下,可使用 Git Bash 直接访问): ```bash ssh-keygen ``` -之后一路回车,生成文件为: +之后一路回车,生成文件为: ```bash /.ssh/id_rsa /.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 ``` -例如: +例如: ```bash git add main.c @@ -77,13 +77,13 @@ git add main.c ## 4.取消跟踪文件 -如果对某个文件取消跟踪,但还需要保留本地文件,则使用如下命令: +如果对某个文件取消跟踪,但还需要保留本地文件,则使用如下命令: ```bash git rm --cached ``` -如果取消对某个文件的版本管理,并且要删除该文件,则使用如下命令: +如果取消对某个文件的版本管理,并且要删除该文件,则使用如下命令: ```bash git rm --f @@ -91,36 +91,36 @@ git rm --f ## 5.Clone 仓库 -更多的时候,不需要手动创建 git 仓库。git 仓库很可能已经存在于远端服务器或别人的计算机中,这时候我们只需要将其 clone 到本地即可: +更多的时候,不需要手动创建 git 仓库。git 仓库很可能已经存在于远端服务器或别人的计算机中,这时候我们只需要将其 clone 到本地即可: ```bash git clone ``` -例如: +例如: ```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 ``` -如果想对上次提交进行修改,或将本次提交与上次提交合并,可为 commit 增加 amend 参数,如下: +如果想对上次提交进行修改,或将本次提交与上次提交合并,可为 commit 增加 amend 参数,如下: ```bash git commit --amend ``` -之后可通过交互界面进行编辑和修改。 +之后可通过交互界面进行编辑和修改。 ## 7.时光穿梭 @@ -149,7 +149,7 @@ git revert ## 8.分支管理 -通过以下命令创建新的本地分支: +通过以下命令创建新的本地分支: ```bash git branch @@ -174,7 +174,7 @@ git checkout git push : ``` -如,推送本地的 new 分支与 \ 主机的 master 分支合并: +如,推送本地的 new 分支与 \ 主机的 master 分支合并: ```bash git push new:master @@ -206,7 +206,7 @@ git branch -d git push --delete ``` -将某个分支与当前分支合并的命令为: +将某个分支与当前分支合并的命令为: ```bash # merge 谋 branch 到当前分支. @@ -265,19 +265,19 @@ git diff [file/folder] ## 11.Tag 管理 -可以通过: +可以通过: ```bash git tag ``` -命令列出当前仓库中的所有标签,创建一个带附注的的标签则可以使用以下命令实现: +命令列出当前仓库中的所有标签,创建一个带附注的的标签则可以使用以下命令实现: ```bash git tag -a -m ``` -还可以使用: +还可以使用: ```bash git tag @@ -323,13 +323,13 @@ git remote prune ## 12.Rebase -由于合并分支,或从远程仓库中更新代码产生了额外的 merge 节点,此时可通过 rebase 命令消除这些额外的 merge 节点,使 git 历史的线性更好: +由于合并分支,或从远程仓库中更新代码产生了额外的 merge 节点,此时可通过 rebase 命令消除这些额外的 merge 节点,使 git 历史的线性更好: ```bash git rebase [-i] [upstream] ``` -通过增加 -i 参数可进入交互模式。使用 Rebase 还可以将多次提交进行合并,或设置起止点。 +通过增加 -i 参数可进入交互模式。使用 Rebase 还可以将多次提交进行合并,或设置起止点。 ```bash git rebase [-i] @@ -339,7 +339,17 @@ git rebase [-i] HEAD~ git rebase [-i] ``` -使用 -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 git rebase ``` -命令继续 rebase。 +命令继续 rebase。 ## 13.同步 fork 的仓库