git 提交当前目录_Git 使用教程

这篇教程详细介绍了Git的使用,从Git的基本概念、安装到创建版本库,再到文件的添加、提交、版本回退,以及工作区和暂存区的理解。还涵盖了撤销修改、删除文件、远程仓库的配置和克隆操作,适合Git初学者。
摘要由CSDN通过智能技术生成

1.Git简介

Git是目前世界上最先进的分布式版本控制系统,在处理各种项目时都十分高效,而且非常的高大上。

Git是分布式版本控制系统,它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。而且集中式版本控制系统是必须联网才能工作。

2.安装Git

打开Git官网下载安装程序,然后按照默认选项安装即可。

安装完成后,在桌面邮件选择Git bash,弹出一个类似cmd的命令行窗口,证明安装成功。

安装完成后,需要设置用户名和邮箱,在命令行输入以下代码:

git config --global user.name "Your Name"
git config --global user.email "email@163.com"

我们也可以查看一下用户名和密码:

git config user.name
git config user.email

3.创建版本库

版本库(repository)也叫仓库,可以看做一个目录,这个目录里的所以文件都由Git进行管理,每个文件的修改、删除,Git都能跟踪。

1.选择一个合适的地方,创建一个空目录:

mkdir learngit //创建一个名叫learngit的空目录
cd learngit //把learngit设置为当前目录
pwd //查看当前目录
/c/Users/Administrator/learngit

注意,目录名最好不要包含中文

2.通过如下命令把这个目录变成Git可以管理的仓库:

git init

这样Git就把仓库建好啦,我们可以看到在当前目录下多了一个 .git 的目录,这个目录是Git来跟踪管理版本库的。

3.把文件添加到版本库

我们在 learngit 目录下编写一个 readme.txt 文件,内容如下:

Git HelloWord!!
Git HelloWord!!

1) 用 git add 命令,把文件添加到仓库:

git add readme.txt

执行以上命令,没有任何显示。

2) 用 git commit 命令,把文件提交到仓库:

git commit -m "wrote a readme file" //-m后面输入的是本次提交的说明,可以输入任意内容。

4.修改文件

我们已经成功添加并提交了一个 readme.txt 文件,继续修改 readme.txt 文件,改成如下内容:

Git 你好!
Git 你好!

运行 git status 命令:

git status //查看仓库当前的状态
On branch master
Changes not staged for commit: //没有文件将要被提交
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
 
    modified:   readme.txt
 
no changes added to commit (use "git add" and/or "git commit -a")

上面的命令告诉我们,readme.txt 文件被修改过了,但还没有准备提交的修改。

如果我们想知道上次是怎么修改readme.txt 文件的,需要用git diff 命令:

git diff readme.txt

我们继续添加要提交代码

git add readme.txt

没有任何输出,这时候可以用 git status 查看一下当前仓库状态:

git status

提交代码

git commit -m "change code"

再用 git status 查看一下当前仓库状态:

git status
nothing to commit, working tree clean //当前没有需要提交的修改,而且,工作目录是干净的。

5.版本回退

如果我们继续对 readme.txt 文件进行修改,改成如下内容:

Git 好简单
Git Hello

然后添加并提交:

git add readme.txt
git commit -m "change code"

到目前为止,readme.txt 文件一共有三个版本被提交到了 Git 仓库里,我们可以用 git log 命令进行查看:

$ git log //查看历史记录
commit 3334ad3259b386yu59cdfb349e7df1d4d6gtyh73 (HEAD -> master)
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 12 11:16:13 2020 +0800
 
    change code
 
commit e475afc93c209a690c39c13a46716e8fa000c366
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 12 13:16:16 2020 +0800
 
    change code
 
commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 12 15:16:53 2020 +0800
 
    wrote a readme file

我们还可以加上 --pretty=oneline 参数:

git log --pretty=oneline

这样可以单行显示提交记录

好了,现在如果我们想把 readme.txt 文件退回到上一个版本,就可以使用 git reset 命令:

git reset --hard HEAD^ //HEAD表示当前版本,则HEAD^表示上一个版本,那么上上版本就是HEAD^^
HEAD is now at e423erf add distributed

这时候用 cat 命令查看一下 readme.txt 的内容:

cat readme.txt

果然 readme.txt 文件返回到了上一个版本。

我们现在想要回到最新的版本,还是使用 git reset 命令:

git reset

6.工作区和暂存区

工作区(Working Directory)

learngit 文件夹就是一个工作区。

版本库(Repository)

工作区有个隐藏目录 .git ,这个不算工作区,而是 Git 的版本库。

版本库里面的 index(stage) 文件叫暂存区,还有Git为我们自动创建的第一个分支 master ,以及指向 master 的一个指针叫做 HEAD。

6f05930287ae80e118202198b68564ed.png

前面我们提到过,如果我们想把文件添加到Git里面时,需要分两步:

第一步是用 git add 把文件添加进去,实际上就是把文件修改添加到暂存区。

第二步是用 git commit 提交更改,实际上就是把暂存区的所有内容提交到当前分支。(我们现在只有唯一一个分支 master,所以现在就是往 master 分支上提交更改)

我们可以实践一下:

在 readme.txt 文件中加上一行内容:

Git 好简单
Git Hello
test

然后在工作区新建一个 LICENSE 文本文档(任意内容)

使用两次 git add 命令分别把 readme.txt 和 LICENSE 都添加后,可以用 git status 命令查看一下

git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
 
    new file:   LICENSE
    modified:   readme.txt

现在,暂存区的状态就变成这样了:

8ed25418548d506594df3e5a83f1d82a.png

再使用 git commit 命令把暂存区的所有修改提交到分支:

git commit -m "understand how stage works"
[master e44328b] understand how stage works
 2 files changed, 2 insertions(+)
 create mode 100644 LICENSE

这时候的工作区就是干净的:

git status
On branch master
nothing to commit, working tree clean

这时候版本库就变成了这样:

b40f9c1a3134d06087926c15d9748b0f.png

7.管理修改

Git 如此的优秀是因为,Git 跟踪并管理的不是文件,而是修改。

我们对 readme.txt 文件进行修改:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes.

然后,添加:

git add readme.txt
git status

然后再修改 readme.txt 文件:

cat readme.txt 
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.

提交:

git commit -m "git tracks changes"
[master 542rerf] git tracks changes
 1 file changed, 1 insertion(+)

这时候我们查看一下状态:

git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
 
    modified:   readme.txt
 
no changes added to commit (use "git add" and/or "git commit -a")

我们可以发现,第二次修改并没有被提交。

因为在工作区的第一次修改被放入暂存区,准备提交;而在工作区的第二次修改并没有被放入暂存区,所以, git commit 命令只负责把暂存区的修改提交了。

提交后,我们可以用 git diff HEAD -- readme.txt 命令去查看工作区和版本库里面最新版本的区别:

git diff HEAD -- readme.txt 
diff --git a/readme.txt b/readme.txt
index 76d770f..a9c5755 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,4 +1,4 @@
 Git is a distributed version control system.
 Git is free software distributed under the GPL.
 Git has a mutable index called stage.
-Git tracks changes.
+Git tracks changes of files.

8.撤销修改

假如说你在 readme.txt 文件中添加了一行内容如下:

cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
My stupid boss still prefers SVN.

最后一行是万万不能让BOSS看到的,应该怎么撤销呢?

1) 没有 git add 之前

可以手动删除最后一行,手动把文件恢复到上一个版本的状态。然后再用 git checkout -- file 命令丢弃工作区的修改:

git checkout -- readme.txt //把readme.txt文件在工作区的修改全部撤销。

现在看一下 readme.txt 文件内容:

cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.

果然复原了。

2) git add了,但没有git commit

这时候的修改添加到了暂存区,但没有提交到分支,用 git status 查看一下:

git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
 
    modified:   readme.txt

这时候我们可以使用 git reset HEAD file 命令把把暂存区的修改撤销掉,重新放回工作区:

git reset HEAD readme.txt //git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区,HEAD表示最新版本。
Unstaged changes after reset:
M    readme.txt

现在再用 git status 查看一下:

git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
 
    modified:   readme.txt //暂存区是干净的,工作区有修改。

这时候再丢弃工作区的修改就OK了:

git checkout -- readme.txt //丢弃工作区的修改。
 
$ git status
On branch master
nothing to commit, working tree clean

终于大功告成了。

3) 既 git add 了,也 git commit 了

可以回退到上一个版本,见回退版本内容。

9.删除文件

在工作区即 learngit 文件夹下新建一个 test.txt 文件,并添加和提交到Git:

git add test.txt
 
$ git commit -m "add test.txt"
[master b84166e] add test.txt
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt

这时候可用 rm 命令删除:

rm test.txt

这时工作区和版本库就不一样了。

现在又分两种情况:

1) 确实要从版本库中删除该文件,那就用 git rm 命令删除,并且 git commit:

git rm test.txt
rm 'test.txt'
 
$ git commit -m "remove test.txt"
[master d46f35e] remove test.txt
 1 file changed, 1 deletion(-)
 delete mode 100644 test.txt

这时候文件就从版本库被删除了。

2) 文件被删错了。因为版本库里有,所以很好恢复:

git checkout -- test.txt //用版本库里的版本替换工作区的版本。

10.远程仓库准备工作

在开始这部分之前,我们需要自行注册GitHub账号。而且,因为你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要设置:

1) 创建SSH Key。在用户主目录下

898396f6a7dc0ad1ec51efd680e00b66.png

,看看有没有.ssh 目录,如果有的话,看此目录下有没有 id_rsa 和 id_rsa.pub 这两个文件,如果有,直接跳到下一步。如果没有,打开Git Bash,创建SSH

2) 登陆GitHub,打开"Account settings"

2a1103f5faae240c24d841a50c048609.png

然后点击"Add SSH and GPG Keys",再点击"New SSH Key"进行SSH Key 的创建,填上任意 Title ,把 id_rsa.pub 中的内容复制到Key文本框内:

b37ce3b8de8b01518440d136042ad8b3.png

11.添加远程库

现在我们已经在本地创建了一个Git仓库了,又想在GitHub上创建一个Git仓库,然后让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作。那么我们应该怎么做呢?

首先,登陆GitHub,在右上角找到“Create a new repo”按钮,创建一个新的仓库:

c1c29698b3eda06f251679db22b7a1d2.png

在Repository name填入 learngit (因为我已经创建完成了,所以提示此用户名存在)其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:

ad542c99f5eb1784911199b0e3ba0ac6.png

如上图所示我已经把本地仓库的内容推送到了GitHub上了,大家创建完以后应该是一个空的仓库。这时候我们可以在本地learngit仓库下运行命令:

git remote add origin git@github.com:HYY/learngit.git //“HYY”是我的GitHub的账户名,你需要填写你自己的账户名

添加后,远程库的名字就是 origin ,这是Git默认的叫法。

然后,我们就可以把本地库的所有内容推送到远程库上:

git push -u origin master 
Counting objects: 20, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (20/20), 1.64 KiB | 560.00 KiB/s, done.
Total 20 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), done.
To github.com:RFHzhj/learngit.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

使用 git push 命令,就是把当前分支 master 推送到远程。

因为远程库是空的,所以我们在第一次推送 master 分支时,要加上 -u 参数,Git不但会把本地的 master 分支内容推送的远程新的 master 分支,还会把本地的 master 分支和远程的 master 分支关联起来,在以后的推送或者拉取时就可以简化命令。

推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样:

a2ed64ae4bd5f95b91927911b54d9abf.png

从现在起,只要本地作了提交,就可以通过命令:

git push origin master

把本地 master 分支的最新修改推送至GitHub。现在,我们拥有了真正的分布式版本库。

12.从远程库克隆

我们的学习过程是先有了本地库,后有了远程库,然后再对远程库进行关联。

其实,我们大部分时候是先创建远程库,然后再从远程库克隆。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值