Git使用记录

GIT的三个代码存储地点

存储地方解释
暂存区暂时存储代码的地方 git add
工作区本地仓库(当前分支) git commit
版本库远端仓库 git push

GIT的基本命令

功能命令
克隆代码git clone
初始化仓库git init
切换分支git branch 分支名
比较差异git diff
查看状态git status
查看日志git log
检出代码git checkout
重置代码git reset
恢复进度git stash
里程碑git tag
回滚操作git revert
获取(不合并)git fetch
合并操作git merge
获取并合并(fetch+merge)git pull
rebase命令(可以处理冲突和合并提交)git rebase

Git clone

  • 默认拉取master的代码
$ git clone 项目地址
  • 如果要拉取指定分支(例:outside)代码
$ git clone -b outside XXX // "其中outside 就是分支的名称"

不用clone

  • 本地新建一个仓库文件夹首先
  • 首先 用 git init初始化(.git目录用于Git跟踪管理版本库)
$ git init  // "初始化一个空仓库",如果没有.git文件夹,需要用init
  • 然后关联远端仓库,执行添加、提交、推远端 之后就可以正常建立分支了
$ git remote add origin https://gitee.com/zhangzg810/gzz-test.git
$ git add .
$ git commit -m "初始化仓库"
  • 如果远端仓库不为空,此时push会报错,所以要获取 远程库 并与本地同步合并
    在这里插入图片描述
  • 需要先pull更新代码,才能push,解决上述问题
$ git pull --rebase origin master //"拉取master代码  并合并"
$ git push origin master // "推到远端仓库"
  • 如果本地新建了仓库,需要执行完上述push前的所有步骤以后,再把新建文件复制进来,进行push,否则会报错,不过可以使用 git push -f origin master 强制推代码到远端仓库

检查关联的远端仓库

$ git remote -v
---------------------
origin  https://gitee.com/xxxxxx/gzz-test.git (fetch)
origin  https://gitee.com/xxxxxx/gzz-test.git (push)

删除远端仓库占用

$ git remote rm origin

  • 1、Git在当前分支创建新分支
git checkout -b 分支名
  • 2、Git把当前分支推到远端仓库
git push origin 分支名
  • 3、Git把当前分支关联远端仓库
git branch --set-upstream-to=origin/分支名

新建分支(branch2)以后在别的仓库切换该分支(branch2)的时候,报错找不到该分支

首先
git pull
然后
git checkout branch2 // "就可以找到新建分支了"

分支创建和切换

$ git branch // "显示所有本地分支"
$ git checkout <branch/tagname> // "切换到指定分支或标签"
$ git branch <new-branch> // "创建新分支"
$ git branch -d <branch> // "删除本地分支"
  • 分支删除
//"方法一:先删除本地,后删除远程"
git branch -d <branchname>
git push <shortname> --delete <branchname>
例:git branch -d development
    git push origin --delete development
 
//"方法二:推送一个空分支到远程分支,进行删除"
git push <shortname> :<branchname>
例子:git push origin :development
  • Git从远程的分支获取最新的版本到本地
"方法1    git fetch 从远程获取最新版本到本地,**不会自动merge**"
git fetch origin master // "从远程的origin的master主分支下载最新的版本到origin/master分支上"
git log -p master..origin/master// "比较本地的master分支和origin/master分支的差别"
git merge origin/master // "最后进行合并"

当有人更改了代码,且提交到了远端仓库,则可以使用git pull获取最新的文件(只能改变被修改了的文件)

"方法2     git pull:是从远程获取最新版本到本地,自动merge"
git pull 

git 创建了本地仓库以后,要进行名字和邮箱的设置,否则提交会报错

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

当然也可以查看你设置的用户名和邮箱

$ git config user.name
$ git config user.email

Git提交文件

  • 把当前文件添加到暂存区
$ git add test.html
  • 将暂存区的文件提交
$ git commit -m "本次提交的说明"
  • 将提交的文件推到远端仓库
$ git push 
git add 命令含义
git add .(这里是个点)将工作区的变化提交到暂存区,包括文件修改和新增,但是不包括删除的文件
git add -u将工作区的变化提交到暂存区,包括文件修改和删除,但是不包括新增的文件
git add -A将工作区的变化提交到暂存区,包括新增,删除和修改的所有内容
git add -i将工作区的变化提交到暂存区,进入交互模式选择文件进行操作
git add 文件名将工作区的变化提交到暂存区,选定某一个文件进行提交

Git合并 主干—>分支(反之换一下顺序就好)

  • 切换到master,并更新主干代码
$ git checkout master
$ git pull
  • 切换到分支,合并主干代码
$ git checkout 分支名
$ git merge master
  • 提交到远端仓库的分支
$ git push 

git diff 查看文件被怎么修改的

$ git diff  test.html

git status 提交后用 git status 查看一下当前仓库状态

 $ git status
On branch master
nothing to commit, working tree clean //"当前没有需要提交的修改,而且,工作目录是干净的"

git log 可以查看一共提交了几个版本的文件

$ git log
commit c2d7a2a893565fc965bd67a0de82691ce6029f97 (HEAD -> master, origin/master, or
igin/HEAD)
Author: zhangzg1 <xxxxx@qq.com>
Date:   Mon Nov 23 18:39:51 2020 +0800

    test master

commit 68bd3aefa2e95d8e67a65c92902499ab3f57ff44 (origin/release, origin/hotfix, or
igin/feature, origin/develop)
Author: zhangzg810 <8129060+zhangzg810@user.noreply.gitee.com>
Date:   Mon Nov 23 17:54:38 2020 +0800

    Initial commit

git reset 可以回退文件版本

$ git reset --hard HEAD^ //"HEAD表示当前版本,则HEAD^表示上一个版本,那么上上版本就是HEAD^^ "
HEAD is now at e475afc add distributed
  • 1、git commit 只会提交暂存区的文件,如果当前文件没有被加入到缓存区,则执行commit命令无效。
  • 2、提交后,可以用 git diff HEAD – readme.txt 命令去查看工作区版本库里面最新版本区别
  • 3、git add 以后,没有git commit ,文件暂时在暂存区,但没有提交到分支,用git status查看以后,可以用 git reset HEAD file 把暂存区的修改撤销掉,重新放回工作区
$ git reset HEAD test.html //"git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区,HEAD表示最新版本。"
Unstaged changes after reset:
M   test.html
  • 4、这时候再丢弃工作区的修改就可以了
$ git reset HEAD test.html //git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区,HEAD表示最新版本。
Unstaged changes after reset:
M  test.html

Git merge 和 rebase

$ git merge	   // "合并后不会删除旧分支,会形成闭环"
$ git rebase  // "合并后会删除旧分支,不会形成闭环"

删除文件

$ git rm 文件名   //" 删除文件,并将删除操作提交到暂存区" 

$ rm 文件名       //" 删除文件"

撤销修改

修改了文件以后,需要撤回修改信息

  1. git add之前

$ git checkout -- 文件名 // "抛弃工作区的修改"
$ git status
On branch master
Changes to be committed: //  "表示  暂存区有文件"
  (use "git reset HEAD <file>..." to unstage)

    modified:   readme.txt
  1. git add 以后,git commit之前

"首先   撤销暂存区的修改    git reset只对暂存区的文件有效果"
$ git reset HEAD readme.txt //"git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区,HEAD表示最新版本。"     "或者使用commit id也可以"
----------------------------------------------------------------------------------------
$ git status
On branch master
Changes to be committed: //  "表示  暂存区有文件"
  (use "git reset HEAD <file>..." to unstage)

    modified:   readme.txt
----------------------------------------------------------------------------------------
"然后   抛弃工作区的修改"
$ git checkout -- 文件名 // "抛弃工作区的修改"
----------------------------------------------------------------------------------------
$ git status    //  " staged 是暂存区"
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

modified:   readme.txt //"证明   暂存区是干净的,工作区有修改。"
  1. git commit 以后,版本回退

只有commit以后才会生成版本号

$ git commit  以后执行$ git status

$ git status
On branch master
nothing to commit, working tree clean  // "显示暂存区是干净的"

版本回退

$ git log   					// "查看每一次的commit id"
$ git log --pretty=oneline  	// "一行一行的显示"
$ git reset --hard commitID  	// "回退到git log 查看的指定版本"

$ git reset --sort commitID		// "只回退commit,如果你想再次提交直接git commit即可,,git reset应该用在私有分支上。"
$ git reset --hard commitID  	// "彻底回退版本,连本地文件都会被回退到上个版本的内容"
$ git lrevert  //"Revert 撤销一个提交的同时也会重新创建一个提交,它不会改变现在的提交历史。因此,git revert可以用在公共分支上"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值