不同场景下git指令的搭配

添加账号

bash 复制代码
git config --global user.name "YourName"
git config --global user.email "your_email@example.com"

设置 Git 默认分支名称为 main

bash 复制代码
git config --global init.defaultBranch main

初始化仓库:

bash 复制代码
git init

配置SSH 密钥

如果你使用 SSH 方式连接 GitHub,需要生成并添加 SSH 密钥到 GitHub:

bash 复制代码
ssh-keygen -t rsa -b 4096 -C "your@email.com"

然后将 ~/.ssh/id_rsa.pub 中的内容复制粘贴到 GitHub 的 Settings > SSH and GPG keys 页面。

初始化本地仓库并上传代码

情况一:新建项目上传到 GitHub
bash 复制代码
# 进入你的项目目录
cd /path/to/your/project

# 初始化 Git 仓库
git init

# 添加所有文件到暂存区
git add .

# 提交更改
git commit -m "Initial commit"

# 关联远程仓库(HTTPS方式)
git remote add origin https://github.com/your-username/repo-name.git

# 或者使用 SSH 方式(推荐)
git remote add origin git@github.com:your-username/repo-name.git

# 推送代码到 GitHub 主分支(main)
git push -u origin main

💡 如果你本地是 master 分支,而 GitHub 默认是 main,你可以重命名分支:

bash 复制代码
git branch -M main

情况二:已有 GitHub 仓库,克隆到本地再提交代码
bash 复制代码
# 克隆远程仓库到本地
git clone https://github.com/your-username/repo-name.git

# 进入项目目录
cd repo-name

# 添加新文件或修改内容
# ...

# 添加更改
git add .

# 提交更改
git commit -m "Add new feature"

# 推送到远程仓库
git push origin main

提交修改到本地(切换分支时候需要先执行这一步)

bash 复制代码
git add .
git commit -m "保存当前工作进度"

查看当前 Git 仓库关联的远程库

bash 复制代码
git remote -v

这个命令会列出所有与该仓库关联的远程库及其 URL。输出结果通常看起来像这样:

复制代码
origin  https://github.com/user/repo.git (fetch)
origin  https://github.com/user/repo.git (push)

在这个例子中,origin 是远程库的名字,而 https://github.com/user/repo.git 是远程库的 URL。(fetch)(push) 表明该远程库用于 fetch(拉取) 和 push(推送) 操作。通常情况下,你会看到同一个 URL 对应着 fetch 和 push 操作,但也可以配置不同的远程库分别用于这些操作。

如果你只想知道用于推送的远程库,可以专注于那些标注了 (push) 的行。例如,上面的例子显示 origin 远程库被配置为向 https://github.com/user/repo.git 推送更改。

添加远程库

bash 复制代码
git remote add github git@github.com:ergevv/xxxxx.git

这个仓库在电脑本地叫github,指向的是github的仓库。

bash 复制代码
git push github master

将本地的分支推送到github指向的git@github.com:ergevv/xxxxx.git仓库的master分支。

推送到特定分支

  1. 查看当前分支
bash 复制代码
git branch
  1. 创建并切换到 main 分支
bash 复制代码
git checkout -b main

这会基于当前提交创建一个新的 main 分支,并切换过去。

  1. 设置远程跟踪(关联远程仓库的 main 分支)
    如果你确定远程仓库已经有 main 分支,可以直接拉取:
bash 复制代码
git checkout -b main origin/main

创建一个新的本地分支 main,并让它跟踪远程分支 origin/main(也就是你之前添加的远程仓库 github 的 main 分支),然后切换到这个新分支。

  1. 推送本地 main 分支到 GitHub 的 main
bash 复制代码
git push github main

这样就会把你的本地 main 分支推送到 GitHub 上的 main 分支了。


清理远程的分支

bash 复制代码
git push github --delete master

删除本地指向的仓库:

bash 复制代码
git remote remove github

将本地的分支 dev/test 推送到 GitHub 上的远程仓库,并且希望它被推送到 远程的 master 分支:

bash 复制代码
git push github dev/test:master

下载指定分支

  1. 命令格式:
bash 复制代码
git clone -b <分支名> <仓库地址> <本地目录名(可选)>

示例:从 GitHub 下载名为 dev/test 的分支:

bash 复制代码
git clone -b dev/test https://github.com/ergevv/xxxx.git
  1. 如果已经克隆了仓库,但想切换到其他分支
bash 复制代码
cd path/to/project     # 进入已克隆的项目目录
git fetch               # 获取远程所有分支信息
git checkout dev/test  # 切换到指定分支

如果提示 Branch 'dev/mcapRecord' not found,说明你需要先拉取远程分支:

bash 复制代码
git fetch origin dev/test
git checkout -b dev/test origin/dev/test

fetch和pull的区别

git fetch 是 Git 中一个非常有用的命令,它主要用于从远程仓库获取最新的信息和更新,但不会自动合并或修改你当前的工作目录。具体来说,git fetch 的作用可以概括为以下几个方面:

  1. 获取远程更新

    • git fetch 会连接到指定的远程仓库,并拉取所有本地没有的数据(如新的提交、分支等),但不会将这些更改自动合并到你的工作目录中。
    • 这意味着你可以查看远程发生了哪些变化,而不用担心这些变化会直接影响你的工作。
  2. 更新远程引用

    • 它会更新本地关于远程分支的信息(即远程跟踪分支)。例如,如果你在远程仓库上有一个名为 origin/master 的分支,执行 git fetch 后,Git 会确保你的本地 origin/master 指向与远程仓库一致的位置。
  3. 不改变本地分支的状态

    • git pull 不同,git fetch 不会尝试合并或重新应用任何远程的更改到你当前的分支。因此,它是安全的,尤其是在你不确定是否需要将远程的更改合并到当前工作中时。
1. 查看远程分支的变化
bash 复制代码
git fetch origin
  • 执行上述命令后,你可以通过 git loggit diff 来比较本地分支与远程分支之间的差异。

例如,查看 master 分支与远程 origin/master 的差异:

bash 复制代码
git log master..origin/master
git diff master origin/master
2. 更新远程跟踪分支

假设你想切换到一个新的远程分支,但该分支尚未在本地存在:

bash 复制代码
git fetch origin dev/test
git checkout dev/test
  • 这会确保本地有最新的 dev/test 分支信息,然后你可以安全地切换到这个分支。
3. 在合并之前检查远程更改

如果你想在实际合并之前查看远程分支上的最新更改,可以先执行 git fetch,然后手动决定如何处理这些更改(比如是否合并):

bash 复制代码
git fetch origin
# 现在你可以选择是否以及如何合并
git merge origin/master
# 或者
git rebase origin/master

注意:当git pull时,如何本地有修改的文件,那么该文件拉取时,不是远程仓库的最新版本,而是本地的修改版本。

相关推荐
Komorebi_99992 小时前
Git常用指令
git·web
一小池勺4 小时前
🚀 Git 如何让文件存在于远程仓库却不被本地追踪?
git·github
五月高高6 小时前
Idea使用git不提示账号密码登录,而是输入token问题解决
git
魏 无羡6 小时前
idea实现git版本回退的常见场景
java·git·intellij-idea
不了_谢谢10 小时前
项目仓库文件太大怎么清理?如何清理git仓库大文件记录?
git
程序员鱼皮11 小时前
会Vibe Coding的同事:我一个人干掉整个技术部!
ai·程序员·互联网·编程·开发·代码
nc_kai1 天前
Android Git操作
git
GUET_一路向前1 天前
【git】在Linux系统下clone指定分支
linux·运维·git