获取git仓库
在现有目录中初始化仓库(如果你打算使用Git对现有项目进行管理)
$ git init
执行完会在当前目录下创建一个.git的子目录,这个子目录含有你初始化的Git仓库中所有的必须文件
克隆现有的仓库(Git 仓库中的每一个文件的每一个版本都将被拉取下来)
$ git clone https://github.com/libgit2/libgit2
//自定义本地仓库的名字
$ git clone https://github.com/libgit2/libgit2 mylibgit
添加提交文件
git add
检查当前文件状态
$ git status
//工作目录相当干净,所有已跟踪的文件在上次提交之后都未被更改过
On branch master
nothing to commit, working directory clean
//创建新的README文件
$ echo 'My Project' > README
//检查当前文件状态
$ git status
//有一个新的未跟踪文件:Git之前的快照中没有这些文件
On branch master
No commits yet
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)
//跟踪README文件
$ git add README
//查看当前文件状态
$ git status
//当前文件状态已被跟踪并且处于暂存状态
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README
//暂存已修改文件,查看状态
$ git status
//结果 Changes not staged for commit: 已跟踪文件的内容发生了变化,但还没有放到暂存区。 README同时出现了暂存区和非暂存区 如果提交 会提交最后一次运行git add的版本 不是当前的最新
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
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)
modified: README
//将已经修改的文件加入到暂存区
$ git add README
//查看当前文件的状态
$ git status
//结果 状态为 被提交
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README
忽略文件
一般我们总会有些文件无需纳入Git的管理,也不需要出现在未跟踪文件列表
比如日志文件,或者编译过程中创建的临时文件等
我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式
$ cat .gitignore
//所有以 .o 或 .a 结尾的文件
*.[oa]
//忽略所有以波浪符(~)结尾的文件
*~
查看修改内容
查看未暂存的文件修改了哪一部分 只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动
$ git diff
//结果
diff --git a/README b/README
index 17589d7..4732b90 100644
--- a/README
+++ b/README
@@ -1,2 +1,2 @@
o My Project
-封建帝国海军返还甲方,给
\ No newline at end of file
+封建帝国海军返还甲方,给反倒是三国杀
\ No newline at end of file
查看已暂存的将要添加到下次提交的内容
git diff --cached
git diff --staged 更高级版本
//结果
diff --git a/README b/README
new file mode 100644
index 0000000..17589d7
--- /dev/null
+++ b/README
@@ -0,0 +1,2 @@
+o My Project
+封建帝国海军返还甲方,给
\ No newline at end of file
提交更新 git commit
提交之前先查看项目状态 是不是都暂存起来 才会运行提交命令
git commit -m //添加注释
//结果
$ git commit -m '一个文件'
[master (root-commit) f8db1c9] 一个文件
1 file changed, 2 insertions(+)
create mode 100644 README
//跳过使用暂存区域 Git 就会自动把所有已经跟踪过的文件暂存起来一并提交
$ git commit -a -m '一个文件'
//简单从工作目录中手工删除文件
$ rm README
//结果
$ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: README
no changes added to commit (use "git add" and/or "git commit -a")
//记录此次移除文件的操作
git rm README
移动文件
$ git mv README.md README
查看提交历史
//会按提交时间列出所有的更新,最近的更新排在最上面
git log
//-p 显示每次提交的内容差异
git log -p
//-2 表示最近2次提交
git log -p -2
//--stat 每次提交的简略的统计信息
git log --stat
撤销操作
//提交完才发现漏掉了几个文件没有添加,或者是提交的信息写错了
$ git commit --amend
//例如,你提交后发现忘记了暂存某些需要的修改,可以像下面这样操作:
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
取消暂存文件
你已经修改了两个文件并且想要将它们作为两次独立的修改提交,但是却意外地输入了 git add * 暂存了它们两个。 如何只取消暂存两个中的一个呢?
$ git reset HEAD CONTRIBUTING.md
撤销对文件的修改
//如果你并不想保留对 CONTRIBUTING.md 文件的修改怎么办? 你该如何方便地撤消修改——将它还原成上次提交时的样子(或者刚克隆完的样子,或者刚把它放入工作目录时的样子)?
$ git checkout -- CONTRIBUTING.md
远程仓库的使用
查看远程仓库
git remote
//-v,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。
$ git remote -v
//结果
origin https://github.com/schacon/ticgit (fetch)
添加远程仓库
git remote add <shortname> <url>
$ git remote add pb https://github.com/paulboone/ticgit
如果你想拉取某个仓库中有但你没有的信息
$ git fetch pb
查看某个远程仓库
$ git remote show origin
Git标签
列出标签
git tag
创建附注标签
$ git tag -a v1.4 -m "my version 1.4"
-a 创建一个附注标签
-m 选项指定了一条将会存储在标签中的信息
创建轻量标签 只需要提供标签名字
$ git tag v1.4-lw
删除轻量级标签
$ git tag -d v1.4-lw
Git别名 git config
$ git config --global alias.co checkout