git使用说明

一、git常用基本命令

命令名称作用
git config --global user.name 用户名设置用户签名
git config --global user.email 邮箱设置用户 签名
git init初始化本地库
git status查看本地库状态
git add 文件名添加到暂存区,文件可以是 . 表示所有
git commit -m “日志信息” 文件名提交到本地库,文件名可省略,表示所有
git commit -am “日志信息”跳过 git add, 将所有已被跟踪的文件更改提交到版本库
git commit --amend -m “日志信息”改写上一次commit的提交信息
git reflog查看历史记录
git log查看历史版本以及作者
git reset --hard 版本号版本穿梭

二、git分支命令

命令名称作用
git checkout -b 分支名创建分支
git checkout 分支名切换分支,在本地化库后,连接远程库,clone、fetch、pull后切换master,会在本地生成一个master分支并关联到远程库的master分支
git checkout -b 本地分支名 origin/远程分支名
git checkout -b 本地分支名 --track origin/远程分支名
将远程仓库里指定的分支拉取到本地,并在本地创建一个分支与指定远程仓库分支关联起来,并切换到新建的本地分支中
git merge 分支名把指定分支合并到当前分支
git branch查看本地分支
git branch -r查看远程分支
git branch -a查看本地分支和远程分支
git branch -v查看分支提交的详细信息,查看每一个分支的最后一次提交
git branch -d 分支名删除分支
git branch -m new_branch_name重命名当前分支

三、git远程命令

命令名称作用
git remote add origin 远程地址g’i添加远程库,其中origin不是固定的,是远程库的别名,通常都是origin,辨识度高
git remote -v查看远程仓库
git remote rm 远程库名移除不需要的远程仓库
git clone 远程库地址克隆远程仓库所有内容
git clone -b <branch> <repository>克隆指定分支的存储库
git pullfetch默认远程仓库当前分支(origin/分支名)的代码,然后merge到本地分支
git pull 远程库名 分支名推送代码到远程库,在未关联时,git提示的使用方式
git push --delete origin old_branch_name删除远程分支
git fetch 远程库名获取远程分支
git fetch 远程库名 远程分支获取特定远程分支
git fetch origin release:dev基于 远程release分支 创建 本地dev分支 (但不会切换到该分支)
a.远程已有remote_branch分支并且已经关联本地分支local_branch且本地已经切换到local_branch

	git push

b.远程已有remote_branch分支但未关联本地分支local_branch且本地已经切换到local_branch

	git push -u origin remote_branch

c.远程没有remote_branch分支并,本地已经切换到local_branch

	git push origin local_branch:remote_branch



git fetch origin master:tmp 
//在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
git diff tmp 
//来比较本地代码与刚刚从远程下载下来的代码的区别
git merge tmp
//合并temp分支到本地的master分支
git branch -d temp
//如果不想保留temp分支 可以用这步删除

三、git删除历史版本、保留当前状态

1、创建并切换到lastest_branch分支

git checkout --orphan latest_branch

2、添加所有文件

git add -A

3、提交更改

git commit -am "删除历史版本记录,初始化仓库"

4、删除分支

git branch -D master

5、将当前分支重命名

git branch -m master

6、强制更新存储库

git push -f origin maste

四、远程分支重命名(默认本地分支与远程分支同名)

1、重命名本地分支

git branch -m new_branch_name

2、删除远程分支

git push --delete origin old_branch_name

3、推送到新命名的远程分支

git push origin new_branch_name

4、关联修改后的本地分支与远程分支

git branch --set-upstream-to origin/new_branch_name

五、冲突说明

合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。git无法替我们决定使用哪一个。必须人为决定新代码内容

原本master分支txt内容

111111
222222

修改master分支txt内容

1111111  master
2222222

修改从原本master分支分出来的hot-fix分支的txt内容

111111
222222 hot-fix

当修改后的master分支和hot-fix分支合并时,会报错

会显示 (master|MERGING)

<<<<<<<< HEAD
1111111  master
2222222
========
111111
222222 hot-fix
>>>>>>>> hot-fix

将报错文件手动修改

1111111  master
222222 hot-fix

合并分支后只修改了当前分支

所以平时要养成先拉取再推送

六、不相关的本地库与远程库合并

当本地初始化本地库中有文件想将库中文件push到远程库的正确做法

  1. git remote add origin 远程仓库地址
  2. git pull origin master --allow-unrelated-histories (允许不相关历史提交,并强制合并)
  3. git branch --set-upstream-to=origin/master master
  4. git push

git 本地新建一个分支后,必须要做远程分支关联。如果没有关联, git 会在下面的操作中提示你显示的添加关联。关联目的是如果在本地分支下操作: git pull , git push ,不需要指定在命令行指定远程的分支. 推送到远程分支后, 你只要没有显示指定,git pull 的时候,就会提示指定特定分支。

解决:
使用git branch --set-upstream-to=origin/分支名称;或使用git push -u origin master指定远程仓库名和分支名推送至远程仓库,后续只需要使用git push推送至远程仓库

七、git pull说明

git pull 本质就是: git fetch + git merge

本地通过 git clone 命令,将远程仓库拉取到本地仓库,本地仓库的 origin/master 的内容,是远程仓库 master 的一个副本;同时,本地仓库的 master 与 origin/master 内容相同

执行git fetch 只会改变本地仓库的 origin/master 的内容,不会对本地仓库的 master 分支内容有影响。

执行 git merge origin/master ,就会更新本地仓库的 master 分支的内容。

八、远程分支

添加远程分支,其中origin不是固定的,是远程库的别名,通常都是origin,辨识度高

git remote add origin https://gitee.com/sea-z/hello-git.git

远程分支在本地是只读的,在本地只能查看远程分支

git branch -r  #只产看远程分支
git branch -a  #查看所有分支,包括本地和远程

远程分支存放位置

.git/refs/remotes/origin/

关于origin/master

本地仓库的 origin/master 的内容,是远程仓库 master 的一个副本

九、git clone

克隆远程仓库所有内容

git clone https://gitee.com/sea-z/hello-git.git

克隆指定分支的存储库

git clone -b <branch> <repository>

clone命令相当于下面指令合集,但不完全相同,最最最不同的就是clone不需要连接远程库,clone是不需要权限的,clone在没有初始化本地库时就可以使用,使用clone会在当前目录生成一个与远程库名相同的文件夹,文件夹里有.git文件,而使用指令合集必须先初始化本地库

通俗易懂的说就是clone就是下载,把整个库下载在一个文件夹里,文件夹的名字是远程库名

git remote add origin https://gitee.com/sea-z/hello-git.git
git fetch
git checkout master

指令合集模拟clone文件.git生成,旨在说明clone后的在本地的.git是本地的,是生成,不是从远程库里“下载”的

# 初始化本地库
$ git init  
Initialized empty Git repository in E:/Git/git-space/git-demo1/.git/

# 添加远程库
$ git remote add origin https://gitee.com/sea-z/hello-git.git

# 抓取
$ git fetch
remote: Enumerating objects: 29, done.
remote: Counting objects: 100% (29/29), done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 29 (delta 8), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (29/29), 5.43 KiB | 57.00 KiB/s, done.
From https://gitee.com/sea-z/hello-git
 * [new branch]      master     -> origin/master

# 看一眼分支,此时还是没有本地分支的信息
$ git branch -a
  remotes/origin/master

# 切换到master时,自动生成master,并跟踪远程master分支
$ git checkout master
Already on 'master'
branch 'master' set up to track 'origin/master'.


clone 命令默认会根据远程默认分支建立本地分支,确认远程默认分支为 master 后,clone 命令接着建立本地 master 分支,并和远程 master 分支做关联。

如果没有初始化本地库或者没有添加远程分支,clone没有权限的远程仓库,是没有远程分支

git checkout master 完成了两项任务

  1. 建立本地分支master
  2. 本地master跟踪远程master

当要修改远程仓库的其他分支时,git checkout dev同样完成了上述两项任务,这样就可以在本地分支dev下修改远程dev分支

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值