git同步原始碼到gitee和github

hdlan發表於2020-11-03

如何把我們的原始碼同步到gitee或github遠端倉庫中

同步方式分以下幾種:


 

1、命令同步   

  • 先檢視下我們是否有遠端倉庫:git remote -v
  • 如有就要刪除遠端倉庫或是同命令覆蓋,如全新安裝就不需要!
  • 刪除已關聯的名為origin的遠端庫: git remote rm origin  
  • 關聯GitHub的遠端庫: git remote add github git@github.com:xxx/xxx.git
  • 關聯Gitee的遠端庫: git remote add gitee git@gitee.com:xxx/xxx.git

2、配置修改

修改.git資料夾內的config檔案:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "git"]
    url = git@github.com:chloneda/demo.git
    fetch = +refs/heads/*:refs/remotes/github/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

將上述檔案內容[remote "origin"]內容複製,修改origin名稱  

3、同步流程

上傳熱媒

git add . (將變更提交至快取區)
git commit -m "提交說明(註釋)"    - update可以輸入你需要上傳的描述

 

提交命令

# 提交到github
git push github master  '- 將本地變更推送至遠端倉庫master分支'
#
提交到gitee
git push gitee master   '- 將本地變更推送至遠端倉庫master分支'

 檢視狀態

 

git status

 

更放心程式碼

# 從github拉取更新
git pull github
# 從gitee拉取更新
git pull gitee

 

專案推送時遇Git推送錯誤:

error: failed to push some refs to ‘git@gitee.com:name/project.git’

1、分析:

這個問題的產生是因為遠端倉庫與本地倉庫並不一致所造成。

2、解決方案:

那麼我們把遠端庫同步到本地庫就可以了。

執行命令:

git pull --rebase origin master

將遠端倉庫中的更新合併到本地倉庫,–rebase的作用是取消掉本地倉庫中剛剛的commit
然而未果,出現錯誤:

  • error: src refspec master does not match any

分析:引起該錯誤的原因是,目錄中沒有檔案,空目錄不能提交。

依次執行:

git pull origin master
git push origin master

 

踩到的坑

上述過程中,更新或提交程式碼時可能會遇到fatal:refusing to merge unrelated histories (拒絕合併無關的歷史) 錯誤,解決辦法:

首先將遠端倉庫和本地倉庫關聯起來。

git branch --set-upstream-to=origin/remote_branch  your_branch

其中,origin/remote_branch是你本地分支對應的遠端分支,your_branch是你當前的本地分支。

然後使用git pull整合遠端倉庫和本地倉庫。

git pull --allow-unrelated-histories    (忽略版本不同造成的影響)

重新更新、提交即可。

注: 如遇到 Git沒有共同祖先的兩個分支合併 的情形請自行查詢!

報錯處理

git pull 的時候報如下錯誤程式碼:
error: Pulling is not possible because you have unmerged files.
嘗試用git stash沒有作用。
Pull is not possible because you have unmerged files.

本地的push和merge會形成MERGE-HEAD(FETCH-HEAD), HEAD(PUSH-HEAD)這樣的引用。HEAD代表本地最近成功push後形成的引用。MERGE-HEAD表示成功pull後形成的引用。可以通過MERGE-HEAD或者HEAD來實現型別與svn revet的效果。

解決:

1.將本地的衝突檔案沖掉,不僅需要reset到MERGE-HEAD或者HEAD,還需要–hard。沒有後面的hard,不會沖掉本地工作區。只會沖掉stage區。

git reset –hard FETCH_HEAD

2.git pull就會成功。

 

如我們現在在dev分支上,剛開發完專案,執行了下列命令:

git  add .
git  commit -m '提交的備註資訊'
git  push -u origin dev

 

想將dev分支合併到master分支,操作如下:

  • 1、首先切換到master分支上
git  checkout master

 

  • 2、如果是多人開發的話 需要把遠端master上的程式碼pull下來
git pull origin master
//如果是自己一個開發就沒有必要了,為了保險期間還是pull

 

  • 3、然後我們把dev分支的程式碼合併到master上
git  merge dev

 

  • 4、然後檢視狀態及執行提交命令
git status

On branch master
Your branch is ahead of 'origin/master' by 12 commits.
  (use "git push" to publish your local commits)
nothing to commit, working tree clean
//上面的意思就是你有12個commit,需要push到遠端master上 
> 最後執行下面提交命令
git push origin master
  • 5其他命令
更新遠端分支列表
git remote update origin --prune

檢視所有分支
git branch -a

刪除遠端分支Chapater6
git push origin --delete Chapater6

刪除本地分支 Chapater6
git branch -d  Chapater6

 

相關文章