【Github】Git 简易教程

介绍

1.1 Why Git?

  • 用一个文件进行日期和版本号的迭代
  • 管理基于本文信息的文件:文本文件(.txt),脚本文件(.py)
  • 不擅长管理的文件:图片文件(.jpg),MS文档(.doc)

1.2 Git 安装

1. git-downloads: https://git-scm.com/downloads

2. 右侧会自动识别当前系统的最新版本,直接点击下载即可

 

3. introduction:./Git/ReleaseNotes.html

 

 

创建/修改 版本库

2.1 Repository

init(创建版本库)

1. 打开Terminal(Windows 的 git bash)

2. 切换路径

1 $ cd ~/Desktop/gitTUT
View Code

3. 添加用户 name 和用户 email

1 $ git config --global user.name "dongyu lin"
2 $ git config --global user.email "dongyulin@email.com"
View Code

4. 该路径下建立git 的管理文件 .git

1 $ git init
2 # Initialized empty Git repository in C:/Users/xxx/Desktop/gitTUT/.git/
View Code

此时文件夹中没有任何文件,所以返回告诉我们已经建立了一个空的git 管理库

 

add(添加文件管理)

1.1 查看文件夹中的所有文件(仅显式文件)

1 $ ls
View Code

1.2 查看文件夹中的所有文件(含隐藏文件,如.git)

1 $ ls -a
2 # ./  ../  .git/
View Code

2. 建立新的文件 main.py

1 $ touch main.py
View Code

3. 查看版本库的状态

 1 $ git status
 2 
 3 # 输出
 4 On branch master    #在master 分支
 5 
 6 No commits yet
 7 
 8 Untracked files:
 9   (use "git add <file>..." to include in what will be committed)
10         main.py    #main.py还没有加入到版本库中(unstaged,显示红色)
11 
12 nothing added to commit but untracked files present (use "git add" to track)
View Code

4.1 将文件main.py 添加至版本库

 1 $ git add main.py
 2 
 3 # 再次查看状态
 4 $ git status
 5 
 6 # 输出
 7 On branch master
 8 
 9 No commits yet
10 
11 Changes to be committed:
12   (use "git rm --cached <file>..." to unstage)
13         new file:   main.py    #版本库已识别 main.py(staged, 显示绿色)
View Code

4.2 一次性添加所有文件夹中未添加的文件

1 $ git add .
View Code

 

commit(提交改变)

1. 提交状态变更,并通过-m 自定义改变的信息

1 $ git commit -m "create main.py"
2 
3 # 输出
4 [master (root-commit) 32ba8cb] create main.py
5  1 file changed, 0 insertions(+), 0 deletions(-)
6  create mode 100644 main.py
View Code

 

流程图

 

2.2 log & diff

log(操作日志)

1. 查看log

1 $ git log
2 
3 # 输出
4 commit 32ba8cb21a13f46ac74b957aecc541ad6baa7303 (HEAD -> master)
5 Author: dongyu lin <dongyulin@email.com>
6 Date:   Mon Nov 30 02:58:58 2020 +0800
7 
8     create main.py    #创建文件的操作记录
View Code

2. 修改文件并查看log

 1 # main.py 中添加一行代码:a=1
 2 
 3 $ git status
 4 
 5 # 输出
 6 On branch master
 7 Changes not staged for commit:
 8   (use "git add <file>..." to update what will be committed)
 9   (use "git restore <file>..." to discard changes in working directory)
10         modified:   main.py    #文件已修改但并未提交(显示红色)
11 
12 no changes added to commit (use "git add" and/or "git commit -a")
View Code

3. 添加(add)修改

1 $ git add main.py
View Code

4. 提交(commit)修改

1 $ git commit -m "change a=1"
2 
3 #输出
4 [master 693ee47] change a=1
5  1 file changed, 1 insertion(+)    #提示文件有一处添加
View Code

5. 变更之后查看log

 1 $ git log
 2 
 3 # 输出
 4 commit 693ee47f323013129611ab00ceee77bf5787eec4 (HEAD -> master)
 5 Author: dongyu lin <dongyulin@email.com>
 6 Date:   Mon Nov 30 03:19:42 2020 +0800
 7 
 8     change a=1
 9 
10 commit 32ba8cb21a13f46ac74b957aecc541ad6baa7303
11 Author: dongyu lin <dongyulin@email.com>
12 Date:   Mon Nov 30 02:58:58 2020 +0800
13 
14     create main.py
View Code

 

diff:查看unstaged 状态的修改部分(还没add)与上个commit 的文件有何不同

 1 #上次提交的文件 a=1
 2 # 本次修改后未add 的文件 a=2 b=1
 3 
 4 $ git diff
 5 
 6 #输出
 7 diff --git a/main.py b/main.py
 8 index d25d49e..61ce15f 100644
 9 --- a/main.py
10 +++ b/main.py
11 @@ -1 +1,2 @@
12 -a = 1    #删除了 a=1
13 \ No newline at end of file
14 +a = 2    #添加了 a=2
15 +b = 1    #添加了 b=1
16 \ No newline at end of file
View Code

 

diff --cached:查看staged 状态的修改部分(已经add,还没commit)与上个commit 的文件有何不同

 1 $ git add .    #add 全部修改文件
 2 $ git diff --cached    #查看add之后的文件差异
 3 
 4 # 输出
 5 diff --git a/main.py b/main.py
 6 index d25d49e..61ce15f 100644
 7 --- a/main.py
 8 +++ b/main.py
 9 @@ -1 +1,2 @@
10 -a = 1
11 \ No newline at end of file
12 +a = 2
13 +b = 1
14 \ No newline at end of file
View Code

 

diff HEAD:同时查看unstaged 和staged 状态的修改部分与上个commit 的文件有何不同

 1 # 上次commit 的文件 a=1
 2 # 本次add过a=2 b=1,还没add过c=b
 3 
 4 $ git diff HEAD    #unstaged & staged
 5 
 6 # 输出
 7 diff --git a/main.py b/main.py
 8 index d25d49e..ac13cf6 100644
 9 --- a/main.py
10 +++ b/main.py
11 @@ -1 +1,3 @@
12 -a = 1
13 \ No newline at end of file
14 +a = 2
15 +b = 1
16 +c = b
17 \ No newline at end of file
View Code

 

比较

 1 $ git diff HEAD    #unstaged & staged
 2 
 3 # 输出
 4 diff --git a/main.py b/main.py
 5 index d25d49e..ac13cf6 100644
 6 --- a/main.py
 7 +++ b/main.py
 8 @@ -1 +1,3 @@
 9 -a = 1
10 \ No newline at end of file
11 +a = 2
12 +b = 1
13 +c = b
14 \ No newline at end of file
15 
16 $ git diff    #unstaged
17 
18 #输出
19 diff --git a/main.py b/main.py
20 index 61ce15f..ac13cf6 100644
21 --- a/main.py
22 +++ b/main.py
23 @@ -1,2 +1,3 @@
24  a = 2    # 前面没有+
25 \ No newline at end of file
26  b = 1    # 前面没有+
27 +c = b 
28 \ No newline at end of file
29 
30 $ git diff --cached    #staged
31 
32 # 输出
33 diff --git a/main.py b/main.py
34 index d25d49e..61ce15f 100644
35 --- a/main.py
36 +++ b/main.py
37 @@ -1 +1,2 @@
38 -a = 1
39 \ No newline at end of file
40 +a = 2
41 +b = 1
42 \ No newline at end of file
View Code

 

回到从前

3.1 reset(针对整个版本库)

commit --amend(添加修改至上次commit 的版本)

 1 $ touch 2.py    #创建文件
 2 $ git add 2.py    #添加文件
 3 
 4 $ git commit --amend --no-edit    #"--no-edit":不编辑,直接合并到上一个commit
 5 # 输出
 6 [master 6cfc14d] change 2
 7  Date: Mon Nov 30 03:47:46 2020 +0800
 8  2 files changed, 3 insertions(+), 1 deletion(-)
 9  create mode 100644 2.py
10 
11 $ git log --oneline    #"--oneline":每个commit 内容显示在一行
12 # 输出
13 6cfc14d (HEAD -> master) change 2    #添加过2.py文件的change 2
14 693ee47 change a=1
15 32ba8cb create main.py
View Code

reset(回到上个add)

 1 #main.py添加一行代码:d=4
 2 
 3 $ git add main.py
 4 
 5 $ git status -s
 6 # 输出
 7 M  main.py    #staged(显示绿色)
 8 
 9 $ git reset main.py
10 # 输出
11 Unstaged changes after reset:
12 M       main.py
13 
14 $ git status -s
15  M main.py    #unstaged(显示红色)
View Code

reset --hard HEAD(回到上个commit)

git指针

 

 

 

 每个 commit 都有自己的 id 数字号, HEAD 是一个指针, 指引当前的状态是在哪个 commit. 最近的一次 commit 在最右边, 我们如果要回到过去, 就是让 HEAD 回到过去并 reset 此时的 HEAD 到过去的位置.

 1 $ git log --oneline    #查看所有commit的id
 2 # 输出
 3 7f82abd (HEAD -> master) change 2
 4 693ee47 change a=1
 5 32ba8cb create main.py
 6 
 7 #HEAD 显示当前commit
 8 $ git reset --hard HEAD
 9 HEAD is now at 7f82abd change 2
10 
11 #HEAD 回到前一个commit
12 $ git reset --hard HEAD^
13 # 输出
14 HEAD is now at 693ee47 change a=1
15 
16 #HEAD 回到任意commit
17 $ git reset --hard 32ba8cb
18 # 输出
19 HEAD is now at 32ba8cb create main.py
20 
21 #查看log中的HEAD变更日志
22 $ git reflog
23 7f82abd (HEAD -> master) HEAD@{0}: reset: moving to 7f82abd
24 32ba8cb HEAD@{1}: reset: moving to HEAD
25 32ba8cb HEAD@{2}: reset: moving to 32ba8cb
26 693ee47 HEAD@{3}: reset: moving to HEAD
27 693ee47 HEAD@{4}: reset: moving to HEAD^
28 7f82abd (HEAD -> master) HEAD@{5}: reset: moving to HEAD
29 7f82abd (HEAD -> master) HEAD@{6}: commit (amend): change 2
30 6cfc14d HEAD@{7}: commit (amend): change 2
31 8036b1a HEAD@{8}: commit: change 2
32 693ee47 HEAD@{9}: commit: change a=1
33 32ba8cb HEAD@{10}: commit (initial): create main.py
View Code

 

3.2 checkout (针对单个文件)

 1 """
 2 create main.py
 3 创建main.py文件
 4 
 5 change a=1
 6 仅对main.py 文件
 7 a=1
 8 
 9 change 2
10 仅对main.py 文件
11 a=2
12 b=1
13 c=b
14 d=4
15 创建2.py 文件
16 
17 change 3
18 仅对2.py 文件
19 a=2
20 b=1
21 c=b
22 d=4
23 """
24 $ git log --oneline
25 # 输出
26 67b64b2 (HEAD -> master) change 3
27 7f82abd change 2
28 693ee47 change a=1
29 32ba8cb create main.py
30 
31 #仅main.py 文件回到change a=1 的状态
32 $ git checkout 693ee47 -- main.py    #此时main.py内容变为a=1
33 
34 $ git add main.py
35 $ git commit -m "back to change 1 and add commit for main.py"
36 # 输出
37 [master cbf7a0e] back to change 1 and add commit for main.py
38  1 file changed, 1 insertion(+), 4 deletions(-)
39 
40 $ git log --oneline
41 # 输出
42 cbf7a0e (HEAD -> master) back to change 1 and add commit for main.py    #此时并未改写change a=1,而是重新添加一个commit
43 67b64b2 change 3
44 7f82abd change 2
45 693ee47 change a=1
46 32ba8cb create main.py
View Code

 

分支管理

4.1 branch

之前我们说编辑的所有改变都是在一条主分支 master 上进行的. 通常我们会把 master 当作最终的版本, 而开发新版本或者新属性的时候, 在另外一个分支上进行, 这样就能使开发和使用互不干扰了

graph(查看分支内容)

 

1 $ git log --oneline --graph
2 # 输出
3 * cbf7a0e (HEAD -> master) back to change 1 and add commit for main.py
4 * 67b64b2 change 3
5 * 7f82abd change 2
6 * 693ee47 change a=1
7 * 32ba8cb create main.py
View Code

 

branch (创建和查看分支)

1 $ git branch dev    #创建dev分支
2 
3 $ git branch    #查看所有分支
4 # 输出
5   dev
6 * master    # *代表当前的HEAD所在的分支
View Code

 

checkout(移动到其他分支)

1 $ git checkout dev
2 # 输出
3 Switched to branch 'dev'
4 
5 $ git branch
6 # 输出
7 * dev    # HEAD指向dev分支
8   master
View Code

 

checkout -b(创建并移动到新的分支)

1 $ git checkout -b dev2
2 # 输出
3 Switched to a new branch 'dev2'
4 
5 $ git branch
6 # 输出
7   dev
8 * dev2    # HEAD 指向dev2 分支
9   master
View Code

 

merge(分支中的修改推送到master)

 1 """
 2 dev分支
 3 2.py中添加一行代码:change3 = 'dev'
 4 """
 5 $ git commit -am "change 3 in dev"    #"-am":add所有改变并commit
 6 # 输出
 7 [dev 50e43f0] change 3 in dev
 8  1 file changed, 2 insertions(+)
 9 
10 $ git checkout master    # 切换至master
11 # 输出
12 Switched to branch 'master'
13 
14 $ git merge dev    # 将 dev分支 merge到 master中
15 # 输出
16 Updating 47f167e..50e43f0
17 Fast-forward    # 默认fast-forward模式,不保留本次Merge的commit信息
18  2.py | 2 ++
19  1 file changed, 2 insertions(+)
20 
21 $ git log --oneline --graph    #log中没有保留dev中的commit
22 # 输出
23 * 50e43f0 (HEAD -> master, dev) change 3 in dev
24 * 47f167e back to change 1 and add comment for 1.py
25 * 904e1ba change 2
26 * c6762a1 change 1
27 * 13be9a7 create 1.py
28 
29 """
30 dev2分支
31 2.py中添加一行代码:change4 = 'dev2'
32 """
33 $ git commit -am "change 4 in dev2"
34 #  输出
35 [dev2 d6ae0fc] change 4 in dev2
36  1 file changed, 2 insertions(+), 1 deletion(-)
37 
38 $ git checkout master    #切换至master
39 # 输出
40 Switched to branch 'master'
41 
42 $ git merge --no-ff -m "keep merge info" dev2
43 # 输出
44 Merge made by the 'recursive' strategy.    #recursive模式保留分支中的commit信息
45  2.py | 3 ++-
46  1 file changed, 2 insertions(+), 1 deletion(-)
47 
48 $ git log --oneline --graph
49 # 输出
50 *   85dd1ec (HEAD -> master) keep merge info
51 |\
52 | * d6ae0fc (dev2) change 4 in dev2    #保留分支中的commit信息
53 |/
54 * 50e43f0 (dev) change 3 in dev
55 * 47f167e back to change 1 and add comment for 1.py
56 * 904e1ba change 2
57 * c6762a1 change 1
58 * 13be9a7 create 1.py
View Code

 

4.2 merge(处理分支冲突)

 如何处理 masterdev 同时修改后的 merge 冲突问题,比如:

  • master 中的 1.py 加上 # edited in master.
  • dev 中的 1.py 加上 # edited in dev.
 1 $ git checkout master
 2 $ git log --oneline    #master 中的log
 3 # 输出
 4 3d7796e (HEAD -> master) change 4 in master    #与dev不同
 5 47f167e back to change 1 and add comment for 1.py
 6 904e1ba change 2
 7 c6762a1 change 1
 8 13be9a7 create 1.py
 9 
10 $ git checkout dev
11 $ git log --oneline    #dev 中的log
12 # 输出
13 f7d2e3a (HEAD -> dev) change 3 in dev    #与master不同
14 47f167e back to change 1 and add comment for 1.py
15 904e1ba change 2
16 c6762a1 change 1
17 13be9a7 create 1.py
18 
19 $ git merge dev
20 # 输出
21 Auto-merging 1.py
22 CONFLICT (content): Merge conflict in 1.py
23 Automatic merge failed; fix conflicts and then commit the result.
View Code

merge devmaster 的时候,Git 发现 1.pymasterdev 中的版本不同,所以提示 merge 有冲突,具体的冲突 Git 已经在 1.py 文件中标注出来,打开文件就能看到(python自带的IDE打开)

1 a = 1
2 # I went back to change 1
3 <<<<<<< HEAD
4 # edited in master
5 =======
6 # edited in dev
7 >>>>>>> dev
View Code

此时,需要手动处理 1.py 中的冲突,将 HEAD 中的描述与 dev 中的描述合并起来

1 a = 1
2 # I went back to change 1
3 
4 # edited in master and dev
View Code

commit 现在的文件即可解决冲突

 1 $ git commit -am "solve conflict"
 2 # 输出
 3 [master 99ebe95] solve conflict
 4 
 5 $ git log --oneline --graph
 6 # 输出
 7 *   99ebe95 (HEAD -> master) solve conflict
 8 |\
 9 | * f7d2e3a (dev) change 3 in dev
10 * | 3d7796e change 4 in master
11 |/
12 * 47f167e back to change 1 and add comment for 1.py
13 * 904e1ba change 2
14 * c6762a1 change 1
15 * 13be9a7 create 1.py
View Code

 

 

 

4.3 rebase(处理分支冲突)

 

通过 rebase 使得 branch-AC3 吸纳了 branch-BC4 的更新,在 branch-Abranch-B 共享的分支中生成了新的 C3'

而通过 merge 方式生成的 C5 commint 仍旧在 branch-A 上面,因此只能在自己的分支中使用 rebase和别人共享的部分是不能使用的

 

如何处理 master 和 dev 同时修改后的 rebase 冲突问题,比如:

  • master 中的 1.py 加上 # edited in master.
  • dev 中的 1.py 加上 # edited in dev.
 1 $ git checkout master
 2 $ git log --oneline    #master 中的log
 3 # 输出
 4 3d7796e (HEAD -> master) change 4 in master    #与dev不同
 5 47f167e back to change 1 and add comment for 1.py
 6 904e1ba change 2
 7 c6762a1 change 1
 8 13be9a7 create 1.py
 9 
10 $ git checkout dev
11 $ git log --oneline    #dev 中的log
12 # 输出
13 f7d2e3a (HEAD -> dev) change 3 in dev    #与master不同
14 47f167e back to change 1 and add comment for 1.py
15 904e1ba change 2
16 c6762a1 change 1
17 13be9a7 create 1.py
18 
19 $ git merge dev
20 # 输出
21 Auto-merging 1.py
22 CONFLICT (content): Merge conflict in 1.py
23 Automatic merge failed; fix conflicts and then commit the result.
View Code
 
通过 rebase 合并 devmaster
 1 $ git rebase dev
 2 # 输出
 3 error: could not apply 3d7796e... change 4 in master
 4 Resolve all conflicts manually, mark them as resolved with
 5 "git add/rm <conflicted_files>", then run "git rebase --continue".
 6 You can instead skip this commit: run "git rebase --skip".
 7 To abort and get back to the state before "git rebase", run "git rebase --abort".
 8 Could not apply 3d7796e... change 4 in master
 9 Auto-merging 1.py
10 CONFLICT (content): Merge conflict in 1.py
View Code

 

Git 发现 1.pymasterdev 上的版本不同,因此提示 rebase 有冲突,详情打开 1.py 文件即可看到

1 a = 1
2 # I went back to change 1
3 <<<<<<< HEAD
4 # edited in dev
5 =======
6 # edited in master
7 >>>>>>> 3d7796e (change 4 in master)
View Code

 

此时 HEAD 停留在 rebase 模式上

1 $ git branch
2 # 输出
3 * (no branch, rebasing master)    # HEAD在这
4   dev
5   master
View Code

 

接下来打开 1.py 手动合并差异

1 a = 1
2 # I went back to change 1
3 
4 # edited in master and dev
View Code

 

rebase 现在的文件即可解决冲突,但是 master 的历史会被修改,因此千万不要在共享分支中使用 rebase

 1 $ git add 1.py
 2 
 3 $ git rebase --continue
 4 # 输出
 5 Successfully rebased and updated refs/heads/master.
 6 
 7 $ git log --oneline --graph
 8 # 输出
 9 * 7a70f12 (HEAD -> master) change 4 in master    # 这条 commit 原本的id=3d7796e, 所以 master 的历史被修改
10 * f7d2e3a (dev) change 3 in dev    # rebase 过来的dev commit
11 * 47f167e back to change 1 and add comment for 1.py
12 * 904e1ba change 2
13 * c6762a1 change 1
14 * 13be9a7 create 1.py
View Code

 

4.4 stash(临时修改)

通过 stash 能够将目前手里的工作放在一边分隔开来,再另外单独处理之前的任务

暂存 dev 分支的任务

 1 $ git checkout dev
 2 # 输出
 3 Switched to branch 'dev'
 4 
 5 """
 6 1.py中添加一行代码:# feel happy
 7 """
 8 
 9 $ git stash
10 # 输出
11 Saved working directory and index state WIP on dev: f7d2e3a change 3 in dev
12 
13 $ git status
14 # 输出
15 On branch dev
16 nothing to commit, working tree clean    # 干净得很
View Code

 

完成 boss 分支的任务

 1 $ git checkout -b boss
 2 # 输出
 3 Switched to a new branch 'boss'
 4 
 5 """
 6 1.py中添加一行代码:# lovely boss
 7 """
 8 
 9 $ git commit -am "job from boss"
10 # 输出
11 [boss 4ed34e8] job from boss
12  1 file changed, 4 insertions(+)
13 
14 $ git checkout master
15 # 输出
16 Switched to branch 'master'
17 
18 $ git merge --no-ff -m "merge boos job" boss
19 # 输出
20 Auto-merging 1.py
21 CONFLICT (content): Merge conflict in 1.py
22 Automatic merge failed; fix conflicts and then commit the result.
23 
24 """
25 冲突文件
26 a = 1
27 # I went back to change 1
28 <<<<<<< HEAD
29 
30 # edited in master and dev
31 
32 =======
33 # edited in dev
34 
35 # lovely boss
36 >>>>>>> boss
37 
38 修改为
39 a = 1
40 # I went back to change 1
41 
42 # edited in master and dev
43 
44 # lovely boss
45 """
46 
47 $ git commit -am "solve conflict"
48 # 输出
49 [master b218671] solve conflict
50 
51 $ git log --oneline --graph
52 # 输出
53 *   b218671 (HEAD -> master) solve conflict
54 |\
55 | * 4ed34e8 (boss) job from boss
56 * | 2d1961f change 4 in master
57 |/
58 * f7d2e3a (dev) change 3 in dev
59 * 47f167e back to change 1 and add comment for 1.py
60 * 904e1ba change 2
61 * c6762a1 change 1
62 * 13be9a7 create 1.py
View Code

 

恢复 dev 分支的任务

 1 $ git checkout dev
 2 # 输出
 3 Switched to branch 'dev'
 4 
 5 $ git stash list    # 查看stash 中的缓存
 6 # 输出
 7 stash@{0}: WIP on dev: f7d2e3a change 3 in dev    #stash 中有dev 的工作
 8 
 9 $ git stash pop    # 通过pop 来提取并继续工作
10 # 输出
11 On branch dev
12 Changes not staged for commit:
13   (use "git add <file>..." to update what will be committed)
14   (use "git restore <file>..." to discard changes in working directory)
15         modified:   1.py
16 
17 no changes added to commit (use "git add" and/or "git commit -a")
18 Dropped refs/stash@{0} (18f4cb0facb172080e905ce8d890bfe1baea3049)
19 
20 $ git status -s
21 # 输出
22  M 1.py    # 未add(显示红色)
View Code

 

Git指令集

 1 $ git --help
 2 
 3 # 输出
 4 usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
 5            [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
 6            [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
 7            [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
 8            <command> [<args>]
 9 
10 These are common Git commands used in various situations:
11 
12 start a working area (see also: git help tutorial)
13    clone             Clone a repository into a new directory
14    init              Create an empty Git repository or reinitialize an existing one
15 
16 work on the current change (see also: git help everyday)
17    add               Add file contents to the index
18    mv                Move or rename a file, a directory, or a symlink
19    restore           Restore working tree files
20    rm                Remove files from the working tree and from the index
21    sparse-checkout   Initialize and modify the sparse-checkout
22 
23 examine the history and state (see also: git help revisions)
24    bisect            Use binary search to find the commit that introduced a bug
25    diff              Show changes between commits, commit and working tree, etc
26    grep              Print lines matching a pattern
27    log               Show commit logs
28    show              Show various types of objects
29    status            Show the working tree status
30 
31 grow, mark and tweak your common history
32    branch            List, create, or delete branches
33    commit            Record changes to the repository
34    merge             Join two or more development histories together
35    rebase            Reapply commits on top of another base tip
36    reset             Reset current HEAD to the specified state
37    switch            Switch branches
38    tag               Create, list, delete or verify a tag object signed with GPG
39 
40 collaborate (see also: git help workflows)
41    fetch             Download objects and refs from another repository
42    pull              Fetch from and integrate with another repository or a local branch
43    push              Update remote refs along with associated objects
44 
45 'git help -a' and 'git help -g' list available subcommands and some
46 concept guides. See 'git help <command>' or 'git help <concept>'
47 to read about a specific subcommand or concept.
48 See 'git help git' for an overview of the system.
View Code

 

Github

Git:本地管理库

Github:在线管理库

5.1 GitHub 在线代码管理

1. 添加在线版本库 repository

 

 

2. 将本地管理库连接到在线管理库

 

 

3. 上传成功

 

4. 查看文件历史(commit)

 

5. 本地更新推送至 github

 1 """
 2 1.py添加一行代码:# happy github
 3 """
 4 $ git commit -am "change 5"
 5 # 输出
 6 [main b888fe8] change 5
 7  1 file changed, 1 insertion(+)
 8 
 9 $ git push -u origin main
10 # 输出
11 Enumerating objects: 5, done.
12 Counting objects: 100% (5/5), done.
13 Delta compression using up to 16 threads
14 Compressing objects: 100% (3/3), done.
15 Writing objects: 100% (3/3), 326 bytes | 326.00 KiB/s, done.
16 Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
17 To https://github.com/vincent-lin89/git-demo.git
18    2d1961f..b888fe8  main -> main
19 Branch 'main' set up to track remote branch 'main' from 'origin'.
View Code

 

 

参考资料

莫烦Python

https://mofanpy.com/tutorials/others/git/

官方文档

https://git-scm.com/about

XX.GIT

http://bramus.github.io/ws2-sws-course-materials/xx.git.html#/

Bitbucket

https://www.atlassian.com/git/tutorials

posted @ 2020-12-04 23:09  林東雨  阅读(199)  评论(0编辑  收藏  举报