Git基本操作

Git 常用的是以下 6 个命令:git clone、git push、git add 、git commit、git checkout、git pull

  • 工作区:就是你在电脑里能看到的目录。

  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。

  • 本地仓库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的本地仓库。

  • 远程仓库:远程 Git 的版本库。

    图片git配置查看

  • 说明

    • workspace:工作区
    • staging area:暂存区/缓存区
    • local repository:版本库或本地仓库
    • remote repository:远程仓库
  • 使用

    • 在工作目录下,右键点击Git Bash Here 进入命令窗口 图片git命令窗口图片git命令窗口

创建仓库

git init

创建本地仓库命令,一般项目开发在公司Git仓库管理平台创建仓库,项目成员使用git clone 创建本地仓库。

命令格式:

$ mkdir demo01
$ cd demo01/
$ git init
Initialized empty Git repository in D:/workspace/Yuegao/git_pro/Git_Test_02/demo01/.git/

git clone

项目成员使用git clone 拷贝一个 Git 仓库到本地。

命令格式

$ git clone http://172.16.214.15:3000/wangyf/GIT_Test_flow_01.git

图片git_clone

分支管理

几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。

常用命令:git branch、git checkout 、git merge

创建分支命令:

git branch (branchname)

切换分支命令:

git checkout (branchname)

当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容。

合并分支命令:

git merge 

git branch

列出分支基本命令:

git branch

图片git_branch

创建分支命令:

git branch br_test_3

以当前分支为基础创建br_test_3分支 图片git_branch

删除分支命令:

git branch -d br_test_3

图片git_branch

git checkout

切换分支命令:

git checkout br_test_1

从develop分支切换至br_test_1分支 图片git_branch

创建并切换分支命令:

git checkout -b br_test_3 develop

以develop分支为基础创建br_test_3分支,并切换至br_test_3分支 图片git_branch

git merge

一旦某分支有了独立内容,你终究会希望将它合并回到你的主分支。 你可以使用以下命令将任何分支合并到当前分支中去:

合并分支命令:

git merge br_test_1

如下所示,将br_test_1分支的代码合并至develop分支 图片git_branch图片git_branch图片git_branch

合并冲突: 合并并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改。

如下所示,develop分支和br_test_1分支修改了同一处代码,合并发生冲突。 修改冲突部分的代码,提交。 图片git_branch图片git_branch图片git_branch图片git_branch

提交与修改

Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。

常用命令:git add、git status、git diff、git commit

其他命令:git reset

git add

git add 命令可将该文件添加到暂存区。

添加一个或多个文件到暂存区:

git add [file1] [file2] ...

添加指定目录到暂存区,包括子目录:

git add [dir]

添加当前目录下的所有文件到暂存区:

git add .

git status

git status 命令用于查看在你上次提交之后是否有对文件进行再次修改。

git status

图片git_status

通常我们使用 -s 参数来获得简短的输出结果:

git status -s

图片git_status

上图中MM表示,修改了main.py,添加到缓存后,又修改了main.py

git diff

git diff 命令比较文件的不同,即比较文件在暂存区和工作区的差异。

git diff 命令显示已写入暂存区和已经被修改但尚未写入暂存区文件的区别。

git diff

图片git_diff

如上图所示,git status 显示你上次提交更新后的更改或者写入缓存的改动, 而 git diff 一行一行地显示这些改动具体是什么。

git commit

git commit 命令将暂存区内容添加到本地仓库中。

提交暂存区到本地仓库中:

git commit -m [message]

[message] 可以是一些备注信息。

图片git_commit

git commit 

填写详细的备注信息。

命令执行后会进入vim备注编辑界面,“i”键进入编辑,“Esc”退出编辑,“:wq”+“Enter”保存并退出。 图片git_commit图片git_commit图片git_commit

git reset

git reset 命令用于回退版本,可以指定退回某一次提交的版本。

git reset 命令语法格式如下:

git reset [--soft | --mixed | --hard] [HEAD]

--mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。

git reset  [HEAD] 

图片git_reset

--soft 参数用于回退到某个版本:

git reset --soft HEAD

$ git reset --soft HEAD~3 # 回退上上上一个版本

--hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交:

git reset --hard HEAD

$ git reset –hard HEAD~3  # 回退上上上一个版本  
$ git reset –hard bae128  # 回退到某个版本回退点之前的所有信息。 
$ git reset --hard origin/master    # 将本地的状态回退到和远程的一样 

注意:谨慎使用 –hard 参数,它会删除回退点之前的所有信息。

HEAD 说明:

  • HEAD 表示当前版本

  • HEAD^ 上一个版本

  • HEAD^^ 上上一个版本

  • HEAD^^^ 上上上一个版本

  • 以此类推...

可以使用 ~数字表示

  • HEAD~0 表示当前版本

  • HEAD~1 上一个版本

  • HEAD^2 上上一个版本

  • HEAD^3 上上上一个版本

  • 以此类推...

git reset HEAD 命令用于取消已缓存的内容。

如图所示,编辑mo.py和tool.py提交至缓存区,取消mo.py缓存内容,commit只会提交tool.py的内容。

图片git_reset图片git_reset

标签管理

如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。

比如说,我们想为我们的 XXXX 项目发布一个"1.0.0"版本。 我们可以用 git tag -a v1.0.0 命令给最新一次提交打上(HEAD)"v1.0.0"的标签。

-a 选项意为"创建一个带注解的标签"。 不用 -a 选项也可以执行的,但它不会记录这标签是什么时候打的,什么人打的,也不会让你添加个标签的注解。

打标签命令:

git tag v1.2.0 
git tag -a v1.2.1 

图片git_reset

查看标签命令:

git tag 
git tag -n 

图片git_reset

标签推送至远程仓库命令:

git push origin V1.2.1

图片git_reset

远程操作

操作远程仓库 常用命令:git pull、git push

git pull

git pull 命令用于从远程获取代码并合并本地的版本。

git pull 其实就是 git fetch 和 git merge FETCH_HEAD 的简写。 命令格式如下:

git pull <远程主机名> <远程分支名>:<本地分支名>

将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。

git pull origin master:brantest

如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

git pull origin master

注意:开发过程中建议pull操作只用于 同一分支从远程分支同步代码 使用, 如需要合并两个不同分支,将两个分支的远程分支分别pull到本地,在本地进行合并。

git push

git push 命用于从将本地的分支版本上传到远程并合并。

git push <远程主机名> <本地分支名>:<远程分支名>

以下命令将本地的 feature/module_01 分支推送到 origin 主机的 feature/module_01 分支。

git push origin feature/module_01

图片git_push

Last Updated:
Contributors: wangyifan