Git学习
最近看到一个网址http://iissnan.com/progit/html/zh/ch1_0.html。准备开始系统地学习一下Git的使用。在此记录一下。
Git基础
在工作目录中初始化新仓库
$ git init
当前目录下会出现.git文件夹
$ git add
对文件进行跟踪。把目标文件快照放入暂存区域,也就是 add file into staged area,同时未曾跟踪过的文件标记为需要跟踪。
$ git add *.c
$ git add README
$ git commit -m 'initial project version'
从现有仓库中克隆
克隆仓库的命令格式为 git clone [url]
检查当前文件状态
$ git status
跟踪新文件
$ git add filename
忽略文件
首先创建一个.gitignore文件
$ cat .gitignore
# 此为注释 – 将被 Git 忽略
# 忽略所有 .a 结尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
/TODO
# 忽略 build/ 目录下的所有文件
build/
# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt
# ignore all .txt files in the doc/ directory
doc/**/*.txt
查看已暂存和未暂存的文件
$ git diff
此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。
$ git diff --cached
查看已经暂存起来的文件和上次提交时的快照之间的差异。
提交更新
$ git commit -m 'some message'
跳过使用暂存区域
$ git commit -a -m 'added new benchmarks'
Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add
步骤。
移除文件
$ git rm [filename]
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。
$ git rm --cached [filename]
移动文件
$ git mv file_from file_to
查看提交历史
$ git log
可选参数:-p
: 展开显示每次提交的内容差异-2
: 仅显示最近的两次更新
撤销操作
修改最后一次提交
$ git commit --amend
取消已暂存的文件
git reset HEAD <file>
取消对文件修改
$ git checkout -- [filename]
远程仓库的使用
查看远程仓库
$ git remote
添加远程仓库
$ git remote add [shortname] [url]
从远程仓库抓取数据
$ git fetch [remote-name]
推送数据到远程仓库
$ git push [remote-name] [branch-name]
查看远程仓库名称
$ git remote show [remote-name]
远程仓库的删除和重命名
$ git remote rename [old name] [new name]
Git 分支
创建分支
$ git branch [name]
HEAD是一个指向你正在工作中的本地分支的指针,创建了一个分支后并不会自动切换到这个分支中去。
切换分支
$ git checkout [name]
可以合并成一条命令,创建分支并切换
$ git checkout -b [name]
分支合并
$ git merge [branchname]
推送本地分支
$ git push (远程仓库名) (分支名)
跟踪远程分支
$ git checkout -b [分支名] [远程名]/[分支名]
删除远程分支 即省略本地分支的名字
$ git push [远程名] :[分支名]
Github: https://github.com/Vxee/articles/issues/13