Git基础

获取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 ..." 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 ..." 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 ..." to unstage)
    new file:   README
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." 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 ..." 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 ..." to update what will be committed)
  (use "git checkout -- ..." 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   
$ 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

你可能感兴趣的:(Git基础)