Git 是一种分布式版本控制系统,它允许团队成员协同工作,同时对同一项目的代码进行修改而不会相互覆盖。对于不了解git的小白,以下是 Git 中一些基本命令的介绍,以及它们的作用和使用方法。
Git 命令及其作用
Git 是一种分布式版本控制系统,它允许团队成员协同工作,同时对同一项目的代码进行修改而不会相互覆盖。以下是 Git 中一些基本命令的介绍,以及它们的作用和使用方法。
1. 初始化仓库
git init
:在当前目录下创建一个新的 Git 仓库。这会初始化一个名为.git
的目录,其中包含了所有的版本控制信息。
2. 配置用户信息
git config user.name "your name"
:设置 Git 用户的名字,用于标识你的提交。git config user.email "you@example.com"
:设置 Git 用户的电子邮件地址,同样用于标识你的提交。
3. 克隆现有仓库
git clone [url]
:克隆一个项目及其整个代码历史到本地。这通常是你开始与他人合作或基于现有项目工作的第一步。
4. 检查仓库状态
git status
:显示工作目录和暂存区的状态,包括哪些文件已被修改但尚未提交,哪些文件处于暂存状态等。
5. 添加文件到暂存区
git add .
:将所有更改过的文件添加到暂存区。如果你想只添加特定的文件,可以指定文件名代替.
。git add [file]
:将指定文件添加到暂存区。
6. 提交更改
git commit -m "message"
:将暂存区中的更改提交到本地仓库。-m
参数后面跟的是提交信息,应该简洁明了地描述此次提交的内容。
7. 查看提交历史
git log
:显示所有的提交历史,包括每次提交的作者、日期和提交信息。使用--oneline
可以简化输出,每条提交信息占一行。
8. 分支管理
git branch
:列出所有本地分支。git branch [branch-name]
:创建一个新的分支。git checkout [branch-name]
:切换到指定的分支。如果想创建并立即切换到新分支,可以使用git checkout -b [branch-name]
。git merge [branch]
:将指定分支的更改合并到当前分支。
9. 远程仓库操作
git remote -v
:查看远程仓库的信息。git remote add [remote-name] [url]
:添加一个新的远程仓库。git push [remote-name] [branch-name]
:将本地分支的更改推送到远程仓库。git pull [remote-name] [branch-name]
:从远程仓库拉取最新的更改,并自动与本地分支合并。
10. 撤销操作
git checkout -- [file]
:丢弃工作目录中文件的更改。git reset [file]
:取消暂存区中对指定文件的更改,但保留工作目录中的更改。git reset --hard
:重置当前分支的HEAD为指定的状态,同时恢复索引和工作树。请注意,此命令将永久删除所有未提交的更改。
11. 获取帮助
git help -a
:显示所有可用的 Git 命令列表。按k
向上滚动,j
向下滚动,q
退出帮助界面。
关于代码仓库的进一步说明
- 代码仓库结构 :每个 Git 仓库都有一个隐藏的
.git
目录,里面存储着所有的元数据和对象数据库,这是 Git 能够追踪版本变化的核心所在。 - 配置全局设置 :通过
git config --global
命令可以设置全局的用户名和邮箱,这样就不需要在每个仓库中单独设置了。 - 未跟踪文件 :当 Git 说"untracked files"时,意味着这些文件还没有被添加到版本控制中。你可以通过
git add
命令将它们纳入版本管理。 - 主分支 :默认情况下,Git 使用
master
或main
作为主分支的名称,这取决于 Git 版本。在这个分支上进行开发是最常见的做法。 - 查看提交记录 :使用
git log
可以查看项目的提交历史,这对于理解项目的演变过程非常有帮助。 - 暂存区概念 :暂存区是一个特殊的区域,用来准备即将提交的更改。你可以多次使用
git add
来逐步构建一个合理的提交。
下面记录使用时候有两个问题解决方法:
解决第一个错误:src refspec main does not match any
你当前的本地分支是 master
,而你试图推送到远程仓库的 main
分支。你可以选择以下两种方法之一:
方法一:将 master
分支推送到远程仓库的 main
分支
less
git push -u origin master:main
方法二:将 master
分支重命名为 main
,然后推送到远程仓库
-
重命名本地分支为
main
:cssgit branch -m main
-
推送到远程仓库的
main
分支:cssgit push -u origin main
解决第二个错误:ssh: connect to host github.com port 22: Connection refused
这个错误通常表示 SSH 连接被拒绝,可能是由于以下几个原因:
- SSH 密钥未配置:确保你已经生成了 SSH 密钥并添加到 GitHub 账户中。
- 网络问题:确保你的网络连接正常,能够访问 GitHub。
- 防火墙或代理问题:某些网络环境可能阻止 SSH 连接。
检查和配置 SSH 密钥
-
生成 SSH 密钥(如果还没有生成):
cssssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-
查看生成的 SSH 密钥:
bashcat ~/.ssh/id_rsa.pub
-
将公钥添加到 GitHub:
- 登录到 GitHub。(点击头像,继续下面的步骤)
- 转到
Settings
->SSH and GPG keys
。 - 点击
New SSH key
,输入标题并粘贴公钥内容。
-
测试 SSH 连接:
cssssh -T git@github.com
如果一切正常,你应该会看到类似以下的消息:
vbnetHi yourusername! You've successfully authenticated, but GitHub does not provide shell access.
使用 HTTPS 而不是 SSH
如果你不想使用 SSH,可以改为使用 HTTPS 进行推送:
-
更改远程仓库 URL 为 HTTPS:
arduinogit remote set-url origin https://github.com/anlici/lesson_git2.git
-
推送到远程仓库:
cssgit push -u origin main
Git使用还是要自己平时多使用,忘记命令就git help 。特别是在使用 git log、git diff 或者 git show 等命令时,经常会使用到分页器(通常是 less)。在这个分页器中,k 和 j 键用于上下移动。 k 键:向上移动一行。j 键:向下移动一行,q健:退出分页器。这些键的行为类似于许多文本编辑器(如 Vim)中的行为。
后面进行商务项目提交时候你就会发现Git真的很牛掰。摸鱼时候一个上午commit提交3-5次差不多了,让领导知道你在"卖力打工"。