您的位置:首页 > 运维架构 > Shell

gitbash常用命令解析

2020-07-14 06:27 567 查看

gitbash常用命令

一、常用指令

  1. 配置全局账号
git config --global user.name “xxx”
git config --global user.email "github注册邮箱"
  1. 生成ssh key,一路enter
ssh-keygen -t rsa -C "github账号" -b 4096
  1. 粘贴到codeclub上,执行下面的命令,然后去codeclub上粘贴
cat ~/.ssh/id_rsa.pub | clip
  1. 拉取代码
git clone https://github.com/xx/webapp.git
  1. 进入test.txt工程目录里面
cd test.txt
  1. 创建分支
git branch test.txt
  1. 查看本地分支
git branch
  1. 切换到自己创建的分支
git checkout test.txt
  1. 查看文件状态
git status
  1. 将新文件添加到暂存区(每修改一个文件,都需要添加至暂存区,可以使用git add . 实现全部提交,需谨慎操作,别提交日志文件等)
git add fileName
  1. 将暂存区的文件提交并添加提交备注
git commit -m "备注信息"
  1. 查看远程分支(没有push本地分支之前是没有自己创建的分支的,push一次后就有了)
git branch -a
  1. 将文件push到远程分支
git push -u origin test.txt
  1. 重命名分支名称(先删除远程的分支,然后把本地的分支重命名后在提交远程)
git push --delete origin test.txt
(如果没有推送到远程分支这一步可以省略)
git branch -m sxf_.net test.txt
git push origin test.txt
  1. 删除本地分支
git branch -d test.txt

15、删除本地未合并的分支

git branch -D 分支名

16、删除本地已经合并了的分支

git branch -d 分支名

17、删除服务器远端的分支

git push origin --delete test.txt

18、删除已经add的文件(如何撤销已经放入缓存文件的修改)

git rm --cached "文件路径"  不会删除物理文件
git rm --f "文件路径" 不仅删除缓存文件,还会删除物理文件(不会回收到垃圾桶)
  1. 更新master或其他分支
git pull origin master
git pull origin sxf_.net
  1. 更新远程没有合并master的分支,这样通过git branch -a就可以查看别人没有合并到master的分支
git remote update origin --prune
  1. 在分支上面更新master的最新代码
git pull origin master
  1. 撤销到某次提交的记录
git log
git revert 7abe6b33cc46045878aea861dde2c5e4f1fa26b3

二、指令解析

0.Git是分布式版本控制系统,需要填写用户名和邮箱作为一个标识

git config --global user.name “xxxx”
git config --global user.email “xxxx@xxx.com”

什么是版本库?

又名仓库,英文名repository,里面的所有目录,能通过Git管理起来

创建版本库

//D盘www目录下创建一个testgit版本库(pwd 显示当前目录为/d/www/testgit)
cd d:
cd www
mkdir testgit //建立目录
git init //通过这个命令把这个目录变成git可以管理的仓库(testgit目录下会多了一个.git目录,用于跟踪管理版本)

把文件添加到版本库中

//图片,视频二进制文件,没法跟踪文件的变化,只能把二进制文件每次改动串起来,则1KB->2KB,而不知道改变了什么

demo

  • //添加到暂存区(git add)后查看状态信息(git status),在提交到仓库(git commit -m “注释”)
    git add readme.txt //readme.txt添加到暂存区中
    git commit -m “readme.txt提交的注释” //提交文件到仓库
    git status //查看是否还有文件未提交

  • 查看内容的修改
    git diff readme.txt //查看readme.txt文件内容
    cat readme.txt

  • 日志
    git log //查看历史记录(git log -pretty=oneline 该命令把历史记录每次的更改显示到一行)

  • 版本信息
    git reset --hard HEAD^ //回退到上一个版本
    git reset --hard HEAD^^ //回退上上一个版本
    git reset --hard HEAD~100 //回退到前100个版本

  • 查看历史记录的版本号id
    git reflog //获取版本号
    git reset --hard 版本号 //恢复版本号

  • 撤销
    git checkout – readme.txt //把readme.txt文件在工作区做的修改全部撤销(若没有–,git checkout readme.txt则为创建分支)

  • 删除文件
    rm readme.txt //直接在文件目录把文件删除,或通过rm命令(若彻底删除,则再执行git commit)

远程仓库

先注册github账号,由于本地Git仓库和github仓库之间的传输是通过SSH加密的,则需要设置:

  • 第一步:
    创建SSH Key,用户主目录->.ssh目录(id_rsa是私钥(不能公开),id_rsa.pub(公钥)两个文件)
    ssh-keygen -t rsa -C “xxxx@xxxx.com”
  • 第二步:
    登陆github,打开settings->SSH Keys->Add SSH Key(填上任意title,Key文本框里黏贴id_rsa.pub文件的内容)->Add Key

分布式版本库:

添加远程库

  • 登陆github->create a new repo创建新的仓库(Repository name填入mkdir的目录)->create repository(Git仓库)
  • 本地仓库下运行命令:
    git remote add origin https://github.com/github账号/本地仓库.git
    git push -u origin master //当前分支master推送到远程,-u参数:第一次推送用,不但会把本地的master分支内容推送到远程新的
    //master分支,还会把本地的master分支和远程的master分支关联起来,以后的推送或拉 //取可以简化命令
    git commit //本地提交后
    git push origin master //推送到github上

从远程库克隆

  • 登陆github->创建新仓库(勾选Initialize this repository with a README,自动生成README.md文件)
    git clone https://github.com/github账号/本地库目录(新的) //这样就可以在本地库里生成一个远程下来的目录

创建于合并分支

  • HEAD指向master,master指向提交(每次提交有一条时间线,则为主分支)

  • 创建dev分支,后切换到dev
    git checkout -b //表示创建并切换

  • 相当于
    git branch dev //查看分支(当前分支前会添加一个星号)
    git checkout dev

  • 分支修改与master分支上的数据会不同步,此时可以通过
    git merge dev //在master分支上合并dev分支内容
    //会有一个Fast-forward信息:“快进模式”,直接把master指向dev的当前提交,合并速度非常快

  • 删除分支
    git branch -d dev

解决冲突

  • Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其中<<<<<<<HEAD指主分支修改的内容,>>>>>>>分支名(git branch dev)
  • 可以修改为主分支的内容后提交
  • 查看分支合并的情况
    git log

分支管理策略

  • 通常合并分支时,git一般使用"Fast-forward"模式,删除分支后,会丢掉分支信息,使用-no-ff来禁用"Fast-forward"模式
    git merge -no-ff -m “注释” dev(分支名)
    git branch -d dev //删除dev分支
    git log --graph --pretty=oneline --abbrev-commit //通过此命令可以看到删除的分支信息还在
  • 分支策略
  • master主分支是稳定的,用来发布新版本,不允许在上面操作,一般在新建的dev分支上操作,操作完,比如要发布,或dev分支代码稳定后可以合并到主分支master上

bug分支

  • 每个bug都可以通过一个临时分支来修复,修复完后,合并分支,然后将临时的分支删除
  • 通过stash功能,把当前工作现场"隐藏起来",等以后恢复现场后继续工作
    git stash
    git status //查看状态,不会有任何错误信息
  • 隐藏后,可以修复bug了
    git checkout -b issue-404 //master分支上创建临时分支issue-404
  • 修复完成后,切换回主分支master,再删除临时分支
    git checkout master
    git merge --no-ff -m “merge bug fix 404” issus-404
    cat readme.txt
    git branch -d issue-404
  • 查看工作现场
    git stash list //Git把stash内容存放某个地方,但是需要恢复一下
  • 第一种恢复:
    git stash apply //恢复后,stash内容并不删除,需要使用命令(git stash drop删除)
  • 第二种恢复:
    git stash pop //恢复的同时把stash内容删除

多人协作

协作步骤:

  • 首先,视图用git push origin branch-name推送自己的修改
  • 若推送失败,则远程分支比本地更新早,用git pull视图合并
  • 若合并有冲突,需要解决冲突并在本地提交后用git push origin branch-name推送

从远程库克隆,Git自动把本地的master分支和远程的master分支对应起来,并且远程库的默认名称是origin

  • 查看远程库信息
    git remote
  • 查看远程库详细信息
    git remote -v
  • 推送分支
    git push origin master

哪些分支要推送?

  • master分支是主分支,因此要时刻与远程同步

  • 一些修复bug分支不需要推送到远程,可先合并到主分支上,然后把主分支推送

  • 抓取分支
    git push origin dev //把dev分支推送到远程
    git clone https://github.com/github账号/远程库名称 //进入一个新的本地目录下,进行克隆远程的库到本地

当要在dev分支上做开发,必须把远程的origin的dev分支到本地来
git checkout -b dev origin/dev //远程的origin的dev分支到本地来
git commit -m “dev分支上修改完成提交到本地库”
git push origin dev //再把本地dev分支推送到远程的dev分支上

  • 不同人推同样的文件,修改同一个文件同一个地方报错,解决办法:
    git branch --set-upstream dev origin/dev //指定本地dev分支与远程origin/dev分支链接
    git pull //把最新的提交从origin/dev抓下来,然后在本地合并,解决冲突后推送

若此时再有冲突,则解决冲突后,再提交后再push
cat readme.txt //从dev分支上pull下来的文件,使用cat命令,能看到冲突位置

手动解决后
git add readme.txt
git commit -m “merge&fix readme.txt”
git push origin dev

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: