git学习总结

git学习总结

Git 有三种状态:

  1. 已提交(committed):表示数据已经安全的保存在本地数据库中
  2. 已修改(modified):表示修改了文件,但还没保存到数据库中
  3. 已暂存(staged):表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

git 的三种区域:

  1. Git 仓库:是 Git 用来保存项目的元数据和对象数据库的地方
  2. 工作目录:是对项目的某个版本独立提取出来的内容
  3. 暂存区域:是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中

Git工作流程(具体的Git命令,可以man git 查看):

  1. 在工作目录中修改文件。
  2. 暂存文件,将文件的快照放入暂存区域。 (git add . 这个操作?)
  3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。 (git commit这个操作?)

git的配置文件(主要存储在3个地方):

  1. /etc/gitconfig文件:包含系统上每一个用户及他们仓库的通用配置。
  2. ~/.gitconfig:只针对当前用户
  3. .git/config:当前使用仓库的 Git 目录中的 config 文件,针对当前git仓库。

查看git配置信息命令:git config --list
git help config = man git

获取git项目仓库有2种方法:

  1. 从现有项目导入所有文件到git中
    大概意思是当前项目/目录中有文件/代码,但是没有git仓库,然后自己可以通过命令git init创建一个git仓库(.git)。在git仓库里面包含有初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。在执行git init后只是做了一个初始化操作,后续还要将文件进行跟踪操作。
  2. 克隆现有的仓库
    使用命令git clone可以得到已存在的git仓库的一份拷贝和该目录下的所有文件(即不只是git仓库,还有可以使用的其他文件),克隆仓库的命令格式是git clone [url]

在git仓库同目录下的所有文件分为2种状态:

  1. 已跟踪文件,已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区(此处又有三个状态,需要和已跟踪和未跟踪进行区分)。
  2. 未跟踪文件,它们既不存在于上次快照的记录中,也没有放入暂存区。

git 的具体操作

  1. 通过命令git status查看当前git同目录文件状态

    administrator@administrator:~/projects/cd$ git status
    位于分支 master
    初始提交
    未跟踪的文件:
    (使用 "git add <文件>..." 以包含要提交的内容)
    repo
    提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
  2. 通过命令git add开始跟踪一个文件(添加内容到下一次提交中,执行它后,会将对应文件放入暂存区域)

    administrator@administrator:~/projects/cd$ git add repo
    administrator@administrator:~/projects/cd$ git status
    位于分支 master
    初始提交
    要提交的变更:
    (使用 "git rm --cached <文件>..." 以取消暂存)
    新文件: repo
  3. 如果此时在对文件repo进行修改,使用git status查看:

    administrator@administrator:~/projects/cd$ git status
    位于分支 master
    初始提交
    要提交的变更:
    (使用 "git rm --cached <文件>..." 以取消暂存)
    新文件: repo
    尚未暂存以备提交的变更:
    (使用 "git add <文件>..." 更新要提交的内容)
    (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
    修改: repo

    即暂存区域存放的还是上一次的修改记录,如果现在提交,则是将上次的文件给提交了,当前这次的修改还在本地,未放入 git仓库。

  4. 查看修改
    a. 查看未暂存文件修改,使用命令git diff(或者说该命令是查看暂存前和暂存后之间的差异)
    b. 查看已暂存文件修改,使用命令git diff --cached(或者说该命令是查看上次提交和这次准备提交之间的差异)

  5. 将暂存区域的修改提交到 git 库中,使用命令git commit -m "引号里面的为提交 comment"

    administrator@administrator:~/projects/cd$ git commit -m 'first commit'
    [master (根提交) 4e0da03] first commit
    1 file changed, 835 insertions(+)
    create mode 100755 repo

  6. 撤销部分文件的暂存
    如对2个文件repo和文件README都进行了修改,然后其中一个文件是临时文件,并不需要上传。
    a. 为了方便可以先将所有的文件都存入暂存区

    administrator@administrator:~/projects/cd$ vim README
    administrator@administrator:~/projects/cd$
    administrator@administrator:~/projects/cd$
    administrator@administrator:~/projects/cd$
    administrator@administrator:~/projects/cd$ vim repo
    administrator@administrator:~/projects/cd$ git add .
    administrator@administrator:~/projects/cd$ git status
    位于分支 master
    要提交的变更:
    (使用 "git reset HEAD <文件>..." 以取消暂存)
    修改: README
    修改: repo

    b. 将README从暂存区中取消

    administrator@administrator:~/projects/cd$ git reset HEAD README
    重置后取消暂存的变更:
    M   README
    administrator@administrator:~/projects/cd$ git status
    位于分支 master
    要提交的变更:
    (使用 "git reset HEAD <文件>..." 以取消暂存)
    修改: repo
    尚未暂存以备提交的变更:
    (使用 "git add <文件>..." 更新要提交的内容)
    (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
    修改: README

    c. 最后执行git commit -m命令将暂存区文件提交到本地git仓库

    administrator@administrator:~/projects/cd$ git status
    位于分支 master
    要提交的变更:
    (使用 "git reset HEAD <文件>..." 以取消暂存)
    修改: repo
    尚未暂存以备提交的变更:
    (使用 "git add <文件>..." 更新要提交的内容)
    (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
    修改: README
    administrator@administrator:~/projects/cd$ git commit -m 'commit file repo noly'
    [master 165d9c4] commit file repo noly
    1 file changed, 1 insertion(+), 1 deletion(-)
    administrator@administrator:~/projects/cd$ git status
    位于分支 master
    尚未暂存以备提交的变更:
    (使用 "git add <文件>..." 更新要提交的内容)
    (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
    修改: README
    修改尚未加入提交(使用 "git add" 和/或 "git commit -a"
  7. 撤销对文件的修改
    其实从前面的提示就可以看到,使用命令git checkout
    使用 "git checkout -- <文件>..." 丢弃工作区的改动

    administrator@administrator:~/projects/cd$ git checkout README
    administrator@administrator:~/projects/cd$ git status
    位于分支 master
    无文件要提交,干净的工作区
  8. 远程git仓库
    可以通过命令git remote -v查看远程git仓库。

    administrator@administrator:~/projects/morpho_iris/development$ git remote -v
    tbm [email protected]:/tabet_quicl/platform/development.git (fetch) (同时可以通过命令 git clone [email protected]:/tabet_quicl/platform/development.git将远程git仓库和文件copy下来)
    tbm [email protected]:/tabet_quicl/platform/development.git (push)
  9. 区分git clone ,git fetch,git pullgit rebase

  10. 本地仓库推送到远程仓库
    将本地仓库推送到其上游,命令git push [remote-name] [branch-name]

https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%85%B3%E4%BA%8E%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6

持续更新中……

你可能感兴趣的:(linux,android)