Почему go автоматически не изменяется в область подготовки? - PullRequest
1 голос
/ 11 января 2020

Я использую какой-то контроль версий - Git, я использую GitLab.

Как я знаю, и у меня так получилось: когда я создаю новый файл - по умолчанию он находится в рабочий каталог. Чтобы переместить его в область подготовки, я должен набрать: git add <file name>.
Затем, чтобы переместить эти изменения в локальный репозиторий - я должен зафиксировать изменения: git commit -m <message>.

Но, когда я работаю с существующим файлом, он автоматически попадает в промежуточную область, и после того, как я изменяю файл; чтобы перенести изменения в локальный репозиторий - у меня есть только , чтобы зафиксировать изменения git commit -m <message>.

Я работал в соответствии с этой теорией, и у меня все работало нормально!

В какой-то момент я выключил свой ноутбук, включая Git;
Через некоторое время я открыл Git bash; С тех пор это не работает для меня так.

Когда я изменяю выходящий файл, а потом пытаюсь зафиксировать изменения с помощью git commit <message>; Я получаю этот вывод:
On branch master Your branch is up to date with 'origin/master'. Changes not staged for commit: modified: file_0.txt no changes added to commit
Это означает, что я еще не организовал изменения. но мне не нужно готовить выходной файл!

У кого-нибудь есть идея?
Заранее спасибо за любую помощь!

1 Ответ

1 голос
/ 12 января 2020

Но, когда я работаю с существующим файлом, он автоматически попадает в промежуточную область и после того, как я изменяю файл; чтобы переместить изменения в локальный репозиторий - мне нужно только зафиксировать изменения с помощью git commit -m.

Git не работает таким образом. Вы должны добавить изменения в область подготовки даже для существующих (отслеживаемых) файлов. Либо вы использовали git commit -a -m, либо у вас был инструмент автоматического добавления изменений.


git add делает две вещи. Он помечает файл как отслеженный и копирует отслеживаемые файлы в область подготовки.

Новые файлы не отслеживаются. Неотслеживаемые файлы не считаются частью Git хранилища. Они не будут добавлены в область подготовки с помощью таких команд, как git commit -a.

-a, --all

Скажите команде автоматически создавать файлы, которые были изменены, и удалены, но новые файлы, о которых вы не сказали Git, не затрагиваются .

$ git init foo
Initialized empty Git repository in /Users/schwern/tmp/foo/.git/

$ cd foo/
$ touch this
$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    this

nothing added to commit but untracked files present (use "git add" to track)

$ git commit -a
On branch master

Initial commit

Untracked files:
    this

nothing added to commit but untracked files present

После того, как вы git add из них, они отслеживаются и их изменения добавляются. Теперь, когда файл отслеживается, изменения будут перемещены в промежуточную область с помощью таких команд, как git commit -a.

$ git add this
$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
    new file:   this

$ git commit -a -m 'commit this'
[master (root-commit) 519fada] commit this
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 this

$ echo 'something new' > this

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
    modified:   this

no changes added to commit (use "git add" and/or "git commit -a")

$ git commit -a -m 'commit more of this'
[master 996ddb2] commit more of this
 1 file changed, 1 insertion(+)

Вы можете установить файл как отслеженный, но не добавлять изменения с помощью git add --intent-to-add.

Вы можете копировать только отслеженные файлы в указанную область с помощью git add -u.

$ touch that

$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
    that

nothing added to commit but untracked files present (use "git add" to track)

$ echo 'another line' >> this

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
    modified:   this

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    that

no changes added to commit (use "git add" and/or "git commit -a")

$ git add -u

$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
    modified:   this

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    that
...