ProGit中文版https://www.progit.cn/

Git工具

子模块

子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。

添加子模块

1
$ git submodule add <URL> <相对路径,可选>

.gitignore 文件(保存子模块信息)一样受到(通过)版本控制。.git的config文件中也有类似的私人配置

克隆子模块

1
2
$ git submodule init //用来初始化本地配置文件
$ git submodule update //则从该项目中抓取所有数据并检出父项目中列出的合适的提交。

意思是初始化本地子模块配置文件,然后拉取子模块
不过还有更简单一点的方式。 如果给 git clone 命令传递 --recursive 选项,它就会自动初始化并更新仓库中的每一个子模块。

拉取上游修改

如果想要在子模块中查看新工作,可以**进入到目录**中运行 git fetchgit merge,合并上游分支来更新本地代码。
如果你不想在子目录中手动抓取与合并,那么还有种更容易的方式。 运行 git submodule update --remote
如果你设置了配置选项 status.submodulesummary,Git 也会显示你的子模块的更改摘要:

1
$ git config status.submodulesummary 1

当运行 git submodule update --remote 时,Git 默认会尝试更新所有子模块,所以如果有很多子模块的话,你可以传递想要更新的子模块的名字。

修改子模块

可以用简单的依赖管理系统(如 Maven 或 Rubygems)来替代了GIT

发布改动

git push 命令接受可以设置为 checkon-demand--recurse-submodules 参数。 如果任何提交的子模块改动没有推送那么 “check” 选项会直接使 push 操作失败。
另一个选项是使用 on-demand 值,它会尝试为你这样做。

书签

Tips

1
多人合作或者多台电脑工作,先拉后推

Git常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
 1.首次使用:
git config --global user.name "自己的名字"
git config --global user.email 自己的邮箱
ssh-keygen -t rsa -C “邮箱”
然后会提示输入密码
在代码托管平台上添加ssh密钥,这要添加的是“id_rsa.pub”里面的公钥。
打开代码托管平台登陆然后添加ssh。

2.下载平台项目
git clone 项目HTTPS或其他

3.初始化仓库,创建一个.git目录
git init

4.切换目录
cd 目录
盘符后加“:”目录分隔用“/”

5.选中需要上传的文件
git add . //添加当前目录下的所有文件,记住有个点
git add 文件 文件 //上传一个或多个文件,中间用空格隔开
git add 目录 //上传一个目录下的所有文件

6.输入提交注释
git commit

7.推送本地更新到远程:
git push origin master

8.更新远程更新到本地:
git pull origin master

9.创建新的分支
git branch 分支名 //虽然创建了分支,但是不会将当前工作分支切换到新创建的分支上,因此,还需要命令“git checkout 分支名” 来切换
git checout –b 分支名 //不但创建了分支,还将当前工作分支切换到了该分支上。

10.查看所有分支或当前分支
git branch //列出本地git库中的所有分支。在列出的分支中,若分支名前有*,则表示此分支为当前分支。
git branch –r //列出服务器git库的所有分支。
cat .git/HEAD //查看当前在哪个分支上

11.切换分支
git checkout 分支名称
12.查看提交情况
git status //红色为暂未提交,绿色为已提交

13.分支合并
git merge 分支 分支 //合并两个分支,可能出现错误
git pull 分支 //合并当前与输入的分支

14.代码比较
Git diff - - cached //比较index和本地仓库中的代码。
git diff 分支 分支 //比较两个分支
把本地的代码和index中的代码进行比较,或者是把index中的代码和本地仓库中的代码进行比较。

15.删除分支
git branch -D 分支名称

16.删除文件
git rm –r * //进入某个目录中,执行此语句,会删除该目录下的所有文件和子目录
git rm 文件 //删除文件,包含本地目录和index中的此文件记录
git rm --ached 文件 //删除文件,不会删除本地目录文件,只删除index中的文件记录;将已经git add的文件remove到cache中,这样commit的时候不会提交这个文件, 适用于一下子添加了很多文件, 却又想排除其中个别几个文件的情况.)

17.还原代码
git reset
每一次提交,git就会为全局代码建立一个唯一的commit标识代码,用户可以通过git reset命令恢复到任意一次提交时的代码。

18.历史日志
Git log -数字 //显示数字个commit。不指定的话,git log会从该commit一直往后显示。
Git log --stat –summary //显示每次版本的详细变化

19.重命名一个文件
Git mv 文件 //重命名一个文件、目录或者链接。

20.历史分支
git-show-branch //查看当前分支的提交注释及信息
git-show-branch -all //查看所有分支的提交注释及信息

21.分支操作记录
git whatchanged 分支 //查看当前分支的操作记录

22.合并服务器最新内容
Git rebase //一般在将服务器最新内容合并到本地时使用