威尼斯wns.9778官网活动_vnsc威尼斯城官网

热门关键词: 威尼斯wns.9778官网活动,vnsc威尼斯城官网
当前位置:威尼斯wns.9778官网活动 > 计算机教程 > 更换github账户之后的git问题

更换github账户之后的git问题

文章作者:计算机教程 上传时间:2019-05-10

前言

更换github账户之后,在git上上传repository(版本库)出现问题;

因为结合了开发中可能遇到的场景,篇幅较长,不过我觉得很有助于你理解 git 的运作机制,而不是死记硬背命令。

威尼斯wns.9778官网活动 1

HEAD指针 始终指向的是当前分支的最新版本号,HEAD^, HEAD^^, ^ 的个数 n 或 HEAD~n,n 代表前 n 个版本号。

原因是之前登录过的github账号占用了本机的ssh,导致更换账号的时候出现问题;需登录原github账号删除ssh关联;

在项目中直接使用 linux rm 只会删除工作区的文件,git rm 同在删除工作区文件的同时删除 stage 中的,或使用 git rm --cached 只删除 stage 中的。

一、创建repository(版本库)尽量不要手动修改,否则会破坏

一些基本的操作

1、mkdir文件名并进入

#全局配置
git config --global user.name "your username"
git config --global user.email youremail@email.com
git config --global color.ui true

#
mkdir git_proj & cd git_proj
git init
echo "# readme.md" >> README.md
git add README.md
git commit -m "readme commit"
# 添加远程仓库 并给它取个别名 origin
git remote add origin git@github.com:username/repositoryName.git
# 将本地仓库推送至 origin 的 master 分支并与此分支关联(-u 的作用,后期不必在使用)
git push -u origin master

# 从远程仓库 origin 的 master 分支获取最新源码并下载到 tmp 分支
git fetch origin master:tmp
# 比对 tmp 分支于 master 分支做了哪些改动
git diff master tmp
# 合并 tmp 分支到 master 分支
git merge tmp

# clone copy 一个完整的远端仓库到本地
git clone git@github.com:username/repositoryName.git

# pull 获取 origin 的 master 分支并直接和当前分支合并
# 所以可能会发生冲突
git pull origin master

2、git init

checkout

3、添加文件到repository

checkout 命令有两个主要作用:切换分支 和 回滚文件到当前的 stage 版本 或 repository 版本

git add filename.txt(需要在当前目录下)

1、切换分支

4、用命令 git commit告诉Git,把文件提交到仓库

# 切换到 new_branch 分支
git checkout new_branch
# 创建并切换到 new_branch 分支
git checkout -b new_branch

git commit -m filename.txt

2、回滚工作区的文件到最新 stage 版本 或 repository 版本,即从 stage 或 repository 中检出最新版本

通过git status查看当前为上传的文件

# -- 是文件标示符 表名后面的参数为文件 避免产生切换 branch 的歧义
git checkout -- <filename>

5、如果进行了修改,通过git diff filename.txt查看difference;

回滚时会先检查 stage 中是否有对应的文件,如果没有才会使用 repository 中最新的版本。而当对某文件进行了多次修改和 add 操作后,使用 checkout 我们只能将文件回滚到最新一次的 add 的版本。

6、核实后继续上传重复3、4两步(git add 、git commit)

威尼斯wns.9778官网活动,但在某些场景下我们可能想回滚到 repository 中的最新版本,怎么做呢?配合 reset 命令的可以很容易做到。
先给出命令:

7、git log显示文件更改日志

git reset HEAD <filename> & git checkout -- <filename>

简略信息: git log --prettyoneline

这样就可以将工作区的 filename 回滚到 repository 中的最新版本了。具体原理我们将在实例中详细的讲解。

二、版本回退

reset

//      版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。

git 的 reset 命令比较绕,需要耐心的理解。简单来说,reset 有三种重置级别,我们需要准确理解每个级别的作用。

//其中版本库里面存了很多东西

soft:回退版本号。作用于 repository

//其中最重要的就是stage(暂存区),Git为我们自动创建了第一个分支master

mixed:回退版本号,重置 stage。作用于 repository 和 stage

//以及指向master的一个指针HEAD。

hard :回退版本号,重置 stage,重置工作区源码。作用于 repository,stage 和 workspace

1、git reset --hard HEAD^回退一个版本

我们简单展示下 repository 的版本号,我们以此为 demo 分别尝试三个级别的 reset

git reset --hard HEAD^^回退两个版本

git log

version D (HEAD) <-- HEAD指针
version C (HEAD^)
version B (HEAD^^)
version A (HEAD~3)

git reset --hard HEAD~100回退100个版本

命令格式:

2、通过版本号回退,使用命令方法如下:

git reset [--soft|--mixed|--hard] version_no <filename>

git reset  –hard 版本号

--soft:只是单纯的移动 repository 的 HEAD指针 到制定版本号。stage 和工作区没有任何变化。

版本号获取:

# 将 HEAD 指针回滚至上一版本 使用 git log 你会发现提交日志退回到了上一版本号
git reset --soft HEAD^
#版本号现状
version C <-- HEAD指针
version B
version A

git reflog

--mixed:默认选项,移动 repository 的 HEAD指针 到指定版本号,同时用此版本重置 stage 区,所以可能会让工作区的某些文件处于 unstage 状态(当工作区的文件与 repository 中的版本不一致时)。注意,这里是可以指定文件的。soft 本身和文件无关,hard 则是不能单独指定文件,只能全部重置。

四、撤销更改

# HEAD指针 还是指向 HEAD 
git reset HEAD^2 <filename>
#版本号现状
version B <-- HEAD指针
version A

1、回退

本文由威尼斯wns.9778官网活动发布于计算机教程,转载请注明出处:更换github账户之后的git问题

关键词: