盒子

git使用之一二三

git基本使用命令

git 脑图

基本命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#下载
$ git clone git://github.com/jquery/jquery.git

#添加项目到暂存区,点号表示添加所有
$ git add <filename>/.

#提交暂存区到仓库区
$ git commit -m [message] #或者git commit -a

#推送项目到远程地址
$ git push

# 强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] --force
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#创建并切换分支
$ git checkout -b branchName #每次开发新功能,都应该新建一个单独的分支

#添加当前目录的所有文件到暂存区
$ git add .

#用互动的模式来确认要加入的档案
$ git add -i:

#HEAD指针
HEAD指针总是指向分支的最新提交。每当你做出了一个提交,HEAD更新为最新提交。
HEAD树枝存储在.git/refs/heads/ 目录中。
cat .git/HEAD
ref: refs/heads/master

#新建分支
$ git branch [branchName]

合并分支

1
2
3
4
5
6
7
8
9
10
11
12
git merge <branch>                  # 将branch分支合并到当前分支
Git分支操作: 创建分支后, 分支操作不会影响master分支, 但是master分支改变会影其它分支;


--列出分支 :$ git branch ;

--切换分支 :git checkout master

--提交分支 : git push origin branchName ;

--删除分支 : git branch -d branchName , 强制删除分支 git branch -D branchName
--合并分支 : git merge branchName ;

###远程分支

1
2
3
4
5
6
7
8
9
10
11
$ git pull                # 抓取远程仓库所有分支更新并合并到本地
$ git push origin master # 将本地主分支推到远程主分支 master 可以换成你想要的任何分支

# 将本地主分支推到远程(如无远程主分支则创建,用于初始化远程仓库)
$ git push -u origin master

# 查看远程仓库:
$ git remote -v

# 下载远程仓库的所有变动
$ git fetch [remote]

git技术栈

git技术栈

关于.git

1
├── HEAD
├── branches
├── config
├── description
├── hooks
│ ├── pre-commit.sample
│ ├── pre-push.sample
│ └── ...
├── info
│ └── exclude
├── objects
│ ├── info
│ └── pack
└── refs
├── heads
└── tags

每一次你创建一个文件并跟踪它会发现,git 会对其进行压缩然后以 git 自己的数据结构形式来存储。这个压缩的对象会有一个唯一的名字,即一个哈希值,这个值存放在 object 目录下。

在探索 object 目录前,我们先要问自己 commit 到底是何方神圣。commit 大致可以视为你工作目录的快照,但是它又不仅仅只是一种快照。

实际上,当你提交的时候,为创建你工作目录的快照 git 只做了两件事:

  • 如果这个文件没有改变,git 仅仅只把压缩文件的名字(就是哈希值)放入快照。
  • 如果文件发生了变化,git 会压缩它,然后把压缩后的文件存入 object 目录。最后再把压缩文件的名字(哈希值)放入快照。