until - git自動完成




顯示哪些文件在兩個修訂之間發生了變化 (10)

另外請記住,git有便宜和容易的分支。 如果我認為合併可能有問題,我為合併創建一個分支。 因此,如果master有我想要合併的變化,並且ba是需要來自主人的代碼的分支,我可能會執行以下操作:

git checkout ba
git checkout -b ba-merge
git merge master
.... review new code and fix conflicts....
git commit
git checkout ba
git merge ba-merge
git branch -d ba-merge
git merge master

最終的結果是,我必須在我的分支搞砸之前嘗試合併丟棄分支。 如果我自己糾結,我可以刪除ba-merge分支並重新開始。

我想合併已分離一段時間的兩個分支,並想知道哪些文件已被修改。

遇到這個鏈接: http://linux.yyz.us/git-howto.html : http://linux.yyz.us/git-howto.html這是非常有用的。

比較我遇到的分支的工具是:

  • git diff master..branch
  • git log master..branch
  • git shortlog master..branch

想知道是否有像“git status master..branch”這樣的東西只能看到兩個分支之間不同的文件。

如果不創建新工具,我認為這是您現在可以做到的最接近的工具(當然,如果文件被修改了多次,這將顯示重複):

  • git diff master..branch | grep "^diff"

想知道是否有我錯過的東西...


只是更多的信息給JasonSmith的答案 :

我用這個命令檢查了我的分支:

$ git clone -b branchName http://repository_url

但是,建議git diff命令失敗:

$ git diff --name-status master..branchName
fatal: ambiguous argument 'master..branchName': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

我調查了這個線程後的分支:

$ git branch
* branchName
$ git branch -a
* branchName
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/branchName

我本地沒有分支master ,所以我對remotes/origin/master進行了比較:

$ git diff --name-status remotes/origin/master..push
. . .
. . .
. . .

有關remotes/origin/master 主線的更多信息。


在協同工作或同時使用多個功能時,上游甚至主人包含的工作不包含在分支中,並且會錯誤地顯示在基本差異中。

如果你的上游可能已經移動,你應該這樣做:

git fetch
git diff origin/master...

使用git diff master可以包含或不包含相關更改。


如果您只是在某些文件中查找更改,那麼:

git diff branch1 branch2 -- myfile1.js myfile2.js

如果沒有提供branch1,branch1是可選的,並且您當前的分支(您所在的分支)將被默認考慮。 例如:

git diff master -- controller/index.js

如果有人試圖從兩個分支生成diff文件:

git diff master..otherbranch > myDiffFile.diff

您還可以使用例如TortoiseGit輕鬆比較分支以更改已更改的文件。 只需點擊Browse References並選擇你想要比較的分支。

例如,如果您將您的分支主數據進行比較,您將得到一個結果列表,如果您決定將 分支合併到您的分支中,那麼這些文件將在主數據庫中進行更改。

注意,如果您將masteryour-branch以及your-branchmaster進行比較,您將得到不同的結果。


比較當前分支與master分支

$ git diff --name-status master

比較任何一對分支

$ git diff --name-status firstbranch..yourBranchName

如果我能正確理解你,那就應該做你需要的。


請注意,如果您不喜歡結果,git可以輕鬆地嘗試合併並退出任何問題。 這可能比預先尋找潛在問題更容易。


還有一個基於GUI的方法。

你可以使用gitk

  1. 跑:

    $ gitk --all
    
  2. 右鍵單擊分支的提交 ,然後在彈出菜單中選擇標記此提交

  3. 右鍵單擊另一個分支的提交並選擇Diff this - >標記提交Diff標記提交 - > this

然後在右下方的面板中會出現一個已更改的文件列表,並在左下方的面板中顯示差異詳情。


還有一個選擇,在這種情況下使用融合:

git difftool -d master otherbranch

這樣不僅可以查看文件之間的差異,還可以輕鬆指向並點擊特定文件。





git-diff