当前位置:   article > 正文

github使用(建立环境,基本命令,历史版本回滚)_github 回滚

github 回滚

ubuntu16.04的github使用指南,搞了几次一直没记住,这次写下来希望能记住!!!_希哈科技的博客-CSDN博客

初始化GIT环境

一. 检查是否安装了git

git version

二.如果没有安装,则使用如下命令安装 

sudo apt-get update    //更新软件源列表

sudo apt-get install git git-core

三、进行SSH认证

ssh -T git@github.com

备注:认证失败(后面步骤会进行SSH认证) 

四、配置信息

git config --global user.name "wjy"

git config --global user.email "wjydym@163com"

git config --list

五、创建Github SSH认证秘钥

进入指定的cd ~/.ssh目录

ssh-keygen -C "wjydym@163.com" -t rsa

六、将生产的公钥和私钥分别添加到GitHub网页的SSH认证配置页

1.把私密添加到 ssh-agent的高速缓存中

2.添加公密到Github官网 

3.在Github上注册用户名和密码,登陆进去,点击右上角头像的设置按钮 

 4.点击set and GPG keys,然后是New SSH Key

5.将复制的公秘粘贴进去,写上一个SSH认证的备注的名字 

 6.配置好之后测试SSH认证有没有问题,能否来连接上Github

7.平时我们一般会有两种需求一种是将本地写好的代码,上传到Github和从GitHub拉去别人的代码修改 

(1)上传已有工程代码到Github

①创建一个Github一个远程仓库

②记录远程Github仓库源的链接

备注:记住SSH链接等等ubuntu下添加远程Github远程仓库的源的时候要用到

③回到ubuntu下

到你想要上传到Github的工程代码目录下

执行命令:

git init

git add .

git status 

git commit -m "初次提交工程代码"

④添加要关联Github远程仓库

git remote add origin 复制项目的url

例如:git remote add origin git@github.com:chenzhiqin520/Allot_Mac_End-break_Server.git

⑤拉取Github远程仓库master分支代码同步到本地

git pull origin master

⑥提交本地的工程代码到远程仓库master分支

git push -u origin master

⑦查看上传的结果,大功告成

(2)从github拉取被人的代码修改,比较简单

git clone https://github.com/chenzhiqin520/MAC_ALLOT_SYSTEM.git

备注:任何取消一个目录的git初始化

rm -rf .git



GIT命令集锦

【干货整理】最近从 0 学习Git,详细分类总结了这份 Git 命令宝典_帅地-CSDN博客_git鼠标垫

一、Git 配置相关

1. Git 最小配置

1.1 配置全局账户,也就是该账户对所有的 Git 仓库都有效

  1. git config --global user.name '你的账户名称'
  2. git config --global user.email '你的 Email'

1.2 配置局部账户,也就是该账户只对当前 Git 仓库有效

  1. git config --local user.name '你的账户名称'
  2. git config --local user.email '你的 Email'

注意,不同点就是一个参数是 global(全局),一个是 local(本地)

2. 查看相关配置情况

配置了之后,显然有时候是需要查看我们当前配置的相关情况的,可以使用如下命令

2.1 查看 global 类型的配置情况

git config --global --list

2.2 查看某个仓库下的配置情况

git config --local --list

二、本地基本操作

0.其它

0.1 查看所有命令

git help

1. 基本操作

1.1 查看变更情况

git status

1.2 查看当前工作在哪个分支上

git branch -v

1.3 查看远端所有分支

git branch –r

1.4 查看本地分支

git branch

1.5 查看本地分支和远程分支

git branch –a

1.6 查看哪些分支合并到当前分支来

git branch –merged

1.7 查看哪些分支没有合并到当前分支

git branch –no –merged

1.8  重命名分支

  1. git branch –m 旧分支 新分支 //非强制
  2. git branch –M 旧分支 新分支 //强制

1.9 切换到指定分支

git checkout 指定分支的名称

1.10 把当前目录及其子目录下所有变更都加入到暂存区

git add . #注意,add 后面是一个 '.';

1.11 把仓库内所有变更都加入到暂存区

git add -A

1.12 把指定文件添加到暂存区

git add 文件1 文件2 ... 文件n

1.13 创建正式的 commit,也就是把当前的数据提交上去

git commit -m "备注信息"

1.14 放弃指定的文件修改,注意是  空格--空格

git checkout -- filename

1.15 放弃所有的文件修改

git checkout .

 1.16 放弃所有未跟踪文件的修改

git clean -f

  1.17 放弃所有未跟踪目录的修改

git clean -fd

2. 比较差异

git diff 不加cache修饰则是比较工作区

2.1 比较某文件工作区和暂存区的差异

git diff 某文件

2.2 比较某文件暂存区和 HEAD 的差异

git diff --cache 某文件

2.3 比较工作区和暂存区的所有差异

git diff

2.4 比较暂存区和 HEAD 的所有差异

git diff --cache

2.5 比较工作区和指定commit-id的差异

git diff commit-id

2.6 比较工作区和指定commit-id的差异,只展示文件列表名

git diff --name-status commit-id

2.7 比较工作区和指定commit-id的差异,只展示文件列表名和修改数统计

git diff --stat commit-id

3. 暂存区与工作区之间回滚

3.1 把工作区指定文件恢复成和暂存区一样

git checkout 文件1 文件2 ... 文件n

3.2 把暂存区指定文件回复和 HEAD 一样

git reset 文件1 文件2 ... 文件n

3.3 把暂存区和工作区所有文件恢复成和 HEAD 一样

git reset --hard

3.4 删除最后一次提交

git reset --hard HEAD^

3.5 用 difftool 比较任意两个 commit 的差异

git difftool commit1 commit2

注意,从工作区回滚到暂存区则用 checkout ,否则用 reset

4. 其它

查看哪些文件没有被 Git 管控

git ls-files --others

三、加塞临时任务处理

1. 把未处理完的变更先保存到 stash 中

git stash

2. 临时任务处理完后继续之前的工作

  1. git stash pop // pop 相当于栈的出栈和入栈一样,把之前的任务弹出来
  2. 或者
  3. git stash apply // 和 pop 不同的是, apply 相当于从栈顶把任务取出来,但是不过从栈中把任务移除

3. 查看所有的 stash

git stash list

4. 取回某次 stash 的变更

git stash pop stash @{数字n}

四、修改个人分支历史

我们的仓库的内容每次变更执行 commit 的时候,都会生成一个新的 commit,不过有时候,我们不想产生新的 commit,而是想要通过修改之前的 commit 来变更仓库的内容,那么就可以使用如下命令了

1. 修改最后一次 commit

  1. 在工作区中修改文件
  2. git add
  3. git commit --amend

2. 修改中间的 commit(假设代号为 X)

  1. git rebase -i X前面的一个 commit 的 id
  2. 在工作区修改文件
  3. git add
  4. git rebase --contiue

3.使用git rebase合并多次commit

         当我们在本地仓库中提交了多次,在我们把本地提交push到公共仓库中之前,为了让提交记录更简洁明了,我们希望把如下分支B、C、D三个提交记录合并为一个完整的提交,然后再push到公共仓库。

这里我们使用命令:

git rebase -i  [startpoint]  [endpoint]

        其中-i的意思是--interactive,即弹出交互式的界面让用户编辑完成合并操作,[startpoint] [endpoint]则指定了一个编辑区间,如果不指定[endpoint],则该区间的终点默认是当前分支HEAD所指向的commit(注:该区间指定的是一个前开后闭的区间)。 在查看到了log日志后,我们运行以下命令:

git rebase -i 36224db

或者

git rebase -i HEAD~3

然后我们会看到如下界面:

       上面未被注释的部分列出的是我们本次rebase操作包含的所有提交,下面注释部分是git为我们提供的命令说明。每一个commit id 前面的pick表示指令类型,git 为我们提供了以下几个命令:

  1. pick:保留该commit(缩写:p)
  2. reword:保留该commit,但我需要修改该commit的注释(缩写:r)
  3. edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
  4. squash:将该commit和前一个commit合并(缩写:s)
  5. fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
  6. exec:执行shell命令(缩写:x)
  7. drop:我要丢弃该commit(缩写:d)

根据我们的需求,我们将commit内容编辑如下:

  1. pick d2cf1f9 fix: 第一次提交
  2. s 47971f6 fix: 第二次提交
  3. s fb28c8d fix: 第三次提交

上面的意思就是把第二次、第三次提交都合并到第一次提交上

然后wq保存退出后是注释修改界面:

可以再浏览态 按下两个dd可以删除一行

最终的编辑效果如下:

编辑完保存即可完成commit的合并了:

五、查看变更日志等

1. 当前分支各个 commit 用一行显示

git log --online

2. 显示最近的 n 个 commit

git log -n

3. 用图示显示所有的分支历史

git log --online --graph --all

4. 查看涉及到某文件变更的所有 commit

git log 某文件

5. 某文件各行最后修改对应的 commit 以及作者

git blame 某文件

六、分支与标签 

1. 创建新分支

1.1 基于当前分支创建新分支

git branch 新分支

1.2 基于指定分支创建新分支

git branch 新分支 已有分支

 1.3 基于指定分支创建新分支并且切换到该分支

git branch –b 新分支 现有分支

1.4 基于某个 commit 创建分支

git branch 新分支 某个 commit 的id

1.5创建分支并且切换到该分支

git chechout -b 新分支

2. 列出分支

2.1 列出本地分支

git branch -v

2.2 列出本地和远端分支

git branch -av

2.3 列出远端所有分支

git branch -rv

2.4 列出名称符号某样式的远端分支

git branch -rv -l '某样式'

3. 删除分支

3.1 安全删除本地某分支

git branch -d 要删除的分支

3.2 强行删除本地分支

git branch -D 要删除的分支

3.3 删除远程端分支

  1. git branch –r –d origin/要删除的分支
  2. git push origin :要删除的分支

注意:origin 后的空格

3.4 强行删除远程端分支

  1. git branch –r –D origin/要删除的分支
  2. git push origin :要删除的分支

3.5 删除已合并到 master 分支的所有本地分支

git branch --merged master | grep -v '^\*\| master' | xargs -n 1 git branch -d

3.6 删除远端 origin 已不存在的所有本地分支

git remote prune origin

4. 打标签

从 commit 打上标签

git tag 标签名 commit 的id

5. 两分支之间的集成

5.1 把 A 分支合入到当前分支,且为 merge 创建 commit

git merge A分支

5.2 把 A 分支合入到 B 分支,且为 Merge 创建 commit

git merge A分支 B分支 

5.3 把当前分支基于B分支做 rebase,以便把B分支合入到当前分支

git rebase B分支

5.4 把A分支基于B分支做rebase,以便把B分支合入到A分支

git rebase B分支 A分支

 5.5 把 A 分支合入到当前分支

git merge –no –ff  A分支

可以保存你之前的分支历史。能够更好的查看 merge历史,以及branch状态。 

5.6 用 mergetool 解决冲突

git mergetool

5.7 git rebase 不成功回滚

git rebase --abort

5.8 git rebase 成功后回滚

git reflog

先输入 : git reflog , 查看操作记录,找到rebase前的commit id,再reset即可 。

git reset --hard 对应的id

6. 遴选

6.1 挑选一个commit-id合并

git cherry-pick commit-id
  • 注意:合并过来的commit-id将会变掉,产生一个新的commit-id,跟原来的不在相同

6.2 挑选多个commit-id合并

git cherry-pick commit-idA commit-idB

6.3 挑选连续的多个commit-id合并

git cherry-pick commit-idA..commit-idB
  • 注意:该指令是将从commit-idA开始到commit-idB之间的所有commit-id提交记录都合并过来,需要注意的是,commit-idA必须比commit-idB提前提交,也就是说在被挑选的分支上,先有的commit-idA,然后才有的commit-idB 

6.4 合并冲突

6.4.1 继续合并

第一步:需要合并人解决对应的冲突文件,然后提交到暂存区

git add . 

第二步:使用下面的命令继续执行

git cherry-pick --continue

6.4.2 放弃合并,回归原始状态

git cherry-pick --abort

6.4.3 放弃合并,保留状态

git cherry-pick --quit

6.5 联合使用的命令

-e,--edit

  • 使用当前指令,会打开编辑器,让用户编写信息

-n,--no-commit

  • 只更新工作区和暂存区,不产生新的提交

-x

  • 在提交信息的末尾追加一行(cherry picked from commit ...),说明这个提交是如何来的

七、和远端交互

1. 列出所有 remote

git remote -v

2. 增加 remote

git remote add url地址

3. 删除 remote

git remote remove remote的名称

4. 改变 remote 的name

git remote rename 旧名称 新名称

5. 把远端所有分支和标签的变更都拉到本地

git fetch remote

6. 把远端分支的变更拉倒本地,且 merge 到本地分支

git pull remote名称 分支名

关于 pull 和 fetch 的区别不懂可以看这篇文章从0学习Git:详解git pull和git fetch的区别

7.拉取远端别的分支的代码,并创建对应的本地分支

git checkout -b new_dev remote名称/new_dev
创建本地分支 new_dev, 并且拉取远端new_dev的代码到本地new_dev

8. 把本地分支 push 到远端

git push remote名称 分支名

9. 删除远端分支

  1. git push remote --delete 远端分支名
  2. 或者
  3. git push remote:远端分支名

10. 向远端提交指定标签

git push remote 标签名

11. 向远端提交所有标签

git push remote --tags

八、 Git 忽略已经更改的文件

        在使用Git过程中,我们经常碰到的就是,build完代码生成的一堆临时文件,也出现在Git Status中。在Commit时,明明可以用Git Add .一句完成的,结果被迫使用Git Add File一句一句添加。使用以下方法,如果我们已经明确哪些文件不需要提交,下次即使更改了也不会出现在Git Status里面。

1.对于Untracked文件

1.1 创建.gitignore文件

在git项目的目录,输入:

touch .gitignore

1.2 编辑.gitignore文件

在.gitignore文件中输入要忽视的文件或文件夹

2. 对于tracked文件

使用.gitignore是不行的。使用以下命令添加需要忽视的文件

git update-index --assume-unchanged <files>

使用以下命令取消忽视

git update-index --no-assume-unchanged <files>

九、 下载历史版本

1. git clone 目标https或ssh

将整个工程下载下来,因为历史版本包含在其中。若存在该工程一直维护的GIT本地文件夹,跳过此步骤。

2. 点击commits

进入历史版本界面,找到你想下载的版本

3. 复制SHA

4. git checkout SHA

先cd到项目文件夹内,再git checkout SHA

然后直接看你的文件夹,内容已经更改为历史版本了。

5. 回到master分支

这一步很重要。为保证后续工程更新,防止git push -u origin master无法使用。使用git check master切回master分支,而不是使用git checkout master分支的SHA。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/1000501
推荐阅读
相关标签
  

闽ICP备14008679号