Як я бачу diff
між місцевою філією та віддаленою гілкою?
git diff HEAD origin/HEAD
що, схоже, вказує на іншу віддалену гілку, ніж ту, яку я мав намір. Використання повної назви філії працює як очікувалося.
Як я бачу diff
між місцевою філією та віддаленою гілкою?
git diff HEAD origin/HEAD
що, схоже, вказує на іншу віддалену гілку, ніж ту, яку я мав намір. Використання повної назви філії працює як очікувалося.
Відповіді:
Щоб оновити гілки віддаленого відстеження, потрібно спочатку ввести, git fetch
а потім:
git diff <masterbranch_path> <remotebranch_path>
Ви можете git branch -a
перелічити всі гілки (локальні та віддалені), а потім вибрати ім'я гілки зі списку (просто видаліть remotes/
із назви віддаленої гілки.
Приклад: git diff master origin/master
(де "master" - це локальна головна гілка, а "origin / master" - це віддалений, а саме походження та головна гілка.)
git fetch
)
[diff] tool = vscode [difftool] prompt = false [difftool "vscode"] cmd = \"C:\\Program Files (x86)\\Microsoft VS Code\\Code.exe\" \"$LOCAL\" \"$REMOTE\" --diff --wait trustExitCode = false
Переконайтесь, що ваш шлях до файлу code.exe правильний.
git diff <local branch> <remote>/<remote branch>
Наприклад git diff master origin/master
, абоgit diff featureA origin/next
Звичайно , щоб бути сказали дистанційне відстеження гілки вам необхідно в git fetch
першу чергу; і вам вона потрібна, щоб мати актуальну інформацію про гілки у віддаленому сховищі.
git diff <remote>/<remote branch> <local branch>
бачу, що мій поштовх зробить віддаленому репо.
git diff origin
є достатнім, якщо ви просто порівнюєте його з верхнім відділенням.
git fetch
на початку, це спричинить неприємності для новачків, як я
git diff <remote>/<remote branch> <local branch>
? В іншому випадку я перемикаю додавання та видалення на своєму комп’ютері (версія git 2.7.0.Windows.2)
Перший тип
git branch -a
щоб отримати список доступних філій. На виході ви можете побачити щось подібне
* master
remotes/main/master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/mt
remotes/upstream/master
remotes/upstream/mt
Потім покажіть різницю
git diff --stat --color remotes/main/master..origin/master
git diff remotes/main/master..origin/master
...
а не ..
?
git log origin/my_branch..
що це буде HEAD
місцевим відкликом, що здебільшого ви маєте на увазі.
fatal: bad revision
або fatal: ambiguous argument
. Все, що я хотів, - це побачити відмінності в тому ж файлі з іншої гілки, це було занадто багато запитати? Так, так було. :-) git diff remotes/origin/<base branch> <current branch> -- <filename>
чудово працює на git 1.8.3.1
Якщо ви перебуваєте на даній гілці, і ви хочете порівняти її з гілкою вище за потоком, яку ви відстежуєте, використовуйте
git diff @{upstream}
якщо ваш потік не встановлений (як правило, дякую Аріджону в коментарях)
git diff @{push}
За допомогою цієї відповіді , документація git для уточнення змін є:
<branchname>@{upstream}
, наприкладmaster@{upstream}
,@{u}
суфікс@{upstream}
до назви гілки (коротка форма<branchname>@{u}
) відноситься до гілки, для якої вказана гілка встановлюєтьсяbranchname
зверху (налаштована зbranch.<name>.remote
таbranch.<name>.merge
). Пропущеніbranchname
за замовчуванням поточні.
git diff @ @{upstream}
. Додатковим @
є те HEAD
, де ви зараз перебуваєте, тому ви порівнюєте HEAD
з вище за течією, яку відслідковує ваша філія. Ви можете використовувати @{push}
замість вище за течією, щоб отримати різницю між гілкою, на яку ви налаштовані,
fatal: ambiguous argument '@upstream': unknown revision or path not in the working tree
. Довелося використовувати git diff @\{upstream\}
замість цього. 😥
git fetch
спочатку, інакше це нічого не робить, не показує результатів; перевірено, видаливши файл у джерелі репо і запустивши цю команду локально. .. працює лише після отримання.
Я набагато краще розумію результат:
git diff <remote-tracking branch> <local branch>
це показує мені, що буде видалено і що буде додано, якщо я натисну локальну гілку. Звичайно, це те саме, просто зворотне, але для мене легше читати і мені зручніше дивитись на те, що буде.
Простий спосіб:
git fetch
git log -p HEAD..FETCH_HEAD
Це спочатку отримає зміни з вашого віддаленого за замовчуванням (походження). Це буде створено автоматично, коли ви клонуєте РЕПО. Ви також можете бути явним: git fetch origin master
.
Потім використовується журнал git для порівняння вашої поточної гілки з щойно отриманою. (Параметр -p
(генерувати патч) - це те, що показує відмінності .)
Ось як я це роблю.
#To update your local.
git fetch --all
це вибере все з віддаленого, тож коли ви перевірите різницю, він порівнятиме різницю з віддаленою гілкою.
#to list all branches
git branch -a
вищевказана команда відобразить усі гілки.
#to go to the branch you want to check difference
git checkout <branch_name>
#to check on which branch you are in, use
git branch
(or)
git status
Тепер ви можете перевірити різницю наступним чином.
git diff origin/<branch_name>
це порівняє вашу локальну гілку з віддаленою гілкою
Нехай ваша працююча галузь є розвитком і хоче розмежовувати місцеву галузь розвитку та гілку віддаленого розвитку. У цьому випадку синтаксис повинен бути схожим git diff remotes/origin/development..development
або
git fetch origin
git diff origin/development
tl; dr :git diff <local branch> <remote branch>
Використовуючи git на шкаралупі, я люблю спочатку зорієнтуватися, оглядаючи. Ось команда показати всі гілки
$ git branch -a # (or git branch --all)
* my-branch
master
remotes/origin/some-branch
remotes/origin/HEAD -> origin/master
remotes/origin/my-branch
remotes/origin/some-other-branch
remotes/origin/master
Тут у мене дві локальні гілки ( my-branch
і master
) і 4 (віддалені some-branch
, some-other-branch
, master
, і my-branch
).
Також зірочка поруч my-branch
сигналізує про те, що я зараз перебуваю у цій гілці (ви також це знатимете, використовуючи команду, git status
яка виводить:) On branch my-branch.
.
Примітка: віддалені гілки в оболонці git bash відображаються червоним кольором, а місцеві - зеленим.
Якщо ви просто хочете показати віддалені гілки :
$ git branch -r # (or git branch --remotes)
origin/some-branch
origin/HEAD -> origin/master
origin/my-branch
origin/some-other-branch
origin/master
Щоб показати лише локальні гілки, ви можете спокуситись використовувати, git branch -l
але це зовсім інша команда. Щоб показати місцеві гілки, використовуйте git branch
без опцій
$ git branch
* my-branch
master
Для завершення огляду основних параметрів гілки існує те, --list
що суперечить тому, що ви можете очікувати, є можливість дозволити фільтрацію . Використовуйте його з таким малюнком:
$ git branch --list 'my*'
* my-branch
Ви можете також комбінувати --list
з параметрами -a
і , -r
але переконайтеся , що адаптувати шаблон відповідним чином ( пам'ятаєте: віддалені гілки починаються з «пультами» ). Приклад:
# this will show all branches (local & remote) that start with my
$ git branch --list 'my*' -a
* my-branch
# better: the pattern includes the remote
$ git branch --list '*my*' -a
* my-branch
remotes/origin/my-branch
Документи: https://git-scm.com/docs/git-branch
Тепер ви можете порівняти будь-які дві гілки з усіх доступних (ви також можете порівняти два місцевих або два віддалені).
Тут я порівнюю локальний з віддаленим my-branch
, вони синхронізовані, тому я не отримую жодного результату:
$ git diff my-branch remotes/origin/my-branch
Примітка: ви повинні вказати повні назви гілок без лапок.
Я також можу порівняти місцевий my-branch
з віддаленим master
. Тут я отримую деякий вихід, оскільки пульт my-branch
не був об'єднаний у головну гілку.
$ git diff my-branch remotes/origin/master
diff --git a/src/controllers/call.controller.js b/src/controllers/call.controller.js
index fd79b98..df3d798 100644
--- a/src/controllers/call.controller.js
+++ b/src/controllers/call.controller.js
@@ -261,7 +261,7 @@ function callController() {
/*
* Function: doCall
[ . . . ]
Якщо ви хочете , щоб побачити різницю , як тільки імена файлів змінилися потім використовувати:
git diff --name-status <remote-branch> <local-branch>
,
інакше це було б показати все відмінності між двома гілками:
git diff <remote-branch> <local-branch>
Ось скорочена відповідь, якщо ви порівнюєте свою поточну галузь і те, що ви хочете git pull
.
git fetch
git diff FETCH_HEAD
Перша команда визначить, яка віддалена гілка відповідає вашій поточній гілці. Артефакт цього розрахунку у FETCH_HEAD
довідці. Тоді друга команда використовує це посилання порівняння та порівняння з вашою поточною гілкою.
Я знаю, що на це питання вже є кілька відповідей, але я намагався отримати більш дивну помилку при спробі більшості з них.
У моєму випадку у мене є другий пульт називається heroku
це НЕorigin
і тому, що не в синхронізації я отримав цю помилку при спробі запуску git diff master heroku/master
:
fatal: ambiguous argument 'heroku/master': unknown revision or path not in the working tree.
або це при спробі іншого підходу git diff master..heroku/master
:
fatal: bad revision 'master..heroku/master'
У рішенні явно згадувалося про віддалене ім'я git fetch
перед запуском git diff
, в моєму випадку:
$ git fetch heroku
$ git diff master heroku/master
Сподіваюся, що допоможе іншим у цьому ж питанні.
git difftool <commit> .
Це дозволить порівняти потрібну фіксацію з вашими локальними файлами. Не забудьте крапку в кінці (для місцевих).
Наприклад, для порівняння локальних файлів з деякими фіксаціями:
git difftool 1db1ef2490733c1877ad0fb5e8536d2935566341.
(і вам не потрібен git fetch, якщо не потрібно порівнювати нові коміти)
Приклад
git diff 'master' 'testlocalBranch'
Якщо ви використовуєте такий редактор, як веб-шторм, ви можете натиснути правою кнопкою миші на вибір файла порівняти з гілкою та ввести / вибрати свою гілку.
У VS 2019 просто робіть FETCH Не тягніть код.
Це я і зробив. Додано нижче у файл .gitconfig, щоб я міг використовувати функцію "Більше порівняння"
File location: C:\Users\[username]\.gitconfig
Додано нижче
[diff]
tool = bc
[difftool "bc"]
path = c:/Program Files/Beyond Compare 4/bcomp.exe
Відкрийте командний рядок та перейдіть до робочого каталогу. Я дав нижче для порівняння місцевої гілки DEV з віддаленою гілкою DEV
git difftool dev origin/dev --dir-diff
Це відкриє «Більше порівняння» та відкриє каталоги, у яких файли відрізняються. Якщо ніяких змін за межами Порівняння не буде запущено.
Цікаво, чи є в моїй головній галузі будь-які зміни ...
git checkout master
git статус
git гілка -а
- master
Remotes / походження / майстер
git diff походження / майстер
git config alias.udiff 'diff @{u}'
git fetch # Do this if you want to compare with the network state of upstream; if the current local state is enough, you can skip this
git udiff
Це відповідає на питання у вашій рубриці ("її віддалений"); якщо ви хочете відрізнятись від "віддаленого" (який не налаштований як висхідний потік для гілки), вам потрібно націлити його безпосередньо. Ви можете бачити всі віддалені відділення з наступним:
git branch -r
Ви можете переглянути всі налаштовані віддалені пристрої із наступним:
git remote show
Ви можете бачити конфігурацію гілки / відстеження для одного віддаленого (наприклад, походження) наступним чином:
git remote show origin
Як тільки ви визначите відповідну галузь походження, просто зробіть нормальну диференцію :)
git diff [MY_LOCAL] MY_REMOTE_BRANCH
Це досить просто. Ви можете використовувати:git diff remote/my_topic_branch my_topic_branch
Де my_topic_branch
ваша галузь теми.
спробуйте:
git diff origin HEAD
Припускаючи, що ви хочете відрізняти поточну локальну філію HEAD
від походження. І якщо припустити, що ви на місцевому відділенні. :)
Якщо ви використовуєте TortoiseGit (він надає графічний інтерфейс для Git), ви можете клацнути правою кнопкою миші папку Git repo, а потім клацніть Git Sync
.
Ви можете вибрати свої гілки для порівняння, якщо вони не вибрані. Чим ви можете бачити різниці, які здійснюють. Ви також можете клацнути правою кнопкою миші будь-яку комісію, а потім Compare with previous revision
переглянути відмінності поруч.