Git命令
参考博客:git命令大全
专有名词
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
创建命令
在init了的管理库中
- 创建空文件
$ touch 文件名
用git sttus
查看,1.py属于Unchacked files
- 创建空文件夹
$ mkdir 文件夹名称
3.复制文件内容
//exam:将上一层的文件1.txt->此目录的1.txt
$ cp ../1.txt 1.txt
- 查看文件修改的区别
//Unstaged和上次commit后的区别
$ git diff
//staged和上次commit后的区别
$ git diff --cached
//上面两个区别都有显示
$ git diff HEAD --文件名
补充:
- *.py:对于所有py文件
- 建立一个
.
开头的文件(比如.gitignore),然后在里面写入文件名,或者目录名(/dir1),add时可以屏蔽写入的文件。
关联命令
1.查看远程库的地址
$ git remote
2.指定一个地址为[url]的库作为当前库的远程库,(一般为想要关联的Github上面的库的地址)
$ git remote add origin [url]
提交命令
git commit 详解
git commit 主要是将暂存区里的改动给提交到本地的版本库。每次使用git commit 命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id
- 添加提交信息
$ git commit -m '提交信息'
当我们想要提交的message很长或者我们想描述的更清楚更简洁明了一点,我们可以使用这样的格式,如下:
$ git commit -m ‘
message1
message2
message3
’
如果没有写- m,git commit 会调用一个编辑器一般是vim来让你输入这个message。
i 插入文字的命令
前面有#,此句注释。删除掉想要执行的语句的#。
也可以在开头加入自己想要执行的命令,如add 1.txt
先按一下Esc,退出输入状态。
ZZ 退出vi界面
WQ保存并退出界面
- 提交工作区自上次commit之后的变化,直接到仓库区
新加的文件(即没有被git系统管理的文件)是不能被提交到本地仓库的。建议一般不要使用-a参数,正常的提交还是使用git add先将要改动的文件添加到暂存区,再用git commit -m提交到本地版本库。
$ git commit -a -m ‘提交信息’
- 追加提交,它可以在不增加一个新的commit-id的情况下将新修改的代码追加到前一次的commit-id中
git commit --amend
- 查看帮助
$ git commit --help
文件修改状态
- 查看文件几次修改的不同
每次更改过一次,staged的状态就会变为unstaged的状态
unstaged状态包括unmodified和modified状态
#unstaged的状态和之前commit完成的状态的不同有哪些
git diff //按q退出
用git status -s
查看状态的缩写。
- 如果已经add了文件,再使用
git diff
没有任何显示。(因为现在已经是staged的状态)
查看staged的状态和commit后状态的不同
#暂存区(staged)和分支(master)的比较
git diff --cached
- 如果想看unstaged,staged状态和分支的不同,可以用
#比较的是工作区中的文件与版本库中文件的差异。
git diff HEAD -- file
例子:
touch 1.py
建立了1.py,修改内容“a=1”,git status -s
发现1.py前是❓❓。
git diff --cached
,git diff
,git diff HEAD -- 1.py
无显示,因为仓库里没有任提交在里面。
git add 2.py
后,git diff
无显示,git diff --cached
,git diff HEAD -- 1.py
显示:
“+a=1(绿色)”
再次添加“b=2”,git status -s
发现1.py前是AM(a红m绿)。
git diff
显示:
“-a=1(红)
+a=1(绿)
+b=2(绿)
”
git diff --cached
后,显示:
“+a=1”(绿)
”
git diff HEAD -- 1.py
后,显示:
“+a=1”(绿)
+b=2(绿)
”
git commit -m"change1"
,1.py status变为前面是“M(红)”。
此时git diff --cached
没有显示。
git diff HEAD -- 1.py
和git diff
显示:
“-a=1(红)
+a=1(绿)
+b=2(绿)
”
因为b=2修改保存后并没有add到暂存区,暂存区中只有a=1所以只会显示的是工作区(work dict)和暂存区(staged)的区别,暂存区和分支不存在区别,无显示。
当为下图情况时:
unstaged | staged | 上一次commit后的状态 |
---|---|---|
a=1 | a=1 | a=1 |
b=2 | b=2 | b=2 |
c=3 | c=3 | c=3 |
d=4 | d=4 | |
f=5 |
此时staus -s 显示的是MM 1.py(前M绿色,代表staged状态,后一个M红色代表我们后面加上的f=5,变成了一个unstaged的状态)
git diff
显示:
显示的是unstaged状态和上一次commit状态的不同
补充:若add,则变成staged的状态,再次git diff
无显示,此时需要用git diff --cached
,会显示下图
2.git diff --cached
显示:
现在staged状态和上一个commit状态的不同:+d=4
git diff HEAD -- 1.py
显示:
同时观看staged状态和unstaged的状态
前面的+d=4是staged的状态,+f=5是unstaged的状态。
补充: 如果用cached来显示,只会显示staged的状态
分支命令
1.创建分支
$ git branch 分支名
2.切换分支
$ git checkout 分支名
3.合并分支
//在一个分支中,执行下条语句,把下面的分支内容合并到本分支上
$ git merge 分支名