2013-04-19 85 views
1

我是新手GIT所以我對Git命令的一些基本問題,或合併等 我只是做了一些修改代碼,我做了git的承諾,然後我試着做下面的命令:如何合併我的git更改?

git push origin test:test 

(這是什麼語法是什麼意思?我知道我使用的分支稱爲test

有,因爲之前我做了我推一些其他的更改錯誤。 所以錯誤說我需要做的代碼更改和合並。

  1. 我該怎麼做才能知道我的區域和對方發生了什麼變化之間的區別?有git diff,但我應該使用語法嗎?

  2. 我想合併我的更改與他的更改。我怎麼做?

+5

如果你是剛剛開始,我建議閱讀臨Git的書:http://git-scm.com/book。 –

+0

這可以幫助你與各種概念:http://stackoverflow.com/questions/3329943/git-branch-fork-fetch-merge-rebase-and-clone-what-are-the-differences/9204499#9204499 –

回答

1

您需要git pull origin test:test才能獲取其他開發人員所做的更改並將其合併到您的工作目錄中。解決任何衝突並提交後,您將能夠推送。

git push origin test:test意味着你要複製你已經在分支test(左側test)本地資源庫(克隆)所做的更改回您從中分支test使你的克隆原來的庫(源)(中右手test)。

嚴格來說,如果本地和原點的分支名稱相同,那麼寫入git push origin test就足夠了。

+0

After做混帳拉我如何解決衝突? – user565660

+0

要解決衝突,您將需要執行'git mergetool',這將遍歷衝突的文件並允許您解決衝突。 https://www.kernel.org/pub/software/scm/git/docs/git-mergetool.html – Schleis

1

要看看你有什麼,別人都做的改變做:

git diff origin/test 

在你在的情況下,你不需要爲遠程已經更新,但是你會想要做git fetch以確保您的遠程狀態已更新。

所有您需要做的是git pull以獲取更新的更改。

我建議也這樣做git pull --rebase origin test:test--rebase選項將只在原點上的更改之後添加提交。這將有助於保持歷史更清潔,否則你會看到你的分支合併提交到它自己。但這取決於你。

+0

'git diff'命令只有在你第一次通過'git fetch'或''git fetch' git遠程更新「。 – jszakmeister

+0

是正確的,我忽略了,因爲OP已經試圖拉動,所以'fetch'已經發生。感謝您的補充。 – Schleis

1

git push origin test:test

這推動你更改本地分支叫test到遠程分支名爲testtest:test部分是git push的(可選)<refspec>選項。

<refspec>格式是<src>:<dst>。您使用它的方式是從本地分支test推送到遠程分支,也稱爲test。稱爲測試的分支必須在名爲origin的遠程設備上存在

對於問題1,您想要獲取更改(但不能將它們與工作文件合併),然後比較,執行;

git fetch origin test:test 
git diff ..origin 

注意,我只包括refspec選擇,因爲你已經在你推例子中使用它 - 它可能是不必要的 - 默認的git獲取應該尋找一個分支上的產地與你簽出的名字分支...但我離題...

對於問題2,你想合併分支的起源(在抓取後,與遠程原點是最新的)到你的工作副本;

git merge origin 

+1菲利克斯一扔的大約GIT中親書評論...