Gitee与Git

写在前面

 做课题需要写代码,将代码放到Gitee
 在Gitee上发现IDE插件,我是VS
 除了通过VS同步本地代码到Gitee,,还学习用Git bash来做

Gitee — VS的插件

给出链接
这里注意几点:

  1. 在团队资源管理器(Team Explorer)登录后,可以clone云端的仓库到本地,注意更改路径;
  2. 也可以在Team Explorer在云端创建仓库;

VS插件之【上传本地.sln到 新建云端仓库】

  1. VS打开一个.sln , 单击VS界面右下角的Publish,Publish 变成 master,单击master,选择Git 或者 进入Team Explorer, 选中发布到Git(Publish Git Repo)
  2. 进入新建云端仓库界面,按要求即可以新建一个仓库;

VS插件之 【上传本地.sln到 已有云端仓库】

参考链接

  1. 在Gitee新建一个仓库,不要选择 .gitignore  和  用README.md 初始化这个仓库, 或者  已经有了README之类的,需要先在Gitee上面的仓库界面选择 “管理 / 清空项目";先用第二步,不行在看第一步
  2. 对于如果仓库已经有别的东西了,我们也可以将右键解决方案—》将解决方案添加到源代码管理;之后在团队资源管理中 双击文件,进行同步,;之后将远程的地址拷贝进分布的位置,进行发布。
  3. 依次进入团队资源管理器-发布-发布到远程存储库,输入项目的git地址进行发布。注意:URL是在团队资源管理-设置里面设置的,所以我们可以在  设置/ 存储库设置   里面看到  origin, 这是默认的 云端存储库URL地址 , 我们还可以在 存储库设置  里面添加一个新的URL,名称比如可以为origin1 。 然后在 将解决方案发布到远程存储库时,可以选择 URL 。

使用Git Bash将本地文件上传云端

  • git config 配置用户信息时,如果加上global 表示以后不管在哪个文件夹下面打开Bash,Git的config都是global后面的
    比如 git config --global user.name “xxx”
  • 参考链接

方法1、先将仓库clone到本地,修改后再push到码云的仓库

修改,指的是,比如说往这个仓库的本地地址中增删文件

git clone xxxxxx 
git add .#将当前目录所有文件添加到git暂存区 
git commit -m "my first commit" #提交并备注提交信息
git push origin master #将本地提交推送到远程仓库

方法2、本地初始化一个仓库,设置远程仓库地址后再做push

先将待上传的本地文件夹初始化为一个仓库,然后再将其同步到云端

git init 
git remote add origin https://gitee.com/用户个性地址/HelloGitee.git
git pull origin master
git add .
git commit -m "第一次提交"
git push origin master

类似【VS插件之 【上传本地.sln到 已有云端仓库】】里第一步提到的
 在新建仓库时,如果在码云平台仓库上已经存在 readme 或其他文件,在提交时可能会存在冲突,这时用户需要选择的是保留线上的文件或者舍弃线上的文件,如果您舍弃线上的文件,则在推送时选择强制推送,强制推送需要执行下面的命令(默认不推荐该行为):

git push origin master -f

如果您选择保留线上的 readme 文件,则需要先执行:

git pull origin master

git push -u 的 u

如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。

$ git push -u origin master
git push大全

git pull 和 git fetch的区别 + 我们看到 .git 里面文件的意义

从结果来看 : git pull = git fetch + git merge
原链接

git clone仓库中的某一个文件夹

现在有一个 TDRebuild 仓库 https://gitee.com/randolf/TDRebuild.git
你要gitclone里面的Algorithm子目录:
在本地的硬盘位置打开Git Bash
git init test && cd test     //新建仓库并进入文件夹[test是任意建立的本地文件夹名]
git config core.sparsecheckout true //设置允许克隆子目录
echo 'Algorithm*' >> .git/info/sparse-checkout //设置要克隆的仓库的子目录路径   //空格别漏
git remote add origin https://gitee.com/randolf/TDRebuild.git  //这里换成你要克隆的项目和库
git pull origin master    //下载

git clone仓库中的某一个文件

echo 'WorkSchedule/PPTData/EdgeDetect/a0_0_detect_4img.png*'>>.git/info/sparse-checkout # 注意*可要可不要,都可以克隆文件

其余同clone单个文件夹
每次clone后,需要重新初始化一个本地仓库,即重新 git init xxx cd xxx, 不能在一个本地文件夹多次clone

一个仓库别人提供了commit,或者在远端更改了比如加了个README,这是本地push

解决方法: git pull origin master
之后出现git pull没有注释无法merge,解决

Git三个部分

  • Git 目录
  • 工作目录(或工作树)
  • 暂存区

工作目录是用户在本地对项目进行更改的地方。工作目录从 Git 目录的对象数据库中提取项目的文件,并将其放置在用户的本地计算机上。就是项目文件夹

Git 目录(位于 YOUR-PROJECT-PATH/.git/ 中)是 Git 存储准确跟踪项目所需的所有内容的位置。这些内容包括元数据和一个对象数据库,其中包含项目文件的压缩版本。就是工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

暂存区是一个文件,用于存储下一次 commit 内容的信息。“commit(提交)” 的意思是你告诉 Git 保存暂存区的更改。 Git 照原样拍摄文件快照,并将该快照永久存储在 Git 目录中。

在三个部分中,文件可以在任何给定时间处于三种主要状态:提交,修改或暂存。在工作目录中对文件进行修改,然后,将其移至暂存区进行暂存,最后,commit 提交文件。就是Git的版本库里称为stage(或者叫index)的暂存区

在这里插入图片描述

本地与github冲突

有两个仓库,两个仓库都都被修改了.push的时候冲突了.

Your branch and 'origin/master' have diverged,
(use "git pull" to merge the remote branch into yours)
nothing to commit, working tree clean

保留本地修改

此时,先用stash将本地修改暂时存到Git栈中,然后将云端数据拉下来.再将暂存在Git栈中的本地修改读取出来,并恢复.

git stash # 将工作区恢复到上次提交的内容,同时备份本地所做的修改保存到Git栈中
git pull 
git stash apply # 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。
git add .
git commit -m "--"
git push

stash详解

有些东西已经修改了,但是现在不上传,先将其存起来,然后切换分支干别的或者pull.干完后,还需要将其存起来的东西加载回来.

$ git stash save "注释"//储藏工作区,输出的main后面的是commit id 以及注释内容
Saved working directory and index state WIP on main: 7147ffc 光线好的情况下采集图像

$ git stash list  //查看储藏记录
stash@{0}: WIP on main: 7147ffc 光线好的情况下采集图像
 
$ git status  //查看工作区
On branch feature-entryForm
Your branch is up to date with 'origin/feature-entryForm'.
 
nothing to commit, working tree clean

$ git stash apply

git stash命令

(1)git stash save "save message"  : 执行存储时,添加备注,方便查找,只有git stash 也可以的,但查找时不方便识别。

(2)git stash list  :查看stash了哪些存储

(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}

(4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show  stash@{$num}  -p ,比如第二个:git stash show  stash@{1}  -p

(5)**git stash apply** :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1} 

(6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}

(7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储

(8)git stash clear :删除所有缓存的stash

但是有的时候,我们执行了stash后,发现有的文件并没有被stash起来. 新增的文件是不会被stash的,需要将这些新增文件先add进暂存区(在stash前或者后add都可以),git add是指加到版本控制中


https://www.cnblogs.com/zndxall/p/9586088.html
常规 git stash 的一个限制是它会一下暂存所有的文件。有时,只备份某些文件更为方便,让另外一些与代码库保持一致。一个非常有用的技巧,用来备份部分文件:

  1. add 那些你不想备份的文件(例如: git add file1.js, file2.js)
  2. 调用 git stash –keep-index。只会备份那些没有被add的文件。
  3. 调用 git reset 取消已经add的文件的备份,继续自己的工作。

不保留本地修改

git fetch origin
git reset --hard origin/master

撤销

  1. 撤销 git add(要在 commit(提交)之前撤销 git add)
  • 运行 git reset <file>
  • git reset 取消所有更改即可。
  1. 撤销commitgit reset --soft HEAD^
  • HEAD^的意思是上一个版本,也可以写成HEAD~1

  • 如果你进行了2次commit,想都撤回,可以使用HEAD~2

  • 参数:

-  `git reset --mixed HEAD^`:将最近一次提交节点的提交记录回退到**工作区***   
*   `git reset --soft HEAD^`:将最近一次提交节点的提交记录回退到**暂存区***   
* `git reset --hard HEAD^`:将最近一次提交节点的提交记录全部清除*   
*  `git revert`是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
- --mixed : 意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
- 这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
---
- --soft :不删除工作空间改动代码,撤销commit,不撤销git add . 
---
- --hard:删除工作空间改动代码,撤销commit,撤销git add . 
- 注意完成这个操作后,就恢复到了上一次的commit状态,本地修改全部丢失。
  1. commit注释写错了,想改一下注释
  • git commit --amend
  • 此时会进入默认vim编辑器,修改注释完毕后保存就好了。
  1. 回滚到指定版本
  • git log找到需要返回的 commit id
  • git reset后接 commit id
    • git reset –-soft:回退到某个版本,回退了commit的信息,不会恢复到index file一级。通常使用在当你git commit -m "注释"提交了你修改的内容,但内容有点问题想撤销,又还要提交,就使用soft,相当于软着路;
    • git reset -–hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉,相当于硬着路,回滚最彻底。

git add HEAD commit stage checkout

  • 第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;没有add的文件是untracked file

  • HEAD

  • 第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

  • 所以,git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

  • Git管理的是修改,当你用git add命令后,git commit只负责把暂存区的修改提交了. commit提交的是在暂存区域的快照,还没add到staged区域的文件是不会被commit的。

    • 第一次修改 -> git add -> 第二次修改 -> git add -> git commit,两次修改全部提交
    • 第一次修改 -> git add -> 第二次修改 -> git commit只提交了第一次修改
  • 命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

    git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。

  • git reset HEAD file(用HEAD时,表示最新的版本。)是将暂存区的修改撤销掉(unstaged),重新放回工作区,接着我们用git checkout -- file丢弃工作区的修改

  • 小结:

    • 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。

    • 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。

gitignore删除远程保留本地

  1. 删除远程保留本地
$ git pull origin master  # 将远程仓库里面的项目拉下来

$ dir # 查看有哪些文件夹

$ git rm -r --cached target  # 删除你要删除的文件名称,这里是删除target文件夹(cached不会把本地的flashview文件夹删除)

$ git commit -m '删除了target' # 提交,添加操作说明

git push -u origin master #重新提交(若需要对其他分支进行操作,则把master换为对应分支,如:git push -u origin dev)
  1. 忽略子文件夹
.gitignore忽略多层文件夹用**
**/bin/Debug/
前面的两个*号代表任意多层上级文件夹

需要 git 1.8.2 及其以上的版本才支持
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值