git基本操作

git基本操作

zy123
2025-03-21 /  0 评论 /  0 点赞 /  1 阅读 /  4477 字
最近更新于 03-23
温馨提示:
本文最后更新于2025年03月23日,已超过36天没有更新,若内容或图片失效,请留言反馈。

Git

linux上安装Git

sudo apt update
sudo apt install git

Git Bash:与linux风格接近,使用最多,推荐

Git CMD:windows风格

Git GUI:图形界面,不推荐

查看配置

git config -l :查看所有配置

git config --global --list 查看用户配置的

git config --system --list :系统配置的

核心原理

index是暂存区

respository 是本地代码仓库,保存着本地的各个版本代码

remote是远程仓库,通常是github/gitee码云

如何克隆别人已有的项目

  1. 获取项目地址http
  2. 打开本地文件系统,选择你需要保存项目的位置并打开cmd
  3. git clone xxx,这个过程可能需要验证身份,输入用户名密码

如何将本地仓库与远程仓库连接?从零开始

法1:

  • 首先在Github上新建一个代码仓库,拷贝地址 eg:https://github.com/zhangww-web/JianShu.git

  • 在你本地文件夹下鼠标右键git bash here

  • git init 新建本地仓库,生成.git隐藏文件,点进去有head文件。

  • git remote add origin url,可以绑定远程仓库

  • 继续输入git pull origin master(若你远程仓库为空,不需要这一步)
  • git add .(.表示所有的,注意这个‘点’)—将本地文件提交至暂存区
  • git commit -m '提交信息'
  • git push origin master

法2:

第2种方法比较简单,直接用把远程仓库拉到本地,然后再把自己本地的项目拷贝到仓库中去。然后push到远程仓库上去即可。要求远程仓库为新建的空仓库!!!

法3:在android studio中集成

  1. 配置Git

image-20240425104918549

  1. 关联自己的github

image-20240425104950049

对于任何安卓项目,前两步都是通用的!!!

image-20240425105318414

image-20240425105341246

这里的Remote填远程仓库地址,eg: https://github.com/zhangww-web/JianShu.git

IDEA

方法类似,先init本地仓库,

点击顶部菜单栏的 Git -> Manage Remotes

image-20250308102802964

如果Share project on github一直失败,可以这样: 前面步骤不变,现在去github上新建一个空白仓库,获得一个remote url,然后本地仓库提交到该空白仓库,即可建立链接。

迁移代码仓库

法一(推荐):访问令牌(Access Token)获取:点击右上角头像,选择“Settings”(设置)。

在左侧菜单中找到“Developer settings”(开发者设置),然后点击“Personal access tokens”(个人访问令牌)。点击“Generate new token”(生成新令牌),按照需要选择相应的权限(通常建议勾选 repo、read:org 等,根据你的实际需求)。生成后将令牌复制下来,填入 Gitea 的迁移界面中。

直接推完整git信息,推荐

法二:

本地有完整的代码已经git提交记录,不想丢失,推送到新的远程仓库:

在本地文件夹下git bash here

git remote add origin <新仓库地址>

git push -u origin --all

注意:只会将你本地仓库已经 checkout 出来的所有分支(即本地存在的分支)推送到新远程仓库中。

Git 常用命令

提交代码

git add--> git commit --> git push

git add . 提交所有文件到暂存区,此时git status显示changes to be commited

git commit -m "describe描述性内容" 提交到本地仓库

分支操作

git banch -a 可以查看所有分支

git branch dev 可以新建dev分支

git checkout dev 可以切换到dev分支

git branch -d dev 删除dev分支

git branch -m dev cs :将dev分支修改名称为cs分支

push失败问题

首先,科学上网一定能打开github的官网,但是idea中仍然无法push

此时查看你的代理服务器的端口,发现是7890

image-20240802181935378

然后打开git bash,输入以下代码:

使用http代理

git config --global http.proxy http://127.0.0.1:7890 git config --global https.proxy https://127.0.0.1:7890

使用socks5代理

git config --global http.proxy socks5://127.0.0.1:7890 git config --global https.proxy socks5://127.0.0.1:7890

取消代理

git config --global --unset http.proxy git config --global --unset https.proxy

或者使用国产的gitee或者自己服务器上搭建gitea进行代码托管!!!

拉取代码与解决冲突

git pull 命令用于从远程仓库拉取(fetch)并合并(merge)最新的更改到本地仓库。它实际上执行了两个操作

  1. git fetch: 这个操作会从远程仓库下载最新的更改到本地仓库,但不会自动合并到当前分支。它将远程仓库的更改存储在本地仓库中,使你能够查看它们,但不会更改你当前工作目录中的文件。
  2. git merge: 这个操作将远程仓库的更改合并到当前分支。如果有冲突,你需要解决冲突后再次提交合并的结果

情况1:本地修改代码未提交,拉取代码的时候就会报错:

错误:您对下列文件的本地修改将被合并操作覆盖: docker-compose.yaml 请在合并前提交或贮藏您的修改。 正在终止

暂存未提交的更改(git stash)

如果还不想提交本地修改,可以将更改暂存起来:

git stash
git pull
git stash pop

git stash 会将当前工作区的改动保存到一个栈中,拉取完成后通过 git stash pop 恢复修改。如果恢复过程中出现冲突,同样需要手动解决。

舍弃本地修改

如果确定不需要这些修改,可以放弃它们:

git reset --hard
git pull

但是推荐先提交本地的代码!!!

git add .
git commit -m "描述本次修改的提交信息"
git pull

情况2:权限校验问题

一般可以保持git网页端账号的登录状态,再pull,会有弹窗出来输入git的用户名和密码,成功后即可拉取。

情况3 合并冲突,以pycharm为例

1.触发冲突解决界面 当你执行 git pull 后如果出现冲突,PyCharm 会在右下角或版本控制工具窗口中提醒有冲突文件。你可以点击提示信息或在版本控制面板中找到冲突文件。

2.启动合并工具 双击冲突文件后,PyCharm 会自动打开三方合并工具。界面通常分为三部分:

  • 左侧:本地修改(当前分支的更改)
  • 右侧:远程修改(要合并进来的更改)
  • 中间:合并结果(你需要编辑的区域)

3.手动选择并合并代码 在合并工具中,你可以逐个查看冲突部分:

  • 点击左侧或右侧的按钮来选择保留哪部分内容。
  • 如果需要,你也可以手动编辑中间的合并结果区域,直接输入合适的代码。
  • 合并工具通常会有跳转到下一个冲突的按钮,方便你逐个解决。

4.保存合并结果并标记解决 合并完成后,点击工具窗口上的“Apply”或“Accept Merge”按钮,保存你的修改。此时,冲突文件会标记为已解决。

5.提交合并后的更改 返回主界面后,你可以在版本控制面板中看到已解决的文件。检查确认无误后,通过 VCS 菜单或直接点击工具栏中的提交按钮,将合并结果提交到仓库。

其他Git相关

SSH公私钥

公私钥生成

在linux中,使用账号密码链接github报错如下:

remote: Support for password authentication was removed on August 13, 2021. remote: Please see https://docs.github.com/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication. 致命错误:'https://github.com/zhangww-web/reptile.git/' 鉴权失败

原因是linux不支持账号密码链接!!

配置ssh,可以在git push的时候直接推送,github会通过ssh来验证你的身份。

如何在linux中配置私钥?

生成 SSH 密钥

  • 如果你还没有 SSH 密钥,可以使用以下命令生成:

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    
  • 按照提示保存密钥文件。

添加 SSH 密钥到 GitHub

  • 复制生成的公钥内容(通常在 ~/.ssh/id_rsa.pub 文件中)。
  • 登录到 GitHub。
  • 进入 SSH and GPG keys 页面。
  • 点击 "New SSH key" 按钮,粘贴公钥内容并保存。

使用 SSH URL 克隆仓库

git clone git@github.com:zhangww-web/reptile.git

SSH 连接 GitHub 并触发身份验证,流程如下:

  1. GitHub 发送一个随机挑战(Challenge) GitHub 服务器会向你的 Linux 服务器发送一个随机字符串,并用 你的公钥 进行加密。
  2. 你的 Linux 服务器用私钥解密 你的 SSH 客户端(ssh 命令或 git)会自动使用本地的 私钥(id_rsa) 进行解密。如果解密成功,证明你拥有匹配的私钥。
  3. 返回解密后的数据 你的客户端将解密后的数据返回给 GitHub。
  4. GitHub 验证解密结果 GitHub 服务器检查解密结果是否匹配它最初发送的随机挑战。如果匹配,则认证成功。

身份验证逻辑:GitHub 发送加密数据 → 你的私钥解密 → 返回结果 → GitHub 确认一致性 → 认证成功。

如果避免每次git pull都要验证身份?

git config --global credential.helper store //将凭据保存到磁盘上(明文存储):

.gitignore(忽略某些文件)

如果不小心commit了如何撤销?

例:如果在添加.gitignore文件前不小心提交了.idea文件夹,到项目根目录,git bash here

git rm -r --cached -f .idea 
git commit -m "Remove .idea from tracking"

在.gitignore文件进行添加

为什么.gitignore文件不放在.git文件夹中?

  • 用途不同.git文件夹由Git自动创建,用于存储Git的内部数据,包括所有提交记录、配置和对象等。用户一般不需要手动修改这个文件夹里的内容。而.gitignore文件是用户创建和维护的,用于定义哪些文件和目录应被Git忽略。
  • 便于版本控制.gitignore文件放在项目的根目录中,可以和项目代码一起被版本控制,这样其他协作开发者也能看到和使用相同的忽略规则。如果把.gitignore放在.git文件夹中,它就不会被版本控制系统追踪到。

撤销Git版本控制

直接把项目文件夹中的.git文件夹删除即可(开启查看隐藏文件夹可看到)

若idea/pycharm报错:

COVID-19-Detector is registered as a Git root, but no Git repositories were found there.

image-20240729113527314

添加协作者

协作者权限

如果不使用组织的话,你也可以单独为每个仓库添加协作者。这样做的话,公钥仍然应该添加到你的个人设置中,但是你可以在每个仓库的设置中单独管理协作者访问权限。

设置步骤包括:

  • 打开你想要添加协作者的仓库。
  • 导航到仓库设置中的“Manage access”(管理访问)或“Collaborators”(协作者)部分。
  • 添加协作者的GitHub用户名,并设置他们的访问级别。

image-20240524100231379

© 版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 收藏
评论 抢沙发
取消