记录每次更新到仓库
工作目录下的文件不外乎两种状态:已跟踪或未跟踪 已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照有它们的记录 除去已跟踪的文件外,其他文件都属于未跟踪文件,它既不存在于上次快照的记录中,也没有被放入暂存区
检查文件状态
检查当前文件状态:git status
txt
# 提示有三条记录没有推送
Your branch is ahead of 'origin/master' by 3 commits.
(use "git push" to publish your local commits)
# 提示文件 git/a.md 修改没有提交
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: "git/a.md"
# 提示文件 git/b.md 是新添加的未追踪文件
Untracked files:
(use "git add <file>..." to include in what will be committed)
"git/b.md"
no changes added to commit (use "git add" and/or "git commit -a")
状态简览:git status -s
(新添加的未追踪文件: ??
, 新添加到暂存区: A
, 修改过的文件: M
)
text
M "git/a.md"
?? "git/b.md"
忽略文件
一般我们总会有些文件无需纳入 Git
管理,创建一个 .gitinore
文件来管理,例如
text
# 忽略所有的 .a 文件
*.a
# 追踪 lib.a
!liba
# 只忽略当前目录下的 TODO 文件
/TODO
# 忽略任何目录下名为bulid的文件夹
build/
# 忽略 doc/notes.txt 而不忽略doc/server/arch.txt
doc/*.txt
# 忽略 doc/ 目录及其子目录下的 .pdf 文件
doc/**/*.pdf
查看已暂存和为暂存的修改
要查看尚未暂存的文件更新了哪些部分,不加参数直接输入 git diff
: 这条命令比较的时工作目录中当前文件和暂存区域快照的差异(修改之后还没有暂存起来的变化内容) 若要查看已暂存的要添加到下次提交里的内容,可以使用 git diff --staged
(比对已暂存文件与最后一个提交的文件差异)
提交更新
git add filename
添加文件到暂存区域git commit
提交命令git commit -m "commit infomation"
带信息的提交命令git commit -a
跳过使用暂存区域git commit --amend
撤销&提交 - 本次提交与上次提交合并(第二次提交将代替第一次提交的结果)git rm <filename>
移除文件git checkout -- <file>
使用最近提交的版本覆盖它(除非你确实清楚不想要对那个文件的本地修改了,否则请不要使用这个命令)git mv <file_from> <file_to>
移动文件(可用于文件改名)
“反悔”操作
git checkout -- .
一次性撤销所有本地修改git checkout -- [filename]
撤销指定文件的修改git reset <filename>
撤销对文件的暂存git reset --hard HEAD~1
重置上一次提交git merge --abort
撤销合并