Git基础操作

在现有目录中初始化仓库

用 Git 来对现有的项目进行管理,需要进入该项目目录并输入:git init

该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。 但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪。如果你是在一个已经存在文件的文件夹(而不是空文件夹)中初始化 Git 仓库来进行版本控制的话,你应该开始跟踪这些文件并提交。 你可通过 git add 命令来实现对指定文件的跟踪,然后执行 git commit 提交:

git add .
git commit -m 'initial project version'

 文件状态演变

# 查看文件、文件夹状态
git status

未追踪状态 (Untracked):新创建的文件属于未追踪状态(Untracked),git不会对未追踪的状态的文件进行管理。

放入暂存区未提交状态(Staged) :通过 git add 用于跟踪新文件,把文件新增的变动暂存(stage)起来。git add也可以把已跟踪文件的修改和删除的变动暂存。

已提交未修改状态(Unmodified) :通过 git commit 对暂存的变动进行提交,文件变成已提交尚未修改状态(Unmodified)。

提交后被修改状态 (Modified):对于已提交未修改的文件,被修改后变成已修改状态(Modified),需要通过 git add命令把修改的变动暂存之后才能提交。比如

git add .
git commit -m "提交文件的修改"

也可以直接提交,但需要加上-a参数, 上面的操作等同如下操作

git commit -am "提交文件的修改"

对于已提交未修改的文件,被删除后变成已修改状态(Modified), 需要通过git add 命令把删除的变动暂存,之后才能提交。 比如

rm index.html
git add .
git commit -m "文件删除"

也可以直接提交,但需要加上-a参数, 上面的操作等同如下操作

rm index.html
git commit -am "提交文件的修改"

问:git add 与 git commit -a 有什么区别?

答:对于已提交未修改的文件,文件的编辑、删除都会使其变成已修改状态。可以通过 git add暂存变动,再 git commit。也可以直接通过 git commit -a 一次性暂存变动并提交;

于未追踪文件的新增,只能通过 git add 来暂存新增变动,之后在 git commit 提交。

 

移除文件

git rm readme.md : 把readme.md文件移除的这个变动暂存,并且本地也删除 readme.md文件

git rm --cached readme.md : 把readme.md文件移除的这个变动暂存,但本地保留readme.md文件(该文件变成未追踪状态)。

git rm -f readme.md:对于被提交后做了修改(处于已修改状态)的文件,想把文件移除的变动暂存必须加 -f参数

场景一:从 Github clone一个仓库到本地,在仓库目录删除 readme.md,之后把变动同步到Github。

# 删除文件
rm readme.md
# 把变动暂存
git add readme.md
# 提交变动
git commit -m "删除readme.md "

等同于

# 删除文件
rm readme.md
# 用快捷方式把变动暂存并提交变动
git commit -am "删除readme.md"

等同于

# 删除文件,同时把删除的变动暂存
git rm readme.md
# 提交暂存的变动
git commit -m "删除readme.md"

场景二:小A在提交代码时不小心把一个用于本地测试的数据库文件 database 一并提交并推送到Github,导致Github源码体积增加几百M。现在他需要在仓库中删除database文件,但本地依然保留该文件(本地开发需要)。

# 本地保留database, 把删除的变动暂存
git rm --cached database
# 提交变动。注意:此地不需要执行 git add .
git commit -m "删除无关文件"

touch .gitignore
echo database > .gitignore
git add .
git commit -m "添加.gitignore"
git push origin master

总结

以下两个命令能满足绝大多数使用场景:

git add .
git commit -am "bug fix"

远程仓库操作

git clone git@github.com:xxx/xxx.git 会把远程仓库完整的信息克隆到本地。

使用 git remote -v查看远程仓库信息。

远程仓库地址默认的名字叫 origin。

# 添加信息的地址
git remote add origin git@github.com:jirengu/test.git
git remote add gitlab git@github.com:jirengu/test.git
# 修改地址
git remote set-url gitlab git@github.com:jirengu/demo.git
# 删除地址
git remote remove gitlab
# 推送项目
git push origin master
git push gitlab master

 

posted @ 2021-03-14 16:40  曾经的点工  阅读(40)  评论(0编辑  收藏  举报