1. Git 的安装与配置
- 配置 Git:
- 设置用户名和邮箱(全局配置):
git config --global user.name "Your Name" git config --global user.email "your.email@example.com" - 查看配置:
git config --list
- 设置用户名和邮箱(全局配置):
1. 基础指令
-
初始化 Git 仓库:
git init -
克隆远程仓库:
git clone <repository_url> -
查看当前仓库状态:
git status -
查看版本历史:
git log git log --graph --oneline --all # 适合查看整个项目的提交历史,特别是有多个分支和合并的情况。 git log --all # 适合查看所有分支的提交历史,但不提供图形化和简化的输出。 git log origin/main # 适合查看远程仓库中特定分支的提交历史。 git log # 适合查看当前分支的提交历史。 git reflog # 查看所有操作的历史记录,找到被回滚的提交。 git log --grep='revert' # 查找包含 revert 关键字的提交。 git show <commit-hash> # 查看具体的回滚提交内容。 git blame # 查找特定代码行的修改历史,包括回滚操作。
2. 文件操作
-
添加文件到暂存区:
git add <file_name> # 添加单个文件 git add . # 添加当前目录下的所有更改git commit -m "commit message" -
撤销更改(恢复到上一次提交):
git checkout -- <file_name> -
删除文件并从版本控制中移除:
git rm <file_name>
3. 分支管理
- 查看所有分支:
git branch # 查看本地分支 git branch -r # 查看远程分支 git branch -a # 查看所有分支 git switch # 切换到不同的分支 Git 2.23 # 创建新分支 git branch <branch_name> # 命令用于重命名当前所在的 Git 分支 git branch -m 'main' #**切换分支**: git checkout <branch_name> # **创建并切换到新分支**: git checkout -b <branch_name> # **合并分支**: git merge <branch_name> #- **删除本地分支**: git branch -d <branch_name> # 推送分支 # -u 或 --set-upstream: 设置本地分支与远程分支的跟踪关系 git push -u origin new-feature # 删除远程 git push origin :feature-branch # 同名 在首次推送后或已经设置了跟踪关系的情况下使用 git push origin enhancement-branch # git push -v --tags --set-upstream origin main:main git push --set-upstream origin master:main
git push -v --tags --set-upstream origin main:main
-v:此选项使git push命令执行时更加详细地显示输出信息,包括推送的提交对象等。--tags:这个选项告诉 Git 将本地所有的标签也推送到远程仓库。--set-upstream:此选项告诉 Git 设置本地分支与远程分支之间的跟踪关系。这意味着以后当你运行git push或git pull时,Git 会知道应该与哪个远程分支交互。origin:指定了远程仓库的名字,默认情况下通常是origin。main:main:这里的第一个main是本地分支名,第二个main是远程分支名。这个格式告诉 Git 把本地的main分支推送到远程仓库的main分支。
4. 远程仓库管理
-
查看远程仓库:
git remote -v -
添加远程仓库:
git remote add <remote_name> <repository_url> -
从远程仓库拉取更改:
git pull <remote_name> <branch_name> -
推送更改到远程仓库:
git push <remote_name> <branch_name>
5. 标签管理
-
创建标签:
git tag <tag_name> # 创建轻量标签 git tag -a <tag_name> -m "tag message" # 创建带注释的标签 -
查看标签:
git tag -
推送标签到远程仓库:
git push <remote_name> <tag_name>
6. 冲突处理
-
拉取远程代码:
git pull origin <branch_name> -
解决合并冲突后提交:
git add <file_name> git commit -m "Resolved merge conflicts"
7. 查看更改
- 查看暂存区和工作区的差异:
git diff # 查看未暂存的更改 git diff --cached # 查看已暂存的更改
8. 日志与历史
-
查看提交历史:
git log # 默认格式 git log --oneline # 单行简洁格式 -
查看特定文件的历史:
git log <file_name>
9. 重置和撤销操作
-
撤销最后一次提交(保留更改在暂存区):
git reset --soft HEAD~1 -
撤销最后一次提交(不保留更改):
git reset --hard HEAD~1
10. 其他常用指令
- 显示当前分支:
git branch --show-current
11. 连接远程仓库的不同方式
-
HTTPS:
- 通过 HTTPS 连接远程仓库,输入用户名和密码(或使用个人访问令牌)。
-
SSH:
- 使用 SSH 密钥连接远程仓库,需先生成 SSH 密钥并添加到 Git 账户设置中:
ssh-keygen -t rsa -b 4096 -C "your.email@example.com" # ssh 克隆项目 git clone git@xxx.git # 测试连接 ssh -T git@github.com - 将生成的
~/.ssh/id_rsa.pub文件内容添加到远程 Git 服务的 SSH 密钥设置中。
- 使用 SSH 密钥连接远程仓库,需先生成 SSH 密钥并添加到 Git 账户设置中:
连接服务器
```bash
# 连接服务器
ssh root@192.168.0.3
```
✨使用图形化工具 sourcetree
https://www.sourcetreeapp.com/
SourceTree 是一款免费的图形化 Git 客户端,由 Atlassian 开发。它旨在简化 Git 的使用,使版本控制系统对于开发者来说更加直观易用。SourceTree 可以在 Windows 和 macOS 上运行,支持多种语言界面,使得全球范围内的用户都能方便地使用它进行代码管理和协作。
SourceTree 的主要功能包括:
-
图形界面:提供了直观的用户界面,使得 Git 的操作变得更加简单明了,即使是初学者也能快速上手。
-
Git 集成:支持所有常见的 Git 命令,包括分支管理、合并、拉取请求等。
-
多存储库支持:可以同时管理多个 Git 存储库,每个存储库都有自己的面板,便于切换和查看。
-
合并工具集成:支持与多种外部合并工具集成,如 Beyond Compare、KDiff3 等,帮助解决合并冲突。
-
Pull Request 支持:可以直接从 SourceTree 中创建和审查 Pull Request,如果连接了 Bitbucket 或 GitHub,还可以直接管理远程仓库的 PR。
-
个性化配置:可以根据个人喜好定制界面颜色、字体大小等。
-
多平台支持:可在 Windows 和 macOS 上使用,提供了跨平台的一致体验。
如何使用 SourceTree:
-
安装:前往 SourceTree 的官方网站下载适合你操作系统的版本,并按照提示完成安装。
-
创建新存储库或打开现有存储库:在首次启动 SourceTree 时,你可以选择创建一个新的 Git 存储库或将现有的 Git 存储库添加到 SourceTree 中。
-
基本操作:使用 SourceTree 进行日常的 Git 操作,如提交更改、创建分支、合并分支等。
-
高级功能:利用 SourceTree 提供的高级功能,如比较工具、图表视图等,来进行更复杂的 Git 操作。
SourceTree 是一款非常适合那些想要使用 Git 但又不想完全依赖命令行工具的开发者的软件。它不仅简化了 Git 的使用,还增强了团队协作的能力。
- 下载与安装:
- Windows 用户可以下载 Git for Windows,并按照提示进行安装。
- macOS 用户可以使用 Homebrew 安装:
brew install git。 - Linux 用户可以使用包管理器,如
apt(Debian/Ubuntu):sudo apt-get install git。
本地仓库配置多个远程仓库
关于同一个 Git 仓库配置多个不同的远程仓库的总结如下:
同一个 Git 仓库的多个远程仓库管理
1. 添加远程仓库
- 可以为同一个 Git 仓库添加多个远程仓库,使用不同的名称区分它们。添加远程仓库的命令如下:
例如,添加 GitHub 和 GitLab 的远程仓库:git remote add <remote_name> <remote_url>git remote add github https://github.com/user/repo.git git remote add gitlab https://gitlab.com/user/repo.git
2. 查看远程仓库
- 使用以下命令查看已添加的所有远程仓库及其对应的 URL:
输出示例:git remote -vgithub https://github.com/user/repo.git (fetch) github https://github.com/user/repo.git (push) gitlab https://gitlab.com/user/repo.git (fetch) gitlab https://gitlab.com/user/repo.git (push)
3. 推送到不同的远程仓库
- 使用
git push命令时,可以指定要推送到的远程仓库:
例如:git push <remote_name> <branch_name>git push github main git push gitlab main
4. 从不同的远程仓库拉取更改
- 使用
git pull命令时,同样可以指定远程仓库:
例如:git pull <remote_name> <branch_name>git pull github main git pull gitlab main
5. 设置默认远程仓库
- 可以设置一个远程仓库为默认的 push 目标,使用
git push时无需每次都指定:
例如:git push -u <remote_name> <branch_name>git push -u github main
6. 切换远程仓库的 URL
- 如果需要更改远程仓库的 URL,可以使用
git remote set-url命令:
例如:git remote set-url <remote_name> <new_remote_url>git remote set-url github https://new-url.com/user/repo.git
7. 删除远程仓库
- 如果不再需要某个远程仓库,可以使用以下命令删除:
例如:git remote remove <remote_name>git remote remove gitlab
注意事项
- 在使用多个远程仓库时,确保每个远程仓库的状态一致,以避免版本冲突。
- 定期从各个远程仓库拉取更新,以确保本地代码与远程仓库同步。
- 在进行重大更改时,建议在不同远程仓库中进行充分的测试和验证,以防止代码冲突和数据丢失。
总结
通过配置多个远程仓库,可以方便地在不同平台上进行协作和管理代码。合理使用 Git 的远程管理功能,有助于提高开发效率和团队协作的灵活性。
代码冲突通常的问题
在 Git 中,解决冲突是团队协作开发中常见的任务。冲突通常发生在多个开发者同时修改同一个文件的相同部分,或者在合并不同的分支时。以下是一些解决 Git 冲突的方案和步骤:
推荐使用sourcetree去解决
1. 识别冲突
当你尝试执行合并(git merge)或拉取(git pull)操作时,如果存在冲突,Git 会输出提示信息,并标记出冲突的文件。
示例输出:
Automatic merge failed; fix conflicts and then commit the result.
2. 查看冲突文件
使用以下命令查看所有有冲突的文件:
git status
在输出中,冲突文件将被标记为 “unmerged”.
3. 打开冲突文件
打开冲突的文件,你会看到类似以下的标记:
<<<<<<< HEAD
当前分支的内容
=======
合并分支的内容
>>>>>>> branch_name
<<<<<<< HEAD:标记当前分支的版本。=======:分隔当前分支和合并分支的内容。>>>>>>> branch_name:标记要合并的分支的版本。
4. 解决冲突
手动编辑文件,决定保留哪一部分内容,或者将两部分合并。编辑后,删除冲突标记(<<<<<<<、======= 和 >>>>>>>)并确保文件语法正确。
5. 标记冲突已解决
在解决完所有冲突后,使用以下命令将更改添加到暂存区:
git add <conflicted_file>
你也可以一次性添加所有解决了冲突的文件:
git add .
6. 提交更改
提交解决冲突后的更改:
git commit -m "Resolved merge conflicts"
7. 使用合并策略
在某些情况下,可以选择使用合并策略来避免冲突:
--strategy-option ours:在合并时保留当前分支的更改。--strategy-option theirs:在合并时保留要合并的分支的更改。
例如:
git merge branch_name --strategy-option ours
8. 预防冲突
- 频繁合并:定期将主分支的更改合并到你的工作分支,以减少未来合并时的冲突。
- 小且频繁的提交:进行小而频繁的提交,确保代码库始终保持可用状态,降低冲突风险。
- 清晰的沟通:与团队成员保持良好的沟通,确保大家了解谁在修改哪些文件。
冲突在使用 Git 进行版本控制时是不可避免的,但通过以上步骤,你可以有效地识别和解决冲突。同时,提前采取预防措施也可以减少冲突的发生频率。熟悉冲突解决的流程,可以提高团队的协作效率和代码质量。
生成个人访问令牌
通过 HTTPS 连接 Git 远程仓库时,使用个人访问令牌(Personal Access Token, PAT)是一种安全的认证方式。以下是使用个人访问令牌的详细步骤和注意事项:
1. 生成个人访问令牌
在 GitHub 上生成 PAT
- 登录 GitHub 账户。
- 点击右上角的头像,选择 Settings。
- 在左侧菜单中,选择 Developer settings。
- 点击 Personal access tokens,然后选择 Tokens (classic)。
- 点击 Generate new token。
- 输入令牌名称,选择过期时间(如 30 天、60 天等)。
- 在 Select scopes 部分,选择所需的权限。常用权限包括:
repo: 完全控制私有仓库read:org: 读取组织信息workflow: 管理工作流
- 完成后,点击 Generate token。
注意:生成后,请务必保存这个令牌,因为它只会在此时显示一次。
在 GitLab 上生成 PAT
- 登录 GitLab 账户。
- 点击头像,选择 Preferences。
- 在左侧菜单中,选择 Access Tokens。
- 输入令牌名称,选择过期时间。
- 选择所需的权限(例如
api、read_user等)。 - 点击 Create personal access token。
同样,生成后请妥善保存令牌。
2. 使用个人访问令牌连接远程仓库
- 在使用
git clone、git push或git pull时,Git 会提示输入用户名和密码。
例如:
- 克隆远程仓库:
git clone https://github.com/user/repo.git - 在提示输入用户名时,输入 GitHub/GitLab 的用户名。
- 在提示输入密码时,输入之前生成的个人访问令牌(PAT)。
3. 配置 Git 以缓存访问令牌(可选)
为了避免每次操作都输入访问令牌,可以使用 Git 的凭证缓存功能。
- 启用凭证缓存:
默认缓存时间为 15 分钟,可以设置更长时间:git config --global credential.helper cachegit config --global credential.helper 'cache --timeout=3600' # 缓存 1 小时
4. 处理访问令牌过期
- 如果您设置的访问令牌过期,需要重新生成并更新本地 Git 凭证。
- 生成新的 PAT 后,可以使用
git config --global credential.helper store命令将其永久存储。
5. 安全注意事项
- 定期更换:为了安全,定期更换访问令牌。
- 限制权限:仅为访问令牌授予所需的最低权限。
- 不要在代码中硬编码令牌:避免将 PAT 写入代码或公共仓库,防止泄露。
总结
通过使用个人访问令牌(PAT)连接 Git 远程仓库,可以增强安全性,避免使用不安全的用户名和密码。掌握这一流程,有助于更安全地管理代码和项目。
2109

被折叠的 条评论
为什么被折叠?



