git常用命令入门
安装完Git的终端后,在终端下打一个git,会告诉各种git的使用方法。
1. 入门
如果想把当前文件夹用Git管理的话,需要先建立一个仓库(repository)。可以使用一个已经存在的目录作为Git仓库或创建一个空目录。
1.1 初始化仓库
使用当前目录作为Git仓库,只需要将它初始化:
git init
使用指定目录作为Git仓库:
git init new_repo
后面将假设操作均位于Git仓库的根目录下,除非另有说明。
1.2 看一下当前文件的情况
git status
红色代表更改没有被添加,只有被添加的更改,才能被提交。
1.3 添加新文件/新的文件更改
我们有一个仓库,但什么也没有,可以使用add命令添加文件。
git add filename
如果有很多很多个文件,可以使用:
git add .
在后面加上一个’.’,这就代表要添加所有的修改。
当更改变成绿色的时候,说明更改准备好被提交了。
1.4查看没有被添加的更改内容
git diff
1.5 取消文件追踪
git reset filename(包括子路径)
被追踪的文件,会由绿色变成红色。
1.6 让git知道你是谁
谁提交的改变,git是需要明白的。
告诉git名字:
git config --global user.name "Yinji"
告诉git邮箱:
git config --global user.email "zhuyinji@miaomiaomiao.ai"
1.7 git的管理系统内删除文件
git rm --cached 想要删除的文件名
该命令只是让git管理系统中删除改文件。但是在电脑文件夹中,该文件还是存在的。
这个方法可以删除之前上传到git上,但后来不想管理了,放入.gitignore的文件。
1.8 当前文件夹下的某个文件,不想让git管理
在文件夹下,输入:
vim .gitignore
如果不想让git帮忙管理
.
v
s
c
o
d
e
.vscode
.vscode或
b
u
i
l
d
build
build文件,只需要在该文本里写入
.
v
s
c
o
d
e
.vscode
.vscode和
b
u
i
l
d
build
build,保存并退出。此时再输入git status,之前显示的不想管理的文件就消失了,但是多了个
.
g
i
t
i
g
n
o
r
e
.gitignore
.gitignore。
注意,之前让git已经追踪的文件,就会一直追踪。就算将文件加入
.
g
i
t
i
g
n
o
r
e
.gitignore
.gitignore内,文件还是会继续被追踪。
如果想要让文件不被追踪,可以使用git rm先删除文件
1.9 告诉项目在网上的地址在哪
git remote add origin ssh://example.com/~/www/project.git
1.10 提交版本
现在我们已经添加了这些文件,我们希望它们能够真正被保存在Git仓库。
为此,我们将它们提交到仓库:
git commit -m "Adding comments"
-m后面为对提交内容的描述。
如果在这里不写-m的话,会出现编辑器来让你写自己的注释信息。
当我们修改了很多文件,而不想每一个都add,想commit自动来提交本地修改,我们可以使用-a标识。
git commit -a -m "Changed some files"
1.11 发布新版本
我们先从服务器克隆一个库并进行修改:
git clone ssh://example.com/~/www/project.git
现在我们修改之后可以进行推送到服务器(如果不配置的话,需要输入用户名和密码):
git push ssh://example.com/~/www/project.git (下载下来时有网址,如上传到相同路径下,不需要输入网址)
git push --set-upstream origin master(这里存在疑问)
git push的一般形式为git push <远程主机名> <本地分支名> <远程分支名>,例如git push origin master:refs/for/master,即是将本地的master分支推送到远程主机origin上的对应master分支, origin 是远程主机名,第一个master是本地分支名,第二个master是远程分支名。
1.11.1 git push origin master
如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
1.11.2 git push origin :refs/for/master
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin --delete master。
1.11.3 git push origin
如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支。
1.11.4 git push
如果当前分支只有一个远程分支,那么主机名都可以省略,形如git push,可以使用git branch -r,查看远程的分支名。
1.12 分支与合并
分支在本地完成,速度快。要创建一个新的分支(如test),我们使用branch命令:
git branch test
branch命令不会将我们带入分支,只是创建了一个新的分支。因此,我们需要使用checkout命令来更改分支:
git checkout test
第一个分支,或主分支,被称为“master”:
git branch master
对其他分支的更改不会反映在主分支上。如果想将更改提交到主分支,则需切换回master分支,然后使用合并:
git checkout master
git merge test
注意:在merge后,分支虽然合并了,但是还是继续存在的。
1.13 删除分支
如果想删除分支,我们使用-d标识:
git branch -d test
假设这个分支有一些更改没有保存合并到主分支,就是假设一些更改会丢失的话,git会提醒你不让你删这个分支。如果想强制删除,-d变成-D。
1.14 获取项目最新版本
git pull
2. GitLab上传示例
Git global setup
git config --global user.name "Yinji"
git config --global user.email "yinji@miaomiaomiao.ai"
Create a new repository
git clone git@192.168.1.32:Yinji/test.git
cd test
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
Push an existing folder
cd existing_folder
git init
git remote add origin git@192.168.1.32:Yinji/test.git
git add .
git commit -m "Initial commit"
git push -u origin master
Push an existing Git repository
cd existing_repo
git remote rename origin old-origin
git remote add origin git@192.168.1.32:Yinji/test.git
git push -u origin --all
git push -u origin --tags