开发人员和开源软件维护人员团队通常通过支持协作的分布式版本控制系统Git来管理他们的项目。
这个备忘单样式指南提供了对在Git存储库中工作和协作有用的命令的快速参考。
如何使用本指南:
highlighted text
时,请记住,此文本应引用您自己的存储库中的提交和文件。要完成本教程,您需要一台已经设置好可以使用sudo
命令的非root账号的CentOS服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。
使用以下命令检查您的Git版本,该命令还将确认已安装Git。
git --version
您可以用init
将当前工作目录初始化为Git存储库。
git init
要复制远程托管的现有Git存储库,您将在repo的URL或服务器位置使用git clone
(在后一种情况下,您将使用ssh
)。
git clone https://www.github.com/username/repo-name
显示您当前的Git目录的远程存储库。
git remote
要获得更详细的输出,请使用-v
标志。
git remote -v
添加Git上游,可以是URL或可以托管在服务器上(在后一种情况下,连接ssh
)。
git remote add upstream https://www.github.com/username/repo-name
当您修改了一个文件并将其标记为下次提交时,它被认为是一个分阶段文件。
检查Git存储库的状态,包括未分阶段添加的文件和暂存的文件。
git status
要暂存已修改的文件,请使用该add
命令,您可以在提交之前多次运行该命令。如果您要进行下一次提交中包含的后续更改,则必须再次运行add
。
您可以用add
命令使用指定特定文件。
git add my_script.py
有了.
你可以在当前目录中包括了.
开头的文件添加的所有文件。
git add .
您可以从暂存中删除文件,同时用reset
保留工作目录中的更改。
git reset my_script.py
一旦您进行了更新,您就可以提交更新,这将记录您对存储库所做的更改。
要提交暂存文件,您将使用有意义的提交消息运行commit
命令,以便您可以跟踪提交。
git commit -m "Commit message"
您可以压缩暂存所有跟踪的文件,只需一步提交即可。
git commit -am "Commit message"
如果需要修改提交消息,可以使用该--amend
标志进行修改。
git commit --amend -m "New commit message"
Git中的一个分支是指向存储库中某个提交的可移动指针,它允许您隔离工作并管理功能开发和集成。您可以通过阅读Git文档了解有关分支的更多信息。
使用该branch
命令列出所有当前分支。星号(*
)将出现在当前活动分支旁边。
git branch
创建一个新分支。在切换到新分支之前,您将保留在当前活动的分支上。
git branch new-branch
切换到任何现有分支并将其签出到当前工作目录中。
git checkout another-branch
您可以使用该-b
标志合并新分支的创建和签出。
git checkout -b new-branch
重命名您的分支名称。
git branch -m current-branch-name new-branch-name
将指定分支的历史记录合并到您当前正在使用的历史记录中。
git merge branch-name
如果存在冲突,请中止合并。
git merge --abort
您还可以选择要与引用特定提交的字符串合并的cherry-pick
特定提交。
git cherry-pick f7649d0
合并分支并且不再需要分支后,可以将其删除。
git branch -d branch-name
如果尚未将分支合并到主分支,但确定要删除分支,则可以强制删除分支。
git branch -D branch-name
要从其他存储库(例如远程上游)下载更改,您将使用fetch
。
git fetch upstream
合并提取的提交。
git merge upstream/master
将本地分支提交推送或传输到远程存储库分支。
git push origin master
从跟踪远程分支获取并合并任何提交。
git pull
显示当前活动分支的提交历史记录。
git log
显示更改特定文件的提交。无论文件重命名如何,都会跟随文件。
git log --follow my_script.py
显示一个分支上的提交,而不显示另一个分支上的提交。这将显示在a-branch
上而非b-branch
上提交。
git log a-branch..b-branch
查看引用日志(reflog
)以查看分支和其他引用的提示何时在存储库中最后更新。
git reflog
通过其提交字符串或哈希以更易于阅读的格式显示Git中的任何对象。
git show de754f5
该git diff
命令显示提交,分支等之间的更改。您可以通过Git文档更全面地了解它。
比较暂存区域中的已修改文件。
git diff --staged
显示在a-branch
但不在b-branch
上内容的差异。
git diff a-branch..b-branch
显示两个特定提交之间的差异。
git diff 61ce3e6..e221d9c
有时您会发现您对某些代码进行了更改,但在完成之前,您必须开始处理其他内容。您还没有准备好提交您目前所做的更改,但您不想丢失您的工作。该git stash
命令将允许您保存本地修改并恢复到与最近HEAD
提交一致的工作目录。
保存你当前的工作。
git stash
看看你目前保存了什么。
git stash list
您的名言将被命名为stash@{0}
,stash@{1}
等等。
显示有关特定存储的信息。
git stash show stash@{0}
要在保留存储的同时将文件保存在当前存储中,请使用apply
。
git stash apply stash@{0}
如果您想将文件从存储中取出,并且不再需要存储,请使用pop
。
git stash pop stash@{0}
如果您不再需要保存在特定存储中的文件,则可以drop
存储。
git stash drop stash@{0}
如果您保存了多个藏匿处并且不再需要使用其中任何一个,则可以使用clear
将其删除。
git stash clear
如果要将文件保留在本地Git目录中,但又不想将它们提交到项目中,则可以将这些文件添加到.gitignore
文件中,以免它们导致冲突。
使用文本编辑器(如nano)将文件添加到.gitignore
文件中。
nano .gitignore
要查看.gitignore
文件示例,您可以查看GitHub的.gitignore
模板库。
rebase允许我们通过更改它们所基于的提交来移动分支。通过rebase,您可以压缩或重新提交提交。
您可以通过调用您要进行rebase的提交次数来启动rebase(5
在下面的例子中)。
git rebase -i HEAD~5
或者,您可以根据特定的提交字符串或哈希进行rebase。
git rebase -i 074a4e5
一旦您压缩或重写了提交,您就可以在项目上游代码的最新版本之上完成您的分支的rebase。
git rebase upstream/master
有时,包括在rebase之后,您需要重置您的工作树。您可以使用以下命令重置为特定提交,并删除所有更改。
git reset --hard 1fc6665
要强制将您上次已知的非冲突提交推送到原始存储库,您需要使用--force
。
警告:除非有一个非常重要的理由,否则强行推向掌握者往往不赞成。在处理自己的存储库时谨慎使用,并在协作时避免这种情况。
git push --force origin master
要从Git目录中删除本地未跟踪文件和子目录以获得干净的工作分支,您可以使用git clean
。
git clean -f -d
如果您需要修改本地存储库以使其看起来像当前的上游主服务器(即冲突太多),则可以执行硬重置。
注意:执行此命令将使您的本地存储库看起来与上游完全相同。您所做的任何提交但未被拉入上游的提交都将被销毁。
git reset --hard upstream/master
本指南介绍了在管理存储库和协作软件时可能使用的一些更常见的Git命令。
作为Git工作的一部分,您可能会发现许多其他命令和变体。要了解有关所有可用选项的更多信息,您可以运行:
git --help
接收有用的信息。您还可以阅读更多关于Git的信息,并从官方Git网站上查看Git的文档。
想要了解更多使用Git的相关教程,请前往腾讯云+社区学习更多知识。
参考文献:《How To Use Git: A Reference Guide》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。