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
原文地址:https://www.cnblogs.com/fjl-vxee/p/9427650.html