Git:如何确保新分支基于上游主服务器

Aub*_*e18 5 git branch github

我一直在用github犯很多菜鸟错误,结果我正在寻找一种万无一失的方法(确保我安全!),以确保:

a)我在fork上创建的所有新分支均基于原始主文件,而不是其他某些分支,并且...

b)我的原始母版始终与上游母版保持最新,并且...

c)当我提交(推送?)时/之前,我的更改将重新基于上游主服务器。

到目前为止,这就是我所拥有的...

要创建新分支:

git fetch --all --tag
git pull upstream master
git push origin master
git checkout -b my_branch_name -t origin/master
Run Code Online (Sandbox Code Playgroud)

要将我的更改存储到该分支:

git add -A
git commit -m "Summary of what changed"
git fetch --all --tag
git pull --rebase upstream master
git push origin my_branch_name
Run Code Online (Sandbox Code Playgroud)

要在以后加载现有分支(例如,根据PR反馈进行一些其他更改):

git fetch --all --tag
git pull upstream master
git push origin master
git checkout my_branch_name -t origin/master
Run Code Online (Sandbox Code Playgroud)

然后将更新保存到该分支:

git add -A
git commit --amend --no-edit
git fetch --all --tag
git pull --rebase upstream master
git push origin my_branch_name -f
Run Code Online (Sandbox Code Playgroud)

我必须承认我不完全理解其中一些命令的功能-似乎有很多方法可以执行许多相似的操作,尽管有很多谷歌搜索/阅读工作,但我仍然是菜鸟。

任何指导非常感谢!

Elp*_*Kay 6

如果upstream master指的是服务器/远程中最新的 master 分支,您可以简单地运行以下 cmd 来创建一个新分支。

git fetch origin master
git checkout -b <new_branch> FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)

如果你不介意在分离的 HEAD 上工作,你也可以运行

git fetch origin master
git checkout FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)


Jib*_*iru 5

设置上游后

git checkout -b branch-name
git fetch upstream
git reset --hard upstream/master
git push --set-upstream origin branch-name
Run Code Online (Sandbox Code Playgroud)


Tim*_*sen 3

要基于“当前”分支创建功能分支master,应执行以下步骤:

git checkout master                # switches to your local master branch
git pull origin master             # updates remote tracking branch, merges into local master
git checkout -b my_feature_branch  # create a new branch from your updated local master
Run Code Online (Sandbox Code Playgroud)

请注意,新的更改始终有可能不断进入masterGitHub 上的远程分支。实际上,您通常应该假设这种情况将会发生,并且您需要通过合并或变基来处理它。