开始

Git 管理文件有 3 个关键区域:

Git版本控制

命令学习

1.设置账号

1
2
3
4
5
6
7
8
git config --global user.name "March" //用户名
git config --global user.email 1342454075@qq.com //邮箱

git config --global credential.helper store //保存
git config --global --list //查看

git config --global --unset user.email //删除邮箱(用户名类似)

2.管理文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
git init //初始化:在当前文件夹创建一个Git仓库

git status //查看工作区、暂存区的文件状态

echo "I am learning git.">test47.txt //写入内容到某一个文件,没有文件则创建,有文件则内容覆盖掉
type test47.txt //查看文件内容(WindowsCMD适用)

git add test47.txt//提交文件到暂存区

git commit -m "wrote a test file" //提交文件到本地仓库,并配上文字说明

git diff test47.txt //查看差异

git log //提交日志
git log --pretty=oneline //提交日志(写成一行)

git reset --hard HEAD^^ //强制回退版本

git reset --hard 6c4a24c8f //回退到指定版本id

git checkout -- test47.txt //丢弃工作区的修改:恢复到最近一次提交的状态,丢弃未暂存的本地修改

3.提交到 github

1
2
3
4
git remote add origin git@github.com:0xMarch-food/仓库名.git

git push -u origin master//提交到github master

4.创建分支

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
git checkout -b dev//创建并切换到新的dev分支
git switch -c dev //创建并切换新的dev分支

git branch -d dev //删除dev分支

git branch //查看已有的分支

git switch dev //切换到已有的dev分支
git checkout dev //切换到已有的dev分支

echo "这里写具体内容">>readme.txt //将文本内容添加到文件末尾

dir
ls //查看文件

git merge dev //合并某分支到当前的分支

git log --graph --pretty=oneline --abbrev-commit //以图形化(--graph)、简洁单行(--pretty=oneline)且缩短提交哈希值(--abbrev-commit)的方式查看历史提交,清晰展示分支的合并情况

关于.ssh 路径有中文如何解决?

问题:

1
2
3
4
5
6
7
8
9
10
惠普@LAPTOP-KU9E2OI5 MINGW64 /d/AllCode/Git/learngit (master)
$ ssh -T git@github.com
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Could not create directory '/c/Users/\\273\\335\\306\\325/.ssh' (No such file or directory).
Failed to add the host to the list of known hosts (/c/Users/\\273\\335\\306\\325/.ssh/known_hosts).
git@github.com: Permission denied (publickey).

解决办法:
(背景:因为.ssh 文件路径有中文,于是我把 ssh 文件转移到其他位置了 D:\AllCode\Blog\ssh_keys)

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
惠普@LAPTOP-KU9E2OI5 MINGW64 /d/AllCode/Git/learngit (master)
$ eval $(ssh-agent -s)
Agent pid 1038

惠普@LAPTOP-KU9E2OI5 MINGW64 /d/AllCode/Git/learngit (master)
$ ssh-add D:/AllCode/Blog/ssh_keys/id_rsa
Enter passphrase for D:/AllCode/Blog/ssh_keys/id_rsa:

惠普@LAPTOP-KU9E2OI5 MINGW64 /d/AllCode/Git/learngit (master)
$ ssh-add D:/AllCode/Blog/ssh_keys/id_rsa
Enter passphrase for D:/AllCode/Blog/ssh_keys/id_rsa:
Identity added: D:/AllCode/Blog/ssh_keys/id_rsa (sut060106@gmail.com)

惠普@LAPTOP-KU9E2OI5 MINGW64 /d/AllCode/Git/learngit (master)
$ ssh -i D:\\AllCode\\Blog\\ssh_keys\\id_rsa -T git@github.com
Warning: Identity file D:AllCodeBlogssh_keysid_rsa not accessible: No such file or directory.
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Could not create directory '/c/Users/\\273\\335\\306\\325/.ssh' (No such file or directory).
Failed to add the host to the list of known hosts (/c/Users/\\273\\335\\306\\325/.ssh/known_hosts).
Hi 0xMarch-food! You've successfully authenticated, but GitHub does not provide shell access.

惠普@LAPTOP-KU9E2OI5 MINGW64 /d/AllCode/Git/learngit (master)
$ git push -u origin master
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 16 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (9/9), 662 bytes | 132.00 KiB/s, done.
Total 9 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To github.com:0xMarch-food/learngit47.git
* [new branch] master -> master
branch 'master' set up to track 'origin/master'.

惠普@LAPTOP-KU9E2OI5 MINGW64 /d/AllCode/Git/learngit (master)
$

OK,成功了!

其他方法

  1. Vscode搭配GitHub使用:(https://www.bilibili.com/video/BV1Hkr7YYEh8/?vd_source=f3152a66a4d1b66273998c04bdc45764)
  2. 直接下载GitHub Desktop (目前个人感觉这个最简单!不需要命令,网络也不咋卡,如果觉得其他方法都很麻烦可以试试这个。)

记一次实际上传流程

首次提交:

  1. 先在github创建你的仓库;
  2. 先进入你要上传的代码文件根目录并初始化(仅首次需要);
  3. 关联远程 GitHub 仓库(仓库地址在GitHub仓库页面的Code按钮中获取);
  4. 添加所有现有文件(先add再commit);
  5. 推送到Github仓库。
1
2
3
4
5
6
7
8
cd yourProject 
git init
git remote add origin https://github.com/你的用户名/仓库名称.git

git add .
git commit -m "提交说明"

git push -u origin main

当你在本地修改了代码(例如新增功能、修复 bug),只需重复以下步骤来更新:

1
2
3
git add . # 添加所有修改过的文件(或指定文件,如 git add src/App.vue) 
git commit -m "描述本次修改:例如 新增登录页面" # 每次提交必须写说明
git push # 推送到远程仓库(首次推送后,后续可省略 -u origin main)

更新:如果你先从本地提交了内容1到Github仓库;后来又在其他地方更改过文件,比如直接在Github仓库添加了README.md文件,此时仓库从内容1变到了内容2;现在你又需要在本地增加新文件内容提交:

1
git pull origin master

这一步是先把github最新内容先同步到本地。