根本原因:爲了簡化說明,在我看來你的local/production
沒有跟蹤origin/production
。您可以使用git branch -avv
進行檢查。
關於git push
:請注意,git push
沒有參數將更新所有已在本地跟蹤分支更新(從git-push(1)
手冊頁)遠程分支:
git push ... [<repository> [<refspec>...]]
The special refspec : (or +: to allow non-fast-forward updates) directs git to
push "matching" branches: for every branch that exists on the local side, the
remote side is updated if a branch of the same name already exists on the remote
side. This is the default operation mode if no explicit refspec is found (that is
neither on the command line nor in any Push line of the corresponding remotes
file---see below).
因爲簡單的結果git push
如果忘記了本地分支所做的更改,有時候並不是很出人意料,我個人喜歡明確指定要推送的分支。你的情況,似乎這是你想做的事:
git push origin local/production:production
如果你想local/production
跟蹤origin/production
,您可以使用選項-u
使local/production
跟蹤分行origin/production
:
git push -u origin local/production:production
(只需要一次)。然後你可以從原點拉到local/production
。
執行摘要:您需要了解跟蹤分支的概念和git push
的特殊語義。
P.S.我在想你的分支名稱local/production
的選擇。爲什麼不只是production
?我懷疑你已經有production
跟蹤origin/production
,也許使用local/production
爲你本地開發。在這種情況下,合理的工作流程是這樣的:
git pull origin production:production
拉更改您的production
- 如果
production
有新的提交,即local/production
背後則要麼衍合local/production
上production
(或合併production
上local/production
)
- 要更改,
merge
或cherry-pick
您提交推到production
與git push origin production:production
推動改變的時刻。
你說得對@FooF。我的問題是我沒有鏈接(或跟蹤?)分支本地/生產。所以'git push'(沒有參數)沒有檢測到這個分支。另一種解決方案是將此添加到git config:'git config remote.origin.push local/prodcution:refs/heads/production'。無論如何,我同意明確指定要推送哪些分支。 –