Git
Model for Git
type blob(file) = array<byte>; |
SHA-1 is a hexadecimal strings that are 40 characters long(namely 160bits)
references = map<string(SHA-1),string(human-readable names)>
In reality Git only mainly maintains two pieces of data—objects and references.
Command For Git
git init |
在用了 git push -u origin main 后我如何让本地的 main 分支跟踪 origin/master 分支?
你之前用
git push -u origin main将本地main分支和远程origin/main关联起来了。现在你想让本地的main分支转而跟踪origin/master分支。要做到这一点,你可以使用
git branch命令的--set-upstream-to选项。
更改本地分支的跟踪关系
首先,确保你的本地 main 分支是最新的。
这很重要,因为如果你要跟踪 origin/master,你应该先确保 origin/master 的最新状态已经在你的本地。
Bash
git fetch origin这条命令会从
origin远程仓库下载所有新的分支和提交信息,但不会自动合并到你当前的分支。切换到
main分支(如果不在的话):Bash
git checkout main设置本地
main分支跟踪origin/master:Bash
git branch --set-upstream-to=origin/master main
git branch: Git 分支管理命令。--set-upstream-to=origin/master: 指定要将当前分支(或指定的分支)的上游设置为origin远程仓库的master分支。main: 这是你希望设置跟踪关系的本地分支名称。执行此命令后,你会看到类似这样的输出:
Branch 'main' set up to track remote branch 'master' from 'origin'.
确认更改
你可以使用
git status或git branch -vv来验证新的跟踪关系:
git status
现在当你运行 git status 时,Git 会告诉你你的本地 main 分支是领先或落后于 origin/master 的。
例如:
Bash
On branch main
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean或者
Bash
On branch main
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working tree cleangit branch -vv
这个命令会显示所有本地分支及其跟踪的远程分支信息。
你会看到类似这样的输出:
* main <commit_hash> [origin/master] <commit_message>
another-branch <commit_hash> [origin/another-branch] <commit_message>这里的
[origin/master]明确表示你的本地main分支现在正在跟踪origin/master。
注意事项
同步内容: 仅仅更改跟踪关系并不会自动合并
origin/master的内容到你的main分支。如果你想把origin/master的最新代码同步到你的本地main分支,你需要执行git pull(在设置了新的跟踪关系后)。Bash
git pull由于你已经将
main跟踪到origin/master,现在git pull会自动从origin/master拉取并合并到本地main。分支名称: 在许多新项目中,
main已经是默认的主分支名称。如果你选择让main跟踪master,请确保你理解这样做的原因和潜在的影响,比如在 Git 托管平台(如 Gitee)上,你的 Pull Request 默认目标分支可能仍是master,这可能会导致一些混乱。通常建议本地主分支和远程主分支保持一致。
git pull:拉取并合并
作用:
git pull是一个组合命令,它实际上等于执行了两个步骤:
git fetch:从远程仓库下载最新的更改。git merge(默认):将这些下载下来的更改自动合并到你当前所在的本地分支。
- 你也可以配置
git pull默认执行git rebase而不是git merge(通过git config pull.rebase true)。影响工作区:
git pull会立即更新你的本地工作区,将远程的更改反映到你正在编辑的文件中。核心区别总结:
特性 git fetchgit pull操作 下载远程更改到本地仓库 下载远程更改并自动合并到当前本地分支 影响 只更新本地的远程跟踪分支,不影响工作区 更新工作区,改变本地文件 组成 单一操作 git fetch+git merge(或git rebase)何时用 想查看远程更新,但不立即合并 确定要同步并应用远程更新
JerryYu@DESKTOP-HGF21VE MINGW64 /d/CodeBuffer/Gitee (main) |

