如何不忘记添加文件
How not to forget to add files
我经常出现的情况是:
- 我创建一个新文件
- 我修改了现有文件
万事俱备,我为自己感到骄傲
- 我承诺
- 我推送到服务器
我的队友拉:他们无法编译,因为缺少一个文件。
他们都想杀了我。
问题是,如何确保我已经添加了所有需要的文件?
作为最佳实践,您应该在提交之前始终检查 git status
。
您可以修改任何 git 挂钩(预提交,post-提交)以将未跟踪文件的屏幕列表打印出来,这样您就可以看到它并且不会错过它。
使用此命令打印出未跟踪的文件:
git ls-files --others --exclude-standard
另一个解决方案:
你也可以写一个别名来为你做这件事,这样你下次就不会忘记了。
很高兴拥有:
设置您的颜色设置以显示您的颜色更改,意思是
- 红色 - 已删除的文件
- 绿色 - 添加的文件
- 洋红色 - 修改后的文件
因此您可以更轻松地跟踪更改。
我总是在推送之前执行 git status
,以确保我没有遗漏 "to add" 文件列表中的任何内容。
输出非常具有解释性:
$ git status
On branch XXX
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: YYY
Untracked files:
(use "git add <file>..." to include in what will be committed)
ZZZ1
ZZZ2
然后,有某种staging
环境与大家共享也是很好的。这样,当你推送时,你还要确保 staging
环境也是稳定的,这样其他人就会有你最近更改的工作示例:
$ git checkout staging
$ git pull --rebase
$ git merge <your_branch>
$ git push
我喜欢让我的 bash 提示在我有脏状态时警告我,以及我正在处理哪个分支。
/tmp/myrepo (master) $ touch newfile.txt
/tmp/myrepo (master %) $ git add newfile.txt
/tmp/myrepo (master +) $ git commit -m 'added newfile'
[master 9fe6399] added newfile
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 newfile.txt
/tmp/myrepo (master) $
这是通过将以下内容添加到 .bashrc
来实现的
export GIT_PS1_SHOWDIRTYSTATE=true
export GIT_PS1_SHOWSTASHSTATE=true
export GIT_PS1_SHOWUNTRACKEDFILES=true
export PS1='${debian_chroot:+($debian_chroot)}\[3[01;33m\]\w\[3[01;32m\]$(__git_ps1) \[3[01;36m\]$ \[3[00m\]'
我经常出现的情况是:
- 我创建一个新文件
- 我修改了现有文件
万事俱备,我为自己感到骄傲
- 我承诺
- 我推送到服务器
我的队友拉:他们无法编译,因为缺少一个文件。 他们都想杀了我。
问题是,如何确保我已经添加了所有需要的文件?
作为最佳实践,您应该在提交之前始终检查 git status
。
您可以修改任何 git 挂钩(预提交,post-提交)以将未跟踪文件的屏幕列表打印出来,这样您就可以看到它并且不会错过它。
使用此命令打印出未跟踪的文件:
git ls-files --others --exclude-standard
另一个解决方案:
你也可以写一个别名来为你做这件事,这样你下次就不会忘记了。
很高兴拥有:
设置您的颜色设置以显示您的颜色更改,意思是
- 红色 - 已删除的文件
- 绿色 - 添加的文件
- 洋红色 - 修改后的文件
因此您可以更轻松地跟踪更改。
我总是在推送之前执行 git status
,以确保我没有遗漏 "to add" 文件列表中的任何内容。
输出非常具有解释性:
$ git status
On branch XXX
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: YYY
Untracked files:
(use "git add <file>..." to include in what will be committed)
ZZZ1
ZZZ2
然后,有某种staging
环境与大家共享也是很好的。这样,当你推送时,你还要确保 staging
环境也是稳定的,这样其他人就会有你最近更改的工作示例:
$ git checkout staging
$ git pull --rebase
$ git merge <your_branch>
$ git push
我喜欢让我的 bash 提示在我有脏状态时警告我,以及我正在处理哪个分支。
/tmp/myrepo (master) $ touch newfile.txt
/tmp/myrepo (master %) $ git add newfile.txt
/tmp/myrepo (master +) $ git commit -m 'added newfile'
[master 9fe6399] added newfile
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 newfile.txt
/tmp/myrepo (master) $
这是通过将以下内容添加到 .bashrc
来实现的export GIT_PS1_SHOWDIRTYSTATE=true
export GIT_PS1_SHOWSTASHSTATE=true
export GIT_PS1_SHOWUNTRACKEDFILES=true
export PS1='${debian_chroot:+($debian_chroot)}\[3[01;33m\]\w\[3[01;32m\]$(__git_ps1) \[3[01;36m\]$ \[3[00m\]'