Git知识学习

Git 知识整理学习记录

git clone 仓库

  • 从 GitHub 克隆项目到本地
1
git clone  https://github.com/Gzbox/react-router-v4-demo-newest.git

git 分支管理

查看分支

  • 查看本地分支,使用 git branch 命令
1
2
3
4
// *标识的是你当前所在的分支。

git branch
* master
  • 查看远程分支
1
git branch -r
  • 查看所有分支
1
git branch -a

本地创建分支

1
2
3
git branch [branch name]

// 例子: git branch dz-dev

切换到新的分支

1
2
3
4
5
6
git checkout [branch name]

// 例子:
// git checkout master
// Switched to branch 'master'
// Your branch is up to date with 'origin/master'.

创建同时切换分支

1
2
3
4
5
6
git checkout -b [branch name]

// 例子:git checkout -b [branch name] 的效果相当于以下两步操作:
// git branch [branch name]
// git checkout [branch name]

将新分支推送到远程

1
2
3
git push origin [branch name]

// 例子:git push origin dz-dev

删除本地分支

1
2
3
git branch -D [branch name]

// 例子:git branch -D dz-dev

删除远程分支

1
2
3
4
// 分支名前的冒号代表删除
git push origin :[branch name]

// 例子:git push origin :dz-dev

本地分支重命名(还没有推送到远程)

1
2
3
4
// oldName:当前分支名称  newName:将要命名的名称
git branch -m oldName newName

// 例子:git branch -m view_branch dev

远程分支重命名 (已经推送远程-假设本地分支和远程对应分支名称相同)

  • a:重命名远程分支对应的本地分支
1
git branch -m oldName newName
  • b:删除远程分支
1
git push --delete origin oldName
  • c:上传新命名的本地分支
1
git push origin newName
  • d:把修改后的本地分支与远程分支关联
1
git branch --set-upstream-to origin/newName

远程、本地分支的同步

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 何谓同步远程分支?有两种情况:
// 1.本地有新分支,远程仓库没有。
// 2.远程仓库有新分支,本地没有。
// 3.本地删除了分支,远程也想删除。
// 4.远程删除了分支,本地也想删除。

// 这在之前我先介绍几个命令

1.将某个远程主机的更新,全部取回本地:git fetch

2.查看远程分支:git branch -a

3.查看本地分支:git branch

4.切换分支:git checkout 分支

  • 远程仓库有新分支,本地没有

假如我本地有个 git 仓库,别人推送了一个新分支到远程仓库,我要获取这个分支到本地,该怎么办?

1
2
3
4
5
6
1.首先将某个远程主机的更新,全部取回本地:git fetch

2.再次查看远程分支:git branch -a 发现远程的分支已经可以看见了。

3.然后拉取远程分支到本地:git checkout -b 远程分支名 origin/远程分支名

  • 本地删除了分支,远程也想删除

假如我在本地想要删除某个分支,我也想把远程仓库的这个分支也要删掉怎么办?

1
2
3
4
5
1.使用git branch -d 分支名来删除本地分支。
2.使用git push origin -d 分支名直接来删除远程分支。在次使用git branch -a,发现分支已经不存在了。
// 或者
1.使用git branch -d 分支名来删除本地分支。
2.最简单的解决办法就是直接到gitlab/github进行删除.
  • 远程删除了分支,本地也想删除

假如我直接到 gitlab/github 删除了某个分支,我在本地使用 git branch -a 查看远程分支,依然存在并且可以切换使用。我本地也想把远程分支记录删除怎么办?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 这在之前我先介绍几个命令
1.查看远程分支和本地分支的对应关系:git remote show origin
2.删除远程已经删除过的分支:git remote prune origin


// 具体操作如下:

1.git branch -a //查看远程分支,红色的是本地远程远程分支记录。

2.执行下面命令查看远程仓库分支和本地仓库的远程分支记录的对应关系:
git remote show origin

3.会看到:
refs/remotes/origin/远程仓库已经删除的分支名 stale (use 'git remote prune' to remove)

其中:

Local refs configured for 'git push': //命令下面的分支是本地仓库的远程分支记录中仍存在的分支,但远程仓库已经不存在。

4.输入git remote prune origin //来删除远程仓库已经删除过的分支

5.验证 git branch -a //此时可以看到本地远程分支记录已经和远程仓库保持一致了。

Git 操作报错的解决办法(window)

1
2
3
4
5
6
7
8
// 报错:
// remote: HTTP Basic: Access denied
// fatal: Authentication failed for 'https://git.genecast.com.cn/ding.zhen/detection-and-tracking.git/'
// 解决办法(执行下面命令)

git config --system --unset credential.helper
// 然后输入Git远程服务器的用户名/新密码。