[英]how to update locally cloned git repo with changes from the original project (no fork!)
[英]New to git — how do I get changes from cloned repo into original repo?
這可能是一個很新的問題,但是我似乎無法弄清楚。
這是我做的...
在服務器上(通過ssh):
git init
嗎?) 在我的辦公室:
...現在,在服務器上,如果我執行git show
,它會顯示一個差異,其中刪除了服務器上的內容副本,並添加了我從辦公室推送的內容。 那就是我想發生的事情。 我不知道的是: 我需要在服務器上做什么才能使從辦公室推送的更改變為“實時”?
我過去在使用svn部署網站方面取得了相當不錯的成功,而且我認為我也可以通過git來擺脫它……但是顯然我錯過了一些難題。 謝謝你的幫助。
編輯 -我剛剛注意到了這篇文章: Git-將更改從克隆復制回主服務器
我應該將我的辦公室存儲庫拉到服務器上而不是在服務器上使用它嗎? 那么從辦公室ssh到服務器,然后將git + ssh送回辦公室以拉回該倉庫嗎? 這似乎有點瘋狂,我寧願弄清楚如何盡可能地進行推動。
改寫問題
我真的只想應用git show
所示的補丁。 git有內置的方法嗎?
回答
看起來服務器上的git checkout -f
達到了我想要的目的,但是創建--bare倉庫可能是更好的方法(我現在更改為此設置)。
通常在服務器上,您需要執行git init --bare
來創建沒有工作目錄的存儲庫。 如果那是您采取的途徑,那么您將必須將更改從那里拉到Web目錄,作為“部署”步驟。 因此您的工作流程可能看起來像...
On dev PC:
1. git clone <path to server repo>
*make code changes*
2. git commit -am "fixed a bug"
*add some new feature*
3. git commit -am "added cool new feature"
4. git push origin master
On the server:
*cd to www folder*
5. git pull
此時,您所做的任何更改都不會顯示在您的網站上。 您將需要“部署”它們。
5.將最新更改從服務器上的中央存儲庫拉到Web上正在提供的Web服務器的文件夾。
如果您推送到服務器上的git repo是針對實時系統的,那么我想在推送之后您可能必須在服務器上執行[ EDIT ] git reset [--hard|...] HEAD
(請參閱git-重置手冊頁以獲取有關使用--hard
還是其他方法的詳細信息; --hard
重置服務器上所有未提交的修改)。
如果實時系統在服務器上的其他位置,請從推送到的存儲庫中進行git pull
(在實時系統的目錄中)。
推和取是互補的,即從A推到B就像從B取A。
拉是先取后結帳 。
編輯:
您還應該閱讀jmohr鏈接的有關push和fetch / pull之間的細微差別的文章: git push不會將更改發送到遠程git存儲庫
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.