git的使用

1. Git 的安装与配置

https://git-scm.com/

  • 配置 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

  1. -v:此选项使 git push 命令执行时更加详细地显示输出信息,包括推送的提交对象等。
  2. --tags:这个选项告诉 Git 将本地所有的标签也推送到远程仓库。
  3. --set-upstream:此选项告诉 Git 设置本地分支与远程分支之间的跟踪关系。这意味着以后当你运行 git pushgit pull 时,Git 会知道应该与哪个远程分支交互。
  4. origin:指定了远程仓库的名字,默认情况下通常是 origin
  5. 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 密钥设置中。

连接服务器

```bash
# 连接服务器
ssh root@192.168.0.3
```

✨使用图形化工具 sourcetree

https://www.sourcetreeapp.com/

SourceTree 是一款免费的图形化 Git 客户端,由 Atlassian 开发。它旨在简化 Git 的使用,使版本控制系统对于开发者来说更加直观易用。SourceTree 可以在 Windows 和 macOS 上运行,支持多种语言界面,使得全球范围内的用户都能方便地使用它进行代码管理和协作。

SourceTree 的主要功能包括:

  1. 图形界面:提供了直观的用户界面,使得 Git 的操作变得更加简单明了,即使是初学者也能快速上手。

  2. Git 集成:支持所有常见的 Git 命令,包括分支管理、合并、拉取请求等。

  3. 多存储库支持:可以同时管理多个 Git 存储库,每个存储库都有自己的面板,便于切换和查看。

  4. 合并工具集成:支持与多种外部合并工具集成,如 Beyond Compare、KDiff3 等,帮助解决合并冲突。

  5. Pull Request 支持:可以直接从 SourceTree 中创建和审查 Pull Request,如果连接了 Bitbucket 或 GitHub,还可以直接管理远程仓库的 PR。

  6. 个性化配置:可以根据个人喜好定制界面颜色、字体大小等。

  7. 多平台支持:可在 Windows 和 macOS 上使用,提供了跨平台的一致体验。

如何使用 SourceTree:

  1. 安装:前往 SourceTree 的官方网站下载适合你操作系统的版本,并按照提示完成安装。

  2. 创建新存储库或打开现有存储库:在首次启动 SourceTree 时,你可以选择创建一个新的 Git 存储库或将现有的 Git 存储库添加到 SourceTree 中。

  3. 基本操作:使用 SourceTree 进行日常的 Git 操作,如提交更改、创建分支、合并分支等。

  4. 高级功能:利用 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 仓库添加多个远程仓库,使用不同的名称区分它们。添加远程仓库的命令如下:
    git remote add <remote_name> <remote_url>
    
    例如,添加 GitHub 和 GitLab 的远程仓库:
    git remote add github https://github.com/user/repo.git
    git remote add gitlab https://gitlab.com/user/repo.git
    
2. 查看远程仓库
  • 使用以下命令查看已添加的所有远程仓库及其对应的 URL:
    git remote -v
    
    输出示例:
    github  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
  1. 登录 GitHub 账户。
  2. 点击右上角的头像,选择 Settings
  3. 在左侧菜单中,选择 Developer settings
  4. 点击 Personal access tokens,然后选择 Tokens (classic)
  5. 点击 Generate new token
  6. 输入令牌名称,选择过期时间(如 30 天、60 天等)。
  7. Select scopes 部分,选择所需的权限。常用权限包括:
    • repo: 完全控制私有仓库
    • read:org: 读取组织信息
    • workflow: 管理工作流
  8. 完成后,点击 Generate token

注意:生成后,请务必保存这个令牌,因为它只会在此时显示一次。

在 GitLab 上生成 PAT
  1. 登录 GitLab 账户。
  2. 点击头像,选择 Preferences
  3. 在左侧菜单中,选择 Access Tokens
  4. 输入令牌名称,选择过期时间。
  5. 选择所需的权限(例如 apiread_user 等)。
  6. 点击 Create personal access token

同样,生成后请妥善保存令牌。

2. 使用个人访问令牌连接远程仓库

  • 在使用 git clonegit pushgit pull 时,Git 会提示输入用户名和密码。
例如:
  • 克隆远程仓库:
    git clone https://github.com/user/repo.git
    
  • 在提示输入用户名时,输入 GitHub/GitLab 的用户名。
  • 在提示输入密码时,输入之前生成的个人访问令牌(PAT)。

3. 配置 Git 以缓存访问令牌(可选)

为了避免每次操作都输入访问令牌,可以使用 Git 的凭证缓存功能。

  • 启用凭证缓存:
    git config --global credential.helper cache
    
    默认缓存时间为 15 分钟,可以设置更长时间:
    git config --global credential.helper 'cache --timeout=3600'  # 缓存 1 小时
    

4. 处理访问令牌过期

  • 如果您设置的访问令牌过期,需要重新生成并更新本地 Git 凭证。
  • 生成新的 PAT 后,可以使用 git config --global credential.helper store 命令将其永久存储。

5. 安全注意事项

  • 定期更换:为了安全,定期更换访问令牌。
  • 限制权限:仅为访问令牌授予所需的最低权限。
  • 不要在代码中硬编码令牌:避免将 PAT 写入代码或公共仓库,防止泄露。

总结

通过使用个人访问令牌(PAT)连接 Git 远程仓库,可以增强安全性,避免使用不安全的用户名和密码。掌握这一流程,有助于更安全地管理代码和项目。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值