1、git工作流程图
git clone(克隆):从远程仓库中克隆代码到本地仓库
git add(添加):将工作区修改的代码添加到缓存区
git commit(提交):将缓存区代码提交到本地仓库
git push(推送):将本地仓库中的代码推送到远程仓库
git pull(拉取):拉取远程仓库的代码到工作区
2、初始化一个本地仓库并推送到远程仓库
2.1、初始化本地仓库
我们创建一个文件夹,使用git init命令创建一个本地仓库。
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first
$ git init
Initialized empty Git repository in C:/Users/lng/Desktop/first/.git/
2.2、在工作区写代码
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first (master)
$ vim main.cpp
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first (master)
$ cat main.cpp
#include <stdio.h>
int main()
{
printf("hello word");
return 0;
}
创建一个文件,然后写相应代码。此时文件所处的位置就是工作区。
可以看下文件状态:Untracked(未跟踪)
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first (master)
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
main.cpp
nothing added to commit but untracked files present (use "git add" to track)
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first (master)
2.3、将文件添加到暂存区
代码没有问题后,接下来就是使用git add命令将文件从工作区添加到暂存区。
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first (master)
$ git add main.cpp
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first (master)
$
此时,代码已经添加到了暂存区
可以看到,文件状态已经发生了变化
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first (master)
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: main.cpp
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first (master)
$
2.4、提交文件到本地仓库
使用git commit命令就可以将暂存区的文件提交到本地仓库
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first (master)
$ git commit -m "测试"
[master (root-commit) 5e9c79b] 测试
1 file changed, 7 insertions(+)
create mode 100644 main.cpp
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first (master)
$ git status
On branch master
nothing to commit, working tree clean
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first (master)
$
可以通过git log命令查看提交日志
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first (master)
$ git log
commit 5e9c79b253395cfb43df636e58e3cf5af85a5277 (HEAD -> master)
Author: lng <XXXXXXXXX@qq.com>
Date: Fri Jan 7 11:58:14 2022 +0800
测试
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first (master)
2.5、将本地仓库推送到远程仓库
首先我们需要有一个代码托管中心(git服务端)。常用的有以下三种:
github:这个就不过多介绍了,上面有大量优秀的源代码。但是由于服务器在国外,所以在国内访问网速不太好。
gitlab:可以直接在你的本机安装部署,国内大部分公司都是用的这个,是在局域网环境下使用的。但是这个是比较耗费内存和cpu资源的,如果你的电脑性能一般,建议不要安装。
gitee:是国内的一个Git 托管服务,相比于github,访问速度就快很多。
下面的例子就是使用的gitee
我们在gitee上创建一个远程仓库
使用git remote命令创建到远程仓库的连接(这样推送的时候就能知道是推送到哪一个远程仓库)
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first (master)
$ git remote add origin https://gitee.com/lingpe/test001.git
使用git push命令将本地仓库代码推送到远程仓库
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first (master)
$ git push origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 12 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 281 bytes | 281.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.2]
To https://gitee.com/lingpe/test001.git
* [new branch] master -> master
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first (master)
$
推送成功后,我们就能在远程仓库看到我们推送的代码了。
3、从远程仓库克隆到本地仓库
远程仓库中已经有我们的代码了。如果本地代码不小心删除了,就可以使用git clone命令从远程仓库拉取最新代码。
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first
$ ls
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first
$ git clone https://gitee.com/lingpe/test001.git
Cloning into 'test001'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first
$ cd test001/
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first/test001 (master)
$ ls
main.cpp
我们修改代码后,重新提交,推送。
使用git diff命令可以看到我们本次修改的内容。我们克隆下来的代码,已经与远程仓库建立了连接,所以再次推送时,就不用执行git remote命令了,直接使用git push进行推送。
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first/test001 (master)
$ git diff master
diff --git a/main.cpp b/main.cpp
index 6340de9..5e81f0d 100644
--- a/main.cpp
+++ b/main.cpp
@@ -2,6 +2,6 @@
int main()
{
- printf("hello word");
+ printf("this is first code");
return 0;
-}
\ No newline at end of file
+}
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first/test001 (master)
$ git add main.cpp
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first/test001 (master)
$ git commit -m "修改代码"
[master d55cd83] 修改代码
1 file changed, 2 insertions(+), 2 deletions(-)
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first/test001 (master)
$ git push origin master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 329 bytes | 329.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.2]
To https://gitee.com/lingpe/test001.git
5648826..d55cd83 master -> master
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/first/test001 (master)
$
远程仓库的代码已经成功修改
4、拉取远程仓库代码
在开发过程中,同分支上如果别人对远程仓库的代码进行了修改。我们就可以使用git pull拉取远程代码,就可以将别人最新修改的代码同步到我们的本地工作区。