亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

git checkout --track origin / branch和git checkout

git checkout --track origin / branch和git checkout

Git
阿晨1998 2019-08-24 15:26:48
git checkout --track origin / branch和git checkout -b branch origin / branch之間的區別有人知道切換和跟蹤遠程分支這兩個命令之間的區別嗎?git checkout -b branch origin/branchgit checkout --track origin/branch我認為兩者都跟蹤遠程分支,所以我可以將我的更改推送到原點上的分支,對吧?有什么實際差異嗎?謝謝!
查看完整描述

3 回答

?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

這兩個命令具有相同的效果(感謝Robert Siemer的答案,指出它)。

使用不同名稱的本地分支時會出現實際差異

  • git checkout -b mybranch origin/abranch將創建mybranch和跟蹤origin/abranch

  • git checkout --track origin/abranch將只創建' abranch',而不是具有不同名稱的分支。

(也就是說,正如塞巴斯蒂安·格拉夫所評論的那樣,如果當地的分支機構已經存在了。
如果確實如此,你需要git checkout -B abranch origin/abranch


注意:使用Git 2.23(Q9 2019),將使用新命令git switch

git switch -c <branch> --track <remote>/<branch>

如果分支存在于多個遙控器中,并且其中一個由checkout.defaultRemote配置變量命名,我們將使用該分支用于消除歧義,即使它<branch>在所有遙控器中都不是唯一的。
將其設置為例如checkout.defaultRemote=origin,如果<branch>不明確但始終存在于“origin”遙控器上,則始終從那里檢出遠程分支。

在這里,' -c'是新的' -b'。


首先,一些背景:跟蹤意味著本地分支的上游設置為遠程分支:

# git config branch.<branch-name>.remote origin# git config branch.<branch-name>.merge refs/heads/branch

git checkout -b branch origin/branch 將:

  • 創建/重置branch到引用的點origin/branch

  • 創建分支branch(帶git branch)并跟蹤遠程跟蹤分支origin/branch。

當本地分支開始了一個遠程跟蹤分支,GIT中設置分支(特別是branch.<name>.remotebranch.<name>.merge配置條目),從而git pull將適當地從遠程跟蹤分支合并。
可以通過全局branch.autosetupmerge配置標志更改此行為??梢允褂?code>--track和--no-track選項覆蓋該設置,稍后使用git branch更改--set-upstream-to。


git checkout --track origin/branch會做一樣的git branch --set-upstream-to):

 # or, since 1.7.0
 git branch --set-upstream upstream/branch branch
 # or, since 1.8.0 (October 2012)
 git branch --set-upstream-to upstream/branch branch
 # the short version remains the same:
 git branch -u upstream/branch branch

它還會為' branch' 設置上游。

(注意:git1.8.0將棄用git branch --set-upstream并替換為git branch -u|--set-upstream-to:請參閱git1.8.0-rc1 announce


為本地分支注冊上游分支將:

  • 通知Git 顯示在兩個分支之間的關系git statusgit branch -v。

  • 在檢出新分支時,git pull 不帶參數的指示從上游拉出。


查看完整回答
反對 回復 2019-08-24
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

您無法使用此命令創建新分支


git checkout --track origin/branch

如果您有未上演的更改。


這是一個例子:


$ git status

On branch master

Your branch is up to date with 'origin/master'.


Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git checkout -- <file>..." to discard changes in working directory)


        modified:   src/App.js


no changes added to commit (use "git add" and/or "git commit -a")


// TRY TO CREATE:


$ git checkout --track origin/new-branch

fatal: 'origin/new-branch' is not a commit and a branch 'new-branch' cannot be created from it

但是,您可以使用git checkout -b命令輕松創建具有未分階段更改的新分支:


$ git checkout -b new-branch

Switched to a new branch 'new-branch'

M       src/App.js


查看完整回答
反對 回復 2019-08-24
?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

完全沒有區別!

1) git checkout -b branch origin/branch

如果--track沒有--no-track--track則假定為默認值??梢允褂迷O置更改默認值branch.autosetupmerge。

實際上,1)表現得像git checkout -b branch --track origin/branch。

2) git checkout --track origin/branch

“作為一種便利”,--track沒有-b暗示-b和爭論-b被認為是“分支”。猜測由配置變量驅動remote.origin.fetch。

實際上,2)表現得像git checkout -b branch --track origin/branch。

如你所見:沒有區別。

但它變得更好:

3) git checkout branch

git checkout -b branch --track origin/branch如果“branch”還不存在但“origin / branch”的確是1,那也相當于。


所有三個命令都將“branch”的“upstream”設置為“origin / branch”(或者它們失?。?。

上游被用作參數,以下的參考點git status,git push,git merge并因此git pull(如果配置這樣的(這是默認值或幾乎默認))。

例如git status,如果配置了上游,請告訴您上游的前后距離。

git push配置為從git 2.0開始默認將當前分支推送到上游2。

1 ...如果“origin”是唯一具有“branch” 2遙控器,則默認(名為“simple”)強制使兩個分支名稱相等


查看完整回答
反對 回復 2019-08-24
  • 3 回答
  • 0 關注
  • 11031 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號