一篇简单的Git速查手册

admin 2024年8月16日16:47:15评论11 views字数 4576阅读15分15秒阅读模式

一篇简单的Git速查手册

Git 是一个用于管理源代码的分布式版本控制系统,由Linux大神Linus开发。在现代软件开发领域,Git 已成为版本控制的事实标准,凭借其强大的功能和无与伦比的灵活性,Git 使开发人员能够跟踪更改、无缝协作并有效地管理代码。版本控制系统会在你修改文件时记录并保存更改,使你可以随时恢复以前的工作版本。简而言之,使用Git可以以团队形式协作编写代码,并跟踪代码历史记录。

Git的基本概念

1️⃣ 关于存储库

存储库 (即 repository) 是用于存储代码的位于中心的文件夹,一旦拥有包含文件和目录的 Git 存储库,就可以开始跟踪更改和版本。
存储库有两种类型:

  • 远程存储库托管在远程服务器上 (并在多个团队成员之间共享。
  • 本地存储库为单个用户托管在本地机器上。

一篇简单的Git速查手册

2️⃣ 关于分支

Git 分支在本质上是一条独立的开发线,在处理新功能或 bug 修复时,可以使用分支来将你的工作与其他团队成员的工作隔离开来。
一篇简单的Git速查手册

3️⃣ 关于变更与同步

Git 不会自动记录你所做的每个更改,你必须通过在索引中暂存这些更改来告诉 Git 你想要记录哪些更改。暂存后,就可以提交这些更改,以便将它们记录在存储库中。提交的每个更改都可以在相应的文件或目录中按时间顺序查看。

一篇简单的Git速查手册

要与他人共享更改时,你必须将更新推送到远程存储库,将本地存储库与远程存储库同步。
一篇简单的Git速查手册

每当有人将他们的更改推送到共享的远程存储库时,你的本地存储库就会过时。如果你的本地存储库已过时,在推送前,你需要先获取远程存储库的最新修改,并将其整合进本地存储库。

一篇简单的Git速查手册

如果二者有冲突,你需要先解决冲突,并提交到本地,然后才能推送。
一篇简单的Git速查手册

Git的常用命令

1️⃣ 基本命令

创建 Git 存储库

$ git init

在要创建存储库的目录中运行 init 命令。

添加文件/目录到索引

$  git add <filepattern>

可以指定要添加到索引中的单个或多个文件和目录名称。可以直接指定文件名,也可以在代码中使用*.txt等通配符。将.放在文件模式中,将把所有当前的变化暂存到索引中,包括子目录中的文件。

添加-p选项,系统将提示你接受/拒绝已更改文件的特定部分。添加-i选项,则可以交互式地暂存更改。

将更改提交到本地存储库

$ git commit

添加-a选项就像一个快捷方式,可以检测更改的文件 (新添加的文件除外),将它们添加到索引,并提交它们。

添加-m选项可以同时提交和指定提交消息。如果不指定-m,将打开一个文本编辑器,提示你输入提交消息。

撤消上一次提交的更改

$ git revert HEAD

该命令将一个提交作为参数,并创建一个新的提交来撤消该提交所做的更改。

显示工作树状态

$ git status

添加-s选项将只显示已更改的文件名。后面再接-b选项时,将在输出中包含分支名称。

显示对工作树和索引的更改

$ git diff

在默认情况下,diff 命令将会显示工作树和索引之间的差异。如果添加--cached选项,将显示索引和 HEAD 之间的差异。如果指定提交的哈希值,将会显示工作树和当前的 HEAD与提交之间的差异。

显示提交日志

$ git log

在默认情况下,日志将会显示当前分支的提交列表。指定文件名将仅显示该给定文件的提交日志。

显示提交详细信息

$ git show <commit>

重命名文件

$ git mv <oldfilename> <newfilename>

从工作树和索引中移除文件

$ git rm <file>

从工作树中移除未跟踪文件

$ git clean

添加-n选项将只显示将要移除的文件,添加-f选项实际上会移除文件。在默认的情况下,不会移除.gitignore配置文件下列出的文件。但是,如果指定-x选项,.gitignore下列出的文件将从工作树中移除。

将文件恢复到工作树

$ git checkout -- <file>

从索引中移除文件

$ git reset HEAD -- <file>

仅将修改和删除的文件添加到索引

$ git add -u

注册已添加到索引的文件的更改,它不会暂存未跟踪的文件。

2️⃣ 远程命令

创建 Git 存储库

$ git clone <url>

将在本地计算机上创建现有远程存储库的副本,还将配置本地存储库以自动跟踪远程存储库。

显示远程存储库列表

$  git remote

如果添加-v选项,还可以查看远程存储库的详细信息。

从远程存储库签出分支

$ git checkout <branch>

该命令会基于你已经获取的远程存储库中的分支,在本地存储库中创建一个分支。

创建分支更改并将其推送到远程存储库

$ git push <repository> <refspec>

在远程存储库中创建一个分支,并从本地存储库中推送更改。添加-u选项允许 Git在成功推送本地分支时添加对远程存储库的跟踪引用。下次执行推送/获取/拉取时,将不必指定存储库参数。

检查远程存储库中的分支更改

$ git fetch <repository> <refspec>

从远程存储库检索最新数据,以检查更改的内容。但是,此命令不会自动将更改合并到您现有的任何工作中。
repositoryrefspec参数都是可选的。省略存储库名称将产生与推送命令相同的操作;省略refspec参数将确保获取可应用于该远程存储库中的所有分支。

从远程存储库获取并合并最新的分支更改

$ git pull <repository> <refspec>

从远程存储库中检索最新更改的内容,并将其直接合并到您的本地存储库中。基本上,pull = fetch + merge
repositoryrefspec参数都是可选的。省略repository将产生与推送命令相同的操作。省略refspec参数将确保拉取仅应用于当前分支。

从远程存储库删除分支

$ git push --delete <repository> <branchname>

在远程存储库中创建标签

$ git push <repository> <tagname>

添加--tags选项,则本地存储库中存在的所有标签都将被推送到远程存储库中,并在远程存储库中创建标签分支。

在远程存储库中创建标签

$ git push --delete <repository> <tagname>

修改远程存储库地址

$ git remote set-url <name> <newurl>

将现有远程存储库的地址改为中指定的地址。

重命名远程存储库

$ git remote rename <old> <new>

将现有远程存储库的名称从改为。

3️⃣ 分支命令

显示分支列表

$ git branch

当前分支将以绿色突出显示并标有星号。添加-r选项还将列出远程跟踪分支。添加-a选项将同时显示远程和本地分支。

创建分支

$ git branch <branchname>

重命名分支

$ git branch -m <oldbranch> <newbranch>

删除分支

$ git branch -d <branchname>

如果该分支还没有完全与上游分支合并,或者在 HEAD 中如果没有上游,Git 将不允许您删除该分支。但是可以指定-D以强制删除它,而不管其合并状态如何。

切换分支

$ git checkout <branch>

签出并切换到你想要的分支。添加-b选项将创建一个新分支,并切换到它。

合并分支

$ git merge <branch>

添加--no-ff选项, git merge 命令将会创建合并提交,而不是快进,并且会保留合并前分支的历史记录信息。

添加--squash选项时,Git 会创建一个代表合并更改的单个提交,而不是创建合并提交。此提交包含来自合并分支的更改,但不包含任何与合并分支或合并过程本身相关的信息。

4️⃣ 历史记录命令

修改之前的提交和消息

$ git commit --amend

覆盖当前分支的最新提交,当索引中没有文件时,也可以通过添加--amend选项重新提交之前的提交,系统将提示你编辑现有的提交消息。

修改并移动历史的提交和消息

首先使用rebase列出直到最新提交的所有提交的列表,找到要修改的提交,并将该行从pick更改为edit,然后保存并退出。

$ git rebase -i <commit>

接下来提交这次修改。

$ git commit --amend

最后,进行变基。

$ git rebase --continue

退出变基

$ git rebase --abort

显示参考日志

$ git reflog

查看 HEAD 过去用来指示的提交列表,将显示由 rebase 收集的已删除和成功的提交。

显示分支提示的参考日志

$ git reflog <ref>

将显示每次提示的提交列表 <ref> 的改变记录。

移除以前的提交

$ git reset --hard HEAD~

重置变基

$ git reset --hard <commit>

取消之前的重置

$ git reset --hard ORIG_HEAD

从另一个分支复制提交

$ git cherry-pick <commit>

搜索提交消息

$ git log --grep <pattern>

5️⃣ 暂存命令

暂存当前的更改

$ git stash save

暂存命令会保存您的本地修改,并恢复工作目录以匹配 HEAD 提交。

显示暂存列表

$ git stash list

从暂存中恢复更改

$ git stash pop

将最新的暂存将恢复到当前的工作区。添加暂存ID参数 (例如 stash@{1}) ,将会把此ID的暂存恢复到当前的工作区。

删除暂存

$ git stash drop

也可以制度ID进行删除。

删除所有暂存

$ git stash clear

6️⃣ 标签命令

显示标签列表

$ git tag

添加-n选项将显示每个标签上的注释。

创建标签

$ git tag <tagname>

创建带有信息的标签

$ git tag -a <tagname>

删除标签

$ git tag -d <tagname>

7️⃣ 标签命令

设置用户名和电子邮件

$ git config --global user.name <username>
$ git config --global user.email <mailaddress>

如果没有--global选项,此设置将仅应用于当前存储库。

彩色显示输出

$ git config --global color.ui auto

为命令设置别名

$ git config --global alias.<aliasname> <commandname>

从版本控制跟踪中删除文件

$ echo <filename> >> .gitignore

.gitignore文件下添加要取消跟踪的文件路径,Git 将不再管理这些文件。

在版本控制下跟踪空目录

$ cd <dirname>
$ touch .gitkeep

默认情况下,Git不会跟踪空目录。如果想将其添加到版本控制中,则需要在该目录中放置一个文件。通常做的做法是在空目录中添加一个.gitkeep文件。

显示设置

$ git config --global --list

设置HTTP代理服务器

$ git config --global http.proxy <address of the proxy server>:<port of the proxy server>

建立HTTP代理认证

git config --global http.proxy http://<username>:<password>@<address of the
  proxy server>:<port of the proxy server>

原创不易,如果觉得此文对你有帮助,不妨点赞+收藏+关注,你的鼓励是我持续创作的动力!

一篇简单的Git速查手册

 

 

原文始发于微信公众号(高等精灵实验室):一篇简单的Git速查手册,建议收藏

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月16日16:47:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一篇简单的Git速查手册https://cn-sec.com/archives/3071939.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息