git 指令记录
由于之前一直用svn 用git也是用图形化的工具 还是要了解一下git指令
因为都是版本控制工具 有很多相似之处 所以理解起来也比较轻松
- 仓库: github上面的项目
- 工作目录下面的所有文件都不外乎这两种状态:++1. 已跟踪 2. 未跟踪++
- git 有一个暂存区(staged area), 即跟踪区。 在暂存区的文件都是被跟踪状态的,所有准备好要提交的文件才放到暂存区 提交的时候不是直接从本地提交 而是把暂存区的文件全部提交上去
-
初始化新仓库
$ git init
-
从现有仓库中克隆
$ git clone [url]
-
检查当前文件状态
$ git status
例子1:
$ git status On branch master nothing to commit, working directory clean
-
clean : 所有已跟踪文件在上次提交后都未被更改过
-
当前目录下没有出现任何处于未跟踪的新文件,否则 Git 会在这里列出来
-
master : 当前所在的分支名称
-
如果在当前目录下新建一个文件 会在 Untracked files 下面显示 表明此为未跟踪文件
$ vim README $ git status On branch master Untracked files: <!--未跟踪文件--> (use "git add <file>..." to include in what will be committed) README nothing added to commit but untracked files present (use "git add" to track)
-
-
跟踪文件
-
跟踪新文件
$ git add 新建的文件
-
跟踪原有的修改的文件
$ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) <!--git reset HEAD <file>:撤销add--> new file: README 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) <!--git checkout -- <file>:回到修改之前的版本--> modified: benchmarks.rb
Changes not staged for commit: 说明已跟踪文件的内容发生了变化,但还没有放到暂存区。要暂存这次更新,需要运行 git add benchmarks.rb 命令
git reset HEAD
: 撤销add 撤销追踪状态 git checkout --
: 撤销修改 回到修改之前的版本。这条命令有些危险,所有对文件的修改都没有了,因为我们刚刚把之前版本的文件复制过来重写了此文件。所以在用这条命令前,请务必确定真的不再需要保留刚才的修改。如果只是想回退版本,同时保留刚才的修改以便将来继续工作,可以用下章介绍的 stashing 和分支来处理 把修改的部分假如到暂存区 准备提交
$ git add benchmarks.rb $ git status On branch master Changes to be committed: <!--此时本地文件已经全部在暂存区 已经准备好可以提交了--> (use "git reset HEAD <file>..." to unstage) new file: README modified: benchmarks.rb
Changes to be committed:全部在暂存区 已经准备好可以提交了
如果再次 vim ++二次修改++,然后再看看 status:
$ vim benchmarks.rb $ git status On branch master Changes to be committed: <!--commit 只会提交这部分文件--> (use "git reset HEAD <file>..." to unstage) new file: README modified: benchmarks.rb <!--第一次修改已经加到缓存区的文件--> 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: benchmarks.rb <!--二次修改没有加到缓存区的文件-->
如果此时提交的话 提交的是上面的第一次修改的文件 二次修改的文件不会被提交 想要二次修改的被提交要再次执行add指令
++所以 全部文件修改了之后才去 add, 尽量避免 add 过 文件之后又再修改文件了++
-
-
要忽略掉的文件
始终都不要追踪的文件 创建 .gitignore 文件
# 此为注释 – 将被 Git 忽略 *.a # 忽略所有 .a 结尾的文件 !lib.a # 但 lib.a 除外 /TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO build/ # 忽略 build/ 目录下的所有文件 doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt doc/**/*.txt # 忽略 doc/ 目录下所有扩展名为 txt 的文件
暂时记录到这里 有时间再继续整理