git push用法和常見問題分析


在使用git 處理對android的修改的過程之中總結的.但不完善

 

Git push

$ git push origin test:master         // 提交本地test分支作為遠程的master分支

$ git push origin test:test              // 提交本地test分支作為遠程的test分支

如果想刪除遠程的分支呢?類似於上面,如果:左邊的分支為空,那么將刪除:右邊的遠程的分支。

 

$ git push origin :test              // 剛提交到遠程的test將被刪除,但是本地還會保存的,不用擔心。

舉個例子:

       git push origin  :origin/Android_HK_K501_77-W916 //由於:前面為空所以本來在服務器上面存在的分支origin/Android_HK_K501_77-W916和Android_HK_K501_77-W916現在就只有一個了,因為分支origin/Android_HK_K501_77-W916被刪除了,但是本地的還在

 

$ git push ssh://git@dev.lemote.com/rt4ls.git master // 把本地倉庫提交到遠程倉庫的master分支中

$ git remote add origin ssh://git@dev.lemote.com/rt4ls.git
$ git push origin master 


這兩個操作是等價的,第二個操作的第一行的意思是添加一個標記,讓origin指向ssh://git@dev.lemote.com/rt4ls.git,也就是說你操 作origin的時候,實際上就是在操作ssh://git@dev.lemote.com/rt4ls.git。origin在這里完全可以理解為后者 的別名。

    注意:需要說明的是,默認情況下這條語句等價於提交本地的master倉庫到遠程倉庫,並作為遠程的master分支。
    如果想把本地的某個分支test提交到遠程倉庫,並作為遠程倉庫的master分支,或者作為另外一個名叫test的分支,那么可以這么做。

 

常見錯誤:

1.error:failed to push some refs to ...

當要push代碼到git時,出現提示:

error:failed to push some refs to ...

Dealing with “non-fast-forward” errors

From time to time you may encounter this error while pushing:

$ git push origin master 

To ../remote/ 

 ! [rejected]        master -> master (non-fast forward) 

error: failed to push some refs to '../remote/' 

To prevent you from losing history, non-fast-forward updates were rejected

Merge the remote changes before pushing again.  See the 'non-fast forward'

section of 'git push --help' for details.

 

問題(Non-fast-forward)的出現原因在於:git倉庫中已經有一部分代碼,所以它不允許你直接把你的代碼覆蓋上去。於是你有2個選擇方式:

 

強推,即利用強覆蓋方式用你本地的代碼替代git倉庫內的內容

git push -f

 

2. 先把git的東西fetch到你本地然后merge后再push

$ git fetch

$ git merge

這2句命令等價於

$ git pull 

可是,這時候又出現了如下的問題:

上面出現的 [branch "master"]是需要明確(.git/config)如下的內容

[branch "master"]

    remote = origin

    merge = refs/heads/master

這等於告訴git2件事:

1,當你處於master branch, 默認的remote就是origin。

2,當你在master branch上使用git pull時,沒有指定remote和branch,那么git就會采用默認的remote(也就是origin)來merge在master branch上所有的改變

如果不想或者不會編輯config文件的話,可以在bush上輸入如下命令行:

$ git config branch.master.remote origin 

$ git config branch.master.merge refs/heads/master 

之后再重新git pull下。最后git push你的代碼吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM