簡體   English   中英

git的新手-如何將克隆的回購更改為原始回購?

[英]New to git — how do I get changes from cloned repo into original repo?

這可能是一個很新的問題,但是我似乎無法弄清楚。

這是我做的...

在服務器上(通過ssh):

  • 在專用服務器上創建站點
  • 在那里創建了一個git repo(我認為是git init嗎?)
  • 添加並提交了所有內容

在我的辦公室:

  • 在我的開發機器上克隆了倉庫
  • 拉了一切
  • 對本地文件進行了一些更改
  • 再次添加文件(對嗎?不像svn!)
  • 做了一次提交
  • 做了推

...現在,在服務器上,如果我執行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
  1. 將克隆服務器存儲庫復制到您的開發機器上
  2. 將錯誤修復提交到本地存儲庫...而不是服務器的存儲庫
  3. 再次將新功能提交給本地存儲庫,而不是服務器的
  4. 將所有更改從您的master分支推送到服務器的master分支

此時,您所做的任何更改都不會顯示在您的網站上。 您將需要“部署”它們。

5.將最新更改從服務器上的中央存儲庫拉到Web上正在提供的Web服務器的文件夾。

那里的git教程和免費的在線書“ Pro Git ”都非常好

如果您推送到服務器上的git repo是針對實時系統的,那么我想在推送之后您可能必須在服務器上執行[ EDIT ] git reset [--hard|...] HEAD (請參閱git-重置手冊頁以獲取有關使用--hard還是其他方法的詳細信息; --hard 重置服務器上所有未提交的修改)。

如果實時系統在服務器上的其他位置,請從推送到的存儲庫中進行git pull (在實時系統的目錄中)。

是互補的,即從A推到B就像從B取A。
是先結帳

編輯:
您還應該閱讀jmohr鏈接的有關pushfetch / pull之間的細微差別的文章: git push不會將更改發送到遠程git存儲庫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM