想到我終於想到了git,我現在發現自己對於我看到的git行爲感到超級困惑 - 無論何時,只要將所做的更改和提交到我的本地計算機直至我的原始git存儲庫,這些更改立即上演在原始服務器上撤消。咦??!?爲什麼我的git origin想要刪除所有推送的更改?
我有一臺機器(機器A),上面有一個項目的git倉庫;該機器正在運行SSH服務器,並且我配置了一個帳戶,以便我可以遠程連接並克隆git倉庫。然後我用機器B的git克隆回購:
git clone ssh://[email protected]/path/to/repo
沒有問題。我所做的更改對機器B上的項目,並承諾這些變化對B的git倉庫。然後,我推的變化又回到了原點庫機器A:
git push master origin
,並且工作得很好;在機器的B,git remote show origin
輸出顯示產地是最新的:
$ git remote show origin
* remote origin
Fetch URL: ssh://[email protected]/path/to/repo
Push URL: ssh://[email protected]/path/to/repo
HEAD branch: master
Remote branch:
master tracked
Local ref configured for 'git push':
master pushes to master (up to date)
但是,當我去到機器A和做git status
,我看到,我只是把所有的變化正在上演的是百廢待興!
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: build-fatjar.xml
# deleted: src/monitor/config/client-lm-prod.xml
# modified: src/monitor/config/quartz-baseconfig.xml
# modified: src/monitor/service/task/BaseTask.java
# new file: src/monitor/service/task/CheckForCorrections.java
# deleted: src/monitor/service/task/CheckForDuplicates.java
# deleted: src/monitor/service/task/ProcessCorrections.java
# renamed: src/monitor/test/CheckForDuplicatesTest.java -> src/monitor/test/CheckForCorrectionsTest.java
# deleted: src/monitor/test/ProcessCorrectionsTest.java
# modified: src/monitor/test/TaskTestCase.java
獲得原點存儲庫(機A),以相同的狀態機器B中的一個是git reset HEAD
重置所有這些變化將要提交的,然後git rm
他們每個人的唯一方法;否則,機器A上的下一個git commit
將撤消我剛剛從機器B推送的所有內容。
我已經閱讀了所有參考資料,可以獲得我的幫助,但沒有提及此行爲;同樣,我也無法在網上找到它的參考。有任何想法嗎?
好吧,在幾個SO問題中經常提到它。見http://stackoverflow.com/questions/3523008/how-do-i-push-to-the-current-git-branch-on-remote-and-have-changes-reflected-immediately和http:// toroid .org/ams/git-website-howto – MvanGeest 2010-08-19 18:02:55