目录
1、基本命令
创建 Git 存储库
添加文件/目录到索引
将更改提交到本地存储库
撤消上一次提交的更改
显示工作树状态
显示对工作树和索引的更改
显示提交日志
显示提交详细信息
重命名文件
从工作树和索引中移除文件
从工作树中移除未跟踪文件
将文件恢复到工作树
从索引中移除文件
仅将修改和删除的文件添加到索引
2、远程命令
复制存储库
添加远程存储库
显示远程存储库列表
从远程存储库签出分支
创建分支更改并将其推送到远程存储库
检查远程存储库中的分支更改
从远程存储库获取并合并最新的分支更改
从远程存储库删除分支
修改远程存储库地址
重命名远程存储库
3、git的分支命令
显示分支列表
创建分支
重命名分支
删除分支
切换分支
合并分支
4、提交历史记录
修改之前的提交和消息
修改并移动过去的提交和消息
退出变基
显示参考日志
显示分支提示的参考日志
移除以前的提交
重置变基
取消之前的重置
从另一个分支复制提交
搜索提交消息
5、Git 暂存命令
暂存当前的更改
显示暂存列表
从暂存中恢复更改
删除暂存
删除所有暂存
6、标签命令
创建标签
创建带有信息的标签
删除标签
7、Git config 命令
设置用户名和电子邮件
彩色显示输出
为命令设置别名
从版本控制跟踪中删除文件
在版本控制下跟踪空目录
显示设置
设置与代理服务器的 HTTP 连接
建立到用户认证代理服务器的 HTTP 连接
8、故障排除
使用 SSH 连接到远程存储库时出现“Permission denied (publickey)”错误
无法通过其 HTTPS URL 克隆远程存储库
推送到远程存储库的更改没有反映在那里
9、Git 与 SVN 命令
Git-Subversion 命令对照表
$ git init
$ git add
-p
选项,系统将提示您接受/拒绝已更改文件的特定部分。
-i
选项,则可以交互式地暂存更改
$ git commit
-a
选项就像一个快捷方式,可以检测更改的文件 (新添加的文件除外),将它们添加到索引, 并提交它们。
-m
选项允许您同时提交和指定提交消息。如果您不指定-m
,将打开一个文本编辑器,提示您输入提交消息。
$ git revert HEAD
Git revert 命令将一个提交作为参数,并创建一个新的提交来撤消该提交所做的更改。
$ git status
添加-s
选项将只显示已更改的文件名。
添加-s
选项,后面再接-b
选项,将在输出中包含分支名称
$ git diff
在默认情况下,diff
命令将会显示工作树和索引之间的差异。
如果添加--cached
选项,将显示索引和 HEAD
之间的差异。
如果您指定提交哈希,将会显示工作树和当前的 HEAD/
提交之间的差异
$ git log
$ git show
$ git mv
$ git rm
$ git clean
添加-n
选项将只显示将要移除的文件。添加-f
选项实际上会移除文件
$ git checkout --
$ git reset HEAD --
$ git add -u
$ git clone
克隆命令将在本地计算机上创建现有远程存储库的副本。它还将配置本地存储库以自动跟踪远程存储库。
该配置允许您执行 Git push 命令或 Git fetch/pull 命令而不指定远程存储库名称
$ git remote add
$ git remote
如果添加-v
选项,您就可以查看远程存储库的详细信息
$ git checkout
$ git push
$ git fetch
获取命令允许您从远程存储库检索最新数据,以检查更改的内容。但是,此命令不会自动将更改合并到您现有的任何工作中。
repository
和refspec
参数都是可选的。省略存储库名称将产生与推送命令相同的操作。省略refspec
参数将确保获取可应用于该远程存储库中的所有分支
$ git pull
pull 命令将从远程存储库中检索最新更改的内容,并将其直接合并到您的本地存储库中。基本上,pull = fetch + merge
。
repository
和refspec
参数都是可选的。省略存储库名称将产生与推送命令相同的操作。省略refspec
参数将确保拉取仅应用于当前分支。
$ git push --delete
删除远程存储库中的分支。
在推送命令中加入--delete
选项,从远程存储库中删除指定的分支
$ git push
如果添加--tags
选项,则本地存储库中存在的所有标签都将被推送到远程存储库中,并与您指定的任何符号引用一起在远程存储库中创
$ git push --delete
使用推送命令的--delete
选项可以从远程存储库中删除指定的标签。
$ git remote set-url
$ git remote rename
$ git branch
添加-r
选项还将列出远程跟踪分支。添加-a
选项将同时显示远程和本地分支
$ git branch
$ git branch -m
$ git branch -d
如果该分支还没有完全与上游分支合并,或者在 HEAD
中如果没有上游,Git 将不允许您删除该分支。但是,您可以指定-D
以强制删除它,而不管其合并状态如何。
$ git checkout
添加-b
选项将创建一个新分支,并切换到它
$ git merge
添加--no-ff
选项将导致 git merge
命令都会是创建合并提交,而不是快进。这很有用,因为它允许您保留合并前分支的历史记录信息。
当您添加--squash
选项时,Git 会创建一个代表合并更改的单个提交,而不是创建合并提交。 此提交包含来自合并分支的更改,但不包含任何与合并分支或合并过程本身相关的信息
$ git commit --amend
添加--amend
选项来覆盖您正在处理的分支的最新提交。
当索引中没有文件时,您可以通过添加--amend
选项重新提交之前的提交,系统将提示您编辑现有的提交消息。
$ git rebase -i
添加提交哈希,将列出直到最新提交的所有提交的列表。找到您要修改的提交,并将该行从pick
更改为edit
,然后保存并退出。
接下来,添加--amend
选项来提交。将显示用于添加消息的界面。修改消息。
$ git commit --amend
最后,添加--continue
选项来运行 rebase。
$ git rebase --continue
$ git rebase --abort
通过添加--abort
选项,您可以退出变基操作。
$ git reflog
$ git reset --hard HEAD~
$ git reset --hard
$ git reset --hard ORIG_HEAD
ORIG_HEAD
指的是重置发生之前的提交。您可以使用 reset to ORIG_HEAD
恢复之前的重置
$ git cherry-pick "
$ git log --grep "
$ git stash save
$ git stash list
$ git stash pop
$ git stash drop
$ git stash clear
$ git tag
添加-n
选项将显示每个标签上的注释
$ git tag
$ git tag -a
$ git tag -d
$ git config --global user.name
$ git config --global user.email
如果没有--global
选项,此设置将仅应用于特定存储库。
$ git config --global color.ui auto
$ git config --global alias.
$ echo
在.gitignore
文件下添加文件路径。Git 将不再管理这些文件。您必须提交.gitignore
文件才能发挥作用
$ cd
$ touch .gitkeep
Git 不会跟踪空目录。如果您想将其添加到版本控制中,则需要在该目录中放置一个文件。人们通常做的一个常见做法是在空目录中添加一个.gitkeep
文件。
$ git config --global --list
将以下设置添加到.gitconfig
文件的 http 项。
[http] proxy =
:也可以使用以下 config 命令对其进行配置:
$ git config --global http.proxy
:将以下设置添加到.gitconfig
文件的 http 项
[http] proxy = http://
您也可以使用以下 config 命令对其进行配置:
$ git config --global http.proxy http://
首先,您需要确保以下几点:
您可以通过运行以下命令,来验证与 Backlog 远程存储库对应的公钥/密钥配置:
$ ssh
用您拥有的 Backlog 空间取代
。(例如,对于空间demo.backlog.com
,它将是[email protected]
)
如果设置正确,您将看到以下输出。如果您看到错误消息,请重复上述步骤并确保您做对了。
Hi yourname! You've successfully authenticated, but Backlog does not provide shell access. Connection to git.backlog.com closed.
在旧版的 Git 上,您可能偶尔会在执行推送或拉取时遇到问题。建议您使用最新的 Git 版本或高于 v2 的版本。如果您使用的是 Source Tree 或 TortoiseGit 等 Git 客户端,请使用相应客户端附带的 Git 版本。
执行推送时,您可能会遇到以下消息。当您从新的本地存储库推送时,通常会发生这种情况
$ git push
No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'main'. Everything up-to-date
通过在执行推送时省略分支名称,Git 将默认假定您正在尝试将当前更改推送到与本地分支同名的远程分支。如果尚未在远程存储库中创建主分支,则会发生这种情况。(我们从本地主分支推送。)在这种情况下,我们将必须在执行推送时明确使用分支名称。
$ git push -u origin main
通过这样做,主分支将自动在远程存储库中创建。您下次运行推送时,可以省略分支名称。
Command | Operation | Subversion |
---|---|---|
git clone | 复制存储库 | svn checkout |
git commit | 记录对文件历史记录的更改 | svn commit |
git show | 查看提交详细信息 | svn cat |
git status | 查看状态 | svn status |
git diff | 查看差异 | svn diff |
git log | 查看日志 | svn log |
git add | 添加 | svn add |
git mv | 移动 | svn mv |
git rm | 删除 | svn rm |
git reset | 取消更改 | svn revert1 |
git branch | 创建分支 | svn copy2 |
git checkout | 切换分支 | svn switch |
git merge | 合并 | svn merge |
git tag | 创建标签 | svn copy2 |
git pull | 更新 | svn update |
git fetch | 更新 | svn update |
git push | 反映在远程的更改 | svn commit3 |
.gitignore | 忽略文件列表 | .svnignore |