Advertisement

git常用指令 github版本回退 reset

阅读量:

常用git操作流程包括:克隆仓库、设置远程仓库、更新本地仓库、使用git fetch和git rebase进行更新,以及git reset命令的三种回退方式(-mixed、-soft、-hard)。此外,用户还介绍了如何回退本地和远程分支,删除远程分支的方法(包括设置receive.denyDeleteCurrent和删除远程分支后再push),以及学习资源链接。

常用流程

  • 使用git进行克隆操作时,如果目标仓库已经是个人的克隆仓库,可以直接进行下一步操作
  • 在克隆完成后切换到目标目录,然后添加远程仓库的分支,可以使用git remote add命令
  • 推送操作可以使用git push命令,确保远程仓库的最新状态
  • 每次更新时建议执行git fetch和git rebase操作,以保持本地仓库与远程仓库的同步
  • 在删除远程提交时可以使用git push force命令,避免服务器拒绝落后情况
  • 使用git重置命令可以回退到特定的分支状态
  • git分支管理的详细说明

reset命令具有多种实现方式,其中包括:

  • 将当前分支回退至上一个版本状态
  • 回退apy这个文件的版本到上一个版本
  • 向前回退至第3个版本
  • 实现本地状态与远程分支同步
  • 回退至特定版本
  • 逆向操作上一次提交的状态
  • 建立old_master分支作为备份
  • 推送修改到远程仓库
  • 回退本地仓库至指定版本
  • 删减远程master分支
  • 重新创建master分支
  • 学习资源:
    • 可以省略git add命令,通过git commit -a简化操作流程

常用流程

使用 git 命令克隆仓库,其中 xxx 是已有的分支,属于您自己的仓库。

cd到某个目录;git remote alias somemarks YYY(YYY是master的远程仓库,somemarks 是master的别名,用户可以根据需要自行定义)

3. push origin即可

每次更新自己的repo时,建议执行git fetch操作,以获取目标仓库的最新代码,随后进行git rebase操作,将本地分支合并至目标分支。

使用git reset --hard origin/master进行重置远程分支操作。在处理远程错误提交时,可以通过执行git push –force命令来避免服务器拒绝提交请求的延迟问题。

git分支详解


reset命令有3种方式:

git reset –mixed:此为默认行为,不带参数的git reset会回退到某个版本,仅保留源码,同时回退commit和index信息。

使用 git reset –soft 命令可以回退至特定 commit,仅恢复 commit 记录,不会恢复到 index 文件层次。如果需要提交,可以直接进行提交操作。

  1. 使用 git reset –hard 可以完全重置本地代码,将其恢复到指定 commit 状态。

回退所有内容到上一个版本

git reset HEAD^

回退a.py这个文件的版本到上一个版本

git reset HEAD^ a.py

向前回退到第3个版本

git reset –soft HEAD~3

将本地的状态回退到和远程的一样

将当前分支硬重置至 origin 分支的 master 头

将当前分支重头开始拉取至 FETCH 头

将当前分支硬重置至 origin 分支的 master 头

将当前分支硬重置至 origin 分支的 master 头

回退到某个版本

git reset 057d

恢复至上一次提交的状态,按照某一次提交操作的反向操作进行一次提交

git revert HEAD(easy way)

如果我们在某次修改中对某些内容进行了修改,并且已提交至本地仓库,同时已提交远程仓库。

这种情况下,我们想把本地和远程仓库都回退到某个版本,该怎么做呢?

git重置操作仅在本地仓库中进行版本回退,而远程仓库的版本保持不变。

在本地重置之后,如果再次拉取远程仓库,内容将与本地之前版本的内容进行merge。

这并不是我们想要的东西,这时可以有2种办法来解决这个问题:

在远程服务器的项目根目录中,执行git reset –soft 10efa以回滚10efa。请确保在执行此操作时,避免使用mixed或hard参数。

在本地删除远程 master 分支,然后将重置后的分支内容上传至远程仓库,如下:

新建old_master分支做备份

git branch old_master

push到远程

git push origin old_master:old_master

本地仓库回退到某个版本

git reset –hard bae168

删除远程的master分支

git push origin :master

重新创建master分支

git push origin master

复制代码

在删除远程master分支时,可能会有问题,见下:

复制代码
    $ git push origin :master  
    error: By default, deleting the current branch is denied, because the next  
    error: 'git clone' won't result in any file checked out, causing confusion.  
    error:  
    error: You can set 'receive.denyDeleteCurrent' configuration variable to  
    error: 'warn' or 'ignore' in the remote repository to allow deleting the  
    error: current branch, with or without a warning message.  
    error:  
    error: To squelch this message, you can set it to 'refuse'.  
    error: refusing to delete the current branch: refs/heads/master  
    To git@xx.sohu.com:gitosis_test  
     ! [remote rejected] master (deletion of the current branch prohibited)  
    error: failed to push some refs to 'git@xx.sohu.com:gitosis_test'

此时,建议在远程仓库目录中配置git的receive delete-current选项。

git receive.denyDeleteCurrent warn

然后,就可以删除远程的master分支了

尽管存在以上两种方法可以回退远程分支的版本,但这些方式都存在较大的风险,操作时需格外谨慎。

学习资源:

GitHub Learn

GitHub Learn Path

CodeSchool Git课程

GitHub Learn]
GitHub Learn Path

  • GitHub中从fork他人repo并最终要求合并到原项目的过称:
复制代码
    1、在github上点击fork按钮,此项目在你的repo中出现。

    
    2、git clone (http或ssh协议),将此项目代码克隆到本地。这样就可以在本地进行代码的修改。
    3、克隆到本地后,它默认的remote是你fork到你自己github上的repo(称为origin),而不是the repo you forked from.为了跟踪这个the repo you forked from,你需要cd 到你clone 到本地的repo文件夹下进行:
    git remote add upstream http::(或是ssh),建立一个叫upstream(名字可以随便设)的remote.
    4、若你fork的repo已经改变,使用:
    git fetch upstream    //fetch any changes fron the original reposity
    git merge upstream/master    //merge any changes fetched into your working files
    或者直接用:
    git pull upstream master
    5、本地代码修改后首先:
    git status   //查看状态
    git add <file>     //将修改的file add以便commit
    git commit -m ""   //将add 提交并加上注释,此时是将本地仓库修改
    6、最终
    git push -u origin master也成功了
    
    //现在是将修改推送到了自己的repo中,如果希望被合并,那么在github中进行pull request 操作即可。

使用git commit -a可以不用再git add

在本地仓库master中创建分支以进行修改,随后将其合并回master。使用git创建分支mybranch,然后切换至分支mybranch进行修改。使用git切换至分支mybranch进行修改。

或直接用
git checkout -b mybranch

在master和mybranch之间切换分支:通过git checkout切换到master,再切换到mybranch。

  • 一旦你在mybranch中完成工作并打算合并到master中:
    切换到 master 分支
    将 mybranch 分支合并到 master 分支
    然后删除 master 分支 //删除当前分支

因此流程为(均为双横线):

复制代码
    git pull –rebase [项目作者] [分支]
    git branch [开发分支的名字]
    git checkout [开发分支的名字]
    ...change sth...
    git checkout master
    git merge [开发分支的名字]
    git commit -a -m “描述”
    git branch -D [开发分支的名字]
    git push –force

git stash 命令

全部评论 (0)

还没有任何评论哟~