0%

git常用命令

git常用命令,克隆、提交、创建分支、合并分支、克隆非master分支、拉取文件等等。

Git

项目开发流程

  1. 远程仓库(gitee)创建一个仓库,先不要初始化

  2. 在本地将远程仓库克隆下来,在此基础上进行开发。

    1. git clone 远程仓库的https地址
      
      #克隆下来后,
      #可在其中创建项目(若仅一个项目,建议将克隆下来的文件夹作为项目文件夹。若是大的工程,可在(克隆下来的文件夹)其中创建文件夹,作为项目文件夹)
      #或将开发好的项目拷贝至其中
      
      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

      3. 添加文件后,[提交](#pushori)代码(文件)到远程仓库。(参考后边的笔记)



      # 克隆远程仓库

      ```js
      //克隆远程仓库到本地(若是第一次需要输入gitee账户密码),远程仓库地址在gitee仓库的右上角获取(https)
      git clone https://gitee.com/qsdbl/cashier_system.git

      //进入克隆下来的项目
      cd 项目名

      //查看目前所处的分支,会发现克隆下来的分支是master分支。若要克隆其他分支见后边的笔记
      git branch

      //查看log
      git log

      //查看有变更的文件
      git status

      //显示文本差异
      git show

      //若进入项目后,无法执行上边的命令,可在项目中新建一个Git代码库(本地库)
      git init
      git config --global user.name "qsdbl-gs"
      git config --global user.email "113xxxxx51@qq.com"

      //查看远程仓库地址
      git remote -v

提交到远程仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//添加当前目录的所有文件到暂存区
git add .

//提交暂存区到本地仓库区(-m,添加备注)
git commit -m "test"

//推送所有分支到远程仓库(若推送失败,需要先使用pull命令拉取与合并远程新的提交文件。拉取命令见下边讲解)
git push origin --all


//扩展:
//若提交文件到gitee后,文件夹为灰色无法打开。原因是该文件夹内为一个git仓库(存在.git文件),需要将其转变成一个普通文件夹。操作如下:
//1.移除版本控制中的指定文件并在工作区中保留该文件(文件夹路径要准确)
git rm -r --cached "程序灰色的文件夹"

//2.在本地找到灰色文件夹中的.git文件手动删掉

//3.重新 git add , commit , push 提交代码

创建分支

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//查看本地分支
git branch

//查看远程分支
git branch -r

//查看所有分支
git branch -a


//创建(-b) 并 切换(checkout)分支
git checkout -b 分支名

//给分支 添加备注
git config branch.{分支名}.description 备注

//查看备注(查看全部可使用git br命令,但是需要安装依赖)
git config branch.{分支名}.description

案例:

将项目提交到远程库之后,新建一个login分支,登录功能开发完毕后再合并到master分支中。

1
2
3
4
5
6
7
//创建并切换到login分支
git checkout -b login

//查看目前所处的分支
C:\xxx> git branch
* login
master

分支合并

1
2
3
4
5
6
7
8
//查看当前所处的分支
git branch

//切换分支
git checkout 分支名

//普通模式合并分支,可添加备注。
git merge --no-ff -m "备注" 待合并的分支名

案例:

login分支合并到主分支

1
2
3
4
5
6
7
// 1.切换到master分支
git checkout master
// 2.合并分支到master
git merge --no-ff -m "备注" 待合并的分支名

//扩展:将本地login子分支推送到远程库
git push origin --all

克隆其他分支

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
//先使用git clone命令,克隆下master分支。然后使用cd命令进入项目

//查看所有的分支
git branch -a

//复制(克隆)其他分支
//使用git checkout -b创建并切换分支,后边跟远程仓库/分支名,将远程分支复制到新建的分支中,完成非master分支的克隆。建议两个分支名起一样的
git checkout -b 本地分支名 origin/远程仓库分支名

//克隆之后还需创建关联,见后边的笔记

//例如:克隆远程home分支
D:\workspace\vue\cashier_system>git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/home
remotes/origin/login
remotes/origin/master
remotes/origin/nav

D:\workspace\vue\cashier_system>git checkout -b home origin/home
Switched to a new branch 'home'
Branch 'home' set up to track remote branch 'home' from 'origin'.

D:\workspace\vue\cashier_system>git branch
* home
master


//重要:建立本地分支和远程分支的关联
git branch --set-upstream 本地分支名 远程主机名/远程分支名

//例如:
git branch --set-upstream home origin/home

//查看当前所处的分支
git branch

//切换到其他分支
git checkout 分支名

拉取文件

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
//使用git push命令推送失败时,需要先拉取与合并远程的最新提交文件
//git pull origin master 可略写为:git pull
git pull

//上边的命令,只能在 本地分支与远程分支 有关联的情况使用。若创建分支(或从远程复制)后,没有与远程仓库创建关联,就需要使用下边的命令进行拉取。(创建关联,见上边的“克隆其他分支”)
git pull <远程主机名> <远程分支名>:<本地分支名>

//例如:
git pull origin home:home

//扩展:远程仓库中的文件已被修改,且本地的文件也已修改,此时想pull操作
//有两种方案可选:1、保留本地的修改,与远程仓库合并。2、丢弃本地修改。

//方案1:
//备份当前工作区内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前工作区内容保存到Git栈中
git stash
//拉取远程仓库中的当前分支
git pull
//从Git栈中读取最近一次保存的内容,恢复工作区相关内容。同时,用户可能进行多次stash操作,需要保证后stash的最先被取到,所以用栈(先进后出) 来管理;pop取栈顶的内容并恢复
git stash pop
//其他命令:
//git stash list,显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
//git stash clear,清空Git栈

//方案2:(版本回退)
git reset --hard
git pull

文件恢复

文件已添加到暂存区(执行过git add .命令):

1
2
3
4
5
#查看要恢复的版本:
git log file_path

#恢复文件到指定版本(hash):
git checkout hash file_path

文件未添加到暂存区:

1
2
#文件处于untracked状态:
git checkout file_path
若图片不能正常显示,请在浏览器中打开

欢迎关注我的其它发布渠道