跳转至

Git个人使用

建立工作区

设立项目文件夹

Bash
1
2
mkdir git-tutorial
cd git-tutorial          

注册账户[非必须]

(名字+邮箱)

Bash
1
2
3
git-tutorial git config --global user.email [email protected]               

git-tutorial git config --global user.name root-hbx   

tips:查看git本地仓库状态的命令

Bash
1
git status

这里需要说明一点,虽然这里的name+email并不会对你实际使用产生影响,但会在你Github Commit计算时产生问题

只有Github云端绑定的Email和Name 与 这里Git本地绑定的Email和Name完全一致时,才会计入Commit

Commit示意图:

alt text

初始化仓库

Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
  git-tutorial git init         
提示:使用 'master' 作为初始分支的名称。这个默认分支名称可能会更改。要在新仓库中
提示:配置使用初始分支名,并消除这条警告,请执行:
提示:
提示: git config --global init.defaultBranch <名称>
提示:
提示:除了 'master' 之外,通常选定的名字有 'main''trunk'  'development'。
提示:可以通过以下命令重命名刚创建的分支:
提示:
提示: git branch -m <name>
已初始化空的 Git 仓库于 /home/root-hbx/git-tutorial/.git/
➜  git-tutorial git:(master)  

一般工作流

创建文件

Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
vim daily.cpp
......

➜  git-tutorial git:(master)  cat daily.cpp
/*************************************************************************
    > File Name: daily.cpp
    > Author: amoscykl
    > Mail: [email protected] 
    > Created Time: 2024年02月09日 星期五 01时55分15秒
 ************************************************************************/

#include<iostream>
using namespace std;
int main()
{
    int a;
    cin >> a;
    cout<<a<<endl;
    return 0;
}
➜  git-tutorial git:(master)  

git add ( + project) => 提取到“暂存区”

Bash
1
2
  git-tutorial git:(master)  git add daily.cpp
➜  git-tutorial git:(master)  

git commit -m "your note" + project => 推送到“本地库”

Bash
1
2
3
4
5
  git-tutorial git:(master)  git commit -m "first" daily.cpp       
[master (根提交) 23e5ede] first
 1 file changed, 16 insertions(+)
 create mode 100644 daily.cpp
➜  git-tutorial git:(master) 

日志查询

简要LOG查询

Bash
1
2
3
4
  git-tutorial git:(master) git reflog      
23e5ede (HEAD -> master) HEAD@{0}: commit (initial): first
(END)  git-tutorial git:(master) 

复杂LOG查看

Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
  git-tutorial git:(master) git log   

commit 23e5ede535aeb1d63bf8edf07b19d980fab272e6 (HEAD -> master)
Author: root-hbx <[email protected]>
Date:   Fri Feb 9 02:01:55 2024 +0800

    first
(END)  git-tutorial git:(master) 

实例分析

准备工作

Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
cls
vim daily_1 / daily_2.cpp(此处只是为了示意,自行填充)
......

➜  git-tutorial git:(master)  ll
总计 12K
-rw-rw-r-- 1 root-hbx root-hbx 381  2月  9 02:09 daily_1.cpp
-rw-rw-r-- 1 root-hbx root-hbx 383  2月  9 02:10 daily_2.cpp
-rw-rw-r-- 1 root-hbx root-hbx 393  2月  9 01:56 daily.cpp
➜  git-tutorial git:(master)  cat daily_1.cpp
/*************************************************************************
    > File Name: daily_1.cpp
    > Author: amoscykl
    > Mail: [email protected] 
    > Created Time: 2024年02月09日 星期五 02时09分00秒
 ************************************************************************/

#include<iostream>
using namespace std;
int main()
{
    cout<<"hbx nb!"<<endl;
    return 0;
}
➜  git-tutorial git:(master) ✗ cat daily_2.cpp
/*************************************************************************
    > File Name: daily_2.cpp
    > Author: amoscykl
    > Mail: [email protected] 
    > Created Time: 2024年02月09日 星期五 02时09分44秒
 ************************************************************************/

#include<iostream>
using namespace std;
int main()
{
    cout<<"hbx shit!"<<endl;
    return 0;
}  git-tutorial git:(master)  

全部提交到暂存区

approach1:挨个处理

Bash
1
2
  git-tutorial git:(master)  git add daily_1.cpp
➜  git-tutorial git:(master)  git add daily_2.cpp

此时查看状态:

Bash
1
2
3
4
5
6
7
8
  git-tutorial git:(master)  git status         
位于分支 master
要提交的变更:
  (使用 "git restore --staged <文件>..." 以取消暂存)
    新文件:   daily_1.cpp
    新文件:   daily_2.cpp

➜  git-tutorial git:(master)  

approach2:git_add_dot添加该目录下所有子文件/子文件夹

Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
  git-tutorial git:(master)  cat daily_3.cpp
/*************************************************************************
    > File Name: daily_3.cpp
    > Author: amoscykl
    > Mail: [email protected] 
    > Created Time: 2024年02月09日 星期五 02时24分20秒
 ************************************************************************/

#include<iostream>
using namespace std;
int main()
{
    int hbx;
    cin >> hbx;
    cout<<hbx<<endl;
    return 0;
}  git-tutorial git:(master)  git add .        

此时查看状态:

Bash
1
2
3
4
5
6
7
8
9
  git-tutorial git:(master)  git status 
位于分支 master
要提交的变更:
  (使用 "git restore --staged <文件>..." 以取消暂存)
    新文件:   daily_1.cpp
    新文件:   daily_2.cpp
    新文件:   daily_3.cpp

➜  git-tutorial gt:(master)  

全部提交到暂存区

Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  git-tutorial git:(master)  git commit -m "commit 1" daily_1.cpp
[master ea892d4] commit 1
 1 file changed, 14 insertions(+)
 create mode 100644 daily_1.cpp
➜  git-tutorial git:(master)  git status                          
位于分支 master
要提交的变更:
  (使用 "git restore --staged <文件>..." 以取消暂存)
    新文件:   daily_2.cpp
    新文件:   daily_3.cpp


➜  git-tutorial git:(master)  git commit -m "commit 2" daily_2.cpp
[master 61e9b3c] commit 2
 1 file changed, 14 insertions(+)
 create mode 100644 daily_2.cpp
➜  git-tutorial git:(master)  git status                          
位于分支 master
要提交的变更:
  (使用 "git restore --staged <文件>..." 以取消暂存)
    新文件:   daily_3.cpp


➜  git-tutorial git:(master)  git commit -m "commit 3" daily_3.cpp
[master 9fdf6a0] commit 3
 1 file changed, 16 insertions(+)
 create mode 100644 daily_3.cpp
➜  git-tutorial git:(master) git status                          
位于分支 master
无文件要提交,干净的工作区
➜  git-tutorial git:(master) 

查看LOG

git reflog

Bash
1
2
3
4
5
9fdf6a0 (HEAD -> master) HEAD@{0}: commit: commit 3
61e9b3c HEAD@{1}: commit: commit 2
ea892d4 HEAD@{2}: commit: commit 1
23e5ede HEAD@{3}: commit (initial): first
(END)

git log

Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
commit 9fdf6a073dfc395c0365b1ff4d3877633918c670 (HEAD -> master)
Author: root-hbx <[email protected]>
Date:   Fri Feb 9 02:28:52 2024 +0800

    commit 3

commit 61e9b3ca30464dc4a63b73c0ce3f64a396db4895
Author: root-hbx <[email protected]>
Date:   Fri Feb 9 02:28:35 2024 +0800

    commit 2

commit ea892d4b39a84ec7635e7213f952921788a82a9f
Author: root-hbx <[email protected]>
Date:   Fri Feb 9 02:28:08 2024 +0800

    commit 1

commit 23e5ede535aeb1d63bf8edf07b19d980fab272e6
Author: root-hbx <[email protected]>
Date:   Fri Feb 9 02:01:55 2024 +0800

    first
(END)