1.Git常用命令

 

1.Git常用命令

1
2
3
4
5
// 设置用户姓名
git config --global user.name [username]

// 设置用户邮箱
git config --global user.email [email]
1
2
3
4
5
// 查看用户姓名
git config --global user.name

// 查看用户邮箱
git config --global user.email
1
2
3
4
5
6
7
8
9
10
11
// 初始化本地库
git init

// 查看本地库状态
git status

// 添加到暂存区
git add 文件名

// 提交到本地库
git commit -m "message" 文件名
1
2
3
4
5
// 查看历史记录
git reflog

// 查看版本详细信息
git log

2.代码回退

(1) 已经 git add 到暂存区的文件,想回退到工作区

1
git restore --staged [file]

(2) 还没有 git add 到暂存区,向放弃之前的工作区的本地修改

1
git restore [file]

(3) 已经 git commit了,想回到以前的版本

Git 切换版本, 底层其实是移动 HEAD 指针

1
git reset --hard [版本号]

3.Git分支

在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来, 开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)

使用分支的优点:

  • 同时并行推进多个功能开发,提高开发效率。

  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

1
2
3
4
5
6
7
8
9
10
11
// 查看分支
git branch -v

// 创建分支
git branch [分支名]

// 切换分支
git checkout [分支名]

// 把指定的分支合并到当前分支上
git merge [分支名]

master、 hot-fix 其实都是指向具体版本记录的指针。当前所在的分支,其实是由 HEAD 决定的。所以创建分支的本质就是多创建一个指针。

HEAD 如果指向 master,那么我们现在就在 master 分支上。

HEAD 如果执行 hotfix,那么我们现在就在 hotfix 分支上。

所以切换分支的本质就是移动 HEAD 指针。

4.Git 团队协作机制

1.团队内协作

1
2
3
4
5
[本地库] <-- pull -- [远程库]

[本地库] -- push --> [远程库]

[本地库] <-- clone -- [远程库]

2.跨团队协作

A拥有远程库1,B想协助开发远程库1

1
2
3
4
5
6
7
8
9
10
11
12
13
B: [远程库1] -- fork --> [远程库2]

B: [本地库2] <-- clone -- [远程库2]

B: [本地库2] -- push --> [远程库2]

B: Pull Request --> A

A: audit(approve or deny)

A: merge -> [远程库1]

A: [本地库1] <-- pull -- [远程库1]

5.远程仓库操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 查看当前所有远程仓库地址别名
git remote -v

// 为远程仓库地址命名
git remote add [remote_repo_name] [remote_repo_url]

// 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并
git pull [remote_repo_name] [remote_branch]

// 推送本地分支上的内容到远程仓库
git push [remote_repo_name] [local_branch]

// 将远程仓库的内容克隆到本地
git clone [remote_repo_url]

6.拉去远程仓库的分支到本地

例如远程仓库有 hot-fix 分支,本地没有,本地想拉取 hot-fix 分支,并合并到本地的 dev 分支

1
2
3
4
5
6
7
8
9
10
11
12
// 查看所有分支
git branch -a
// 本地新建 hot-fix 分支,并与远程仓库的 hot-fix 分支关联
git checkout -b hot-fix origin/hot-fix
// 切换到 hot-fix 分支
git chekcout hot-fix
// 更新 hot-fix 分支
git pull origin hot-fix
// 切换到 dev 分支
git checkout dev
// 将 hot-fix 分支的内容合并到 dev 分支
git merge hot-fix