2013-07-10 3 views
2

Обычно, когда рабочий каталог чист, я могу использовать «статус git». Вывод выглядит следующим образом:Git: Как проверить, что локальная ветвь впереди удаленной ветви при изменении рабочего каталога?

# On branch master 
# Your branch is ahead of 'origin/master' by 1 commit. 
# 
nothing to commit (working directory clean) 

Однако, если рабочий каталог модифицируется, «статус» мерзавец выходы:

# On branch master 
# Changes not staged for commit: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
#  modified: body/chap1.tex 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

второй результат не показывает, если я толкнул все изменения в удаленных филиалах , Иногда мне по-прежнему нужен первый результат при изменении рабочего каталога. Как получить его в таком состоянии?

ответ

1

Это назначение промежуточного дерева. Вы можете организовать работу, которую вы хотите зафиксировать, а затем отправить в репозиторий, как следует:

git add path/to/your/file.php 

Это будет этап файла, так что он будет храниться в дереве ступенчатого (отдельно от самоотверженной работы или вашего неподтвержденными работа), тогда в будущих звонках git status будет показана работа, которую вы поставили отдельно от незавершенной работы. Это стандартная практика в git и позволяет вам отслеживать, что вы собираетесь совершать. Staging - это способ разрешить выборочные коммиты, но он должен служить вашим целям.

Вот ссылка, которая лучше объясняет плацдармом: http://git-scm.com/book/ch1-3.html

1

Возможно, самым простым было бы копить текущие изменения, проверьте, а затем вытолкнуть тайник. Таким образом,

git stash 
git status 
git stash pop 

Это не будет работать для всех изменений, таких как новые файлы (потому что git stash не копить их). Тем не менее, я должен сказать, что я не воспроизводя свой вопрос:

[email protected](14)$ git status 
# On branch master 
# Your branch is ahead of 'origin/master' by 1 commit. 
# 
nothing to commit (working directory clean) 
[email protected](15)$ ed .gitignore 
1165 
... 
q 
[email protected](16)$ git status 
# On branch master 
# Your branch is ahead of 'origin/master' by 1 commit. 
# 
# Changes not staged for commit: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# modified: .gitignore 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

В приведенном выше, по-прежнему появляется состояние относительно origin. Тем не менее, мое предложение работает:

[email protected](17)$ git stash 
Saved working directory and index state WIP on master: b541ae8 Ignore 'SPOT Lang*' files 
HEAD is now at b541ae8 Ignore 'SPOT Lang*' files 
[email protected](18)$ git status 
# On branch master 
# Your branch is ahead of 'origin/master' by 1 commit. 
# 
nothing to commit (working directory clean) 
[email protected](19)$ git stash pop 
# On branch master 
# Your branch is ahead of 'origin/master' by 1 commit. 
# 
# Changes not staged for commit: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# modified: .gitignore 
# 
no changes added to commit (use "git add" and/or "git commit -a") 
Dropped refs/[email protected]{0} (8ff02f7a27053ca7680b0a98048542fcbe2bb440) 
+0

Я использую msys-git в системе Windows. Это немного другое. – river6

 Смежные вопросы

  • Нет связанных вопросов^_^