2016-12-01 46 views
1

首先,我必須提到...我是一個Git的完全新手,以及如何使用它。在我這裏缺乏理解的情況下,這是光明如何從服務器重新同步到主git倉庫?

所以,最近我們有一個第三方開發者在我們很快成爲現場的網站上進行了大量的定製,基本上從我們這裏消失了。他們一直在使用Git。但是,在他們離線前,他們將Git Repo轉移給我。在那之前,我從未使用過Git。由於時間限制,我自己完成了我們網站上所需的大部分最終更改,直接在服務器上完成實際備份。有一次,我試圖將服務器同步回主服務器,但我被拒絕了,因爲我可能會超出某些文件。我嘗試閱讀一些主題,但不幸的是,我最終在Git上運行了一次硬重置。我嘗試了恢復,但似乎沒有重置我的git情況。

現在,我想要在SERVER上完成所有已完成的更改,並啓動新的Git主Repo。我很好,可以清除以前存在的任何分支,但我不知道如何將服務器連接到新的Git倉庫(我剛剛在bitbucket中創建),並將所有需要的內容推送到新的倉庫。我害怕讓這些序列錯誤,因爲我不想「重新開始」(雖然我有一個完整的服務器magento 2備份,需要一個小時左右)。

如果這有什麼區別,回購的託管在Bitbucket上。

我確實有一個Sourcetree的本地安裝,但我不知道如何真正地使用它。

至於舊的回購,我不會刪除它,並且我在我的SourceTree中有一個主/從回購的副本(我可能會壓縮並在完成此操作後完全移除)。

有一次,我有主人更新,我想要部署到另一個備份/開發服務器,這再次以前同步到舊的git。

任何和所有的幫助表示讚賞。

+0

你的問題很混亂。我看到您的問題中有三個主要角色:承包商所做的工作,您當前的本地分支以及存儲庫上的內容。通過告訴我們哪些信息是在哪裏以及你想要發生什麼來更新你的問題。 –

+0

[如何在Git中撤消上次提交(s)?](http://stackoverflow.com/questions/927358/how-to-undo-last-commits-in-git) – OldBunny2800

回答

0

這是我唯一能想到使用「git reset --soft」的地方!

在服務器上,我會做什麼。有一些假設在這裏:

  1. 你還不如推承辦的回購使用「CD /路徑/到/回購協議到位桶;混帳推--mirror [到位桶-URL],和基地其餘
  2. 假設您擁有所有內容的備份
  3. 這些步驟還假定生產服務器上的目錄佈局與repo中的佈局相同,除了您必須移動或添加或重命名的任何目錄之外。
  4. 最後,這些假設'master'是你想要同步回來的bitbucket分支的名字。

(哦,並選擇任何純文本編輯器,你喜歡「編輯.gitignore」步驟)。

如果假設成立,這裏是我會用同步生產服務器回你的主分支指令的順序:

cd /path/to/code/on/server 
touch .gitignore 
edit .gitignore   # set dir and file patterns you want to omit 
git init    # init is safe even if git repo already present 
git remote add origin [bitbucket-url] 
git fetch 

# The "soft" reset! Makes git think your work on the server 
# directly followed from latest commit on 'master': 
git reset --soft origin/master 

git add .    # adds all files from all sub-directories 
git status    # do things look reasonable? 
git diff origin/master # should see all of your work in "patch" format 

# If everything looks good, do the commit! 
git commit -m 'sync prod back to bitbucket' 

# And send your commit to bitbucket! 
git push origin HEAD:refs/heads/master 

一個警告:小心你添加到的.gitignore什麼文件。與該文件中的模式相匹配的任何文件或目錄都將被git完全忽略,而不會同步回您的bitbucket回購。

相關問題