【Git】3.git常用命令(结合提交/拉取代码)

这篇具有很好参考价值的文章主要介绍了【Git】3.git常用命令(结合提交/拉取代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:

        跟git交互有好多场景,比如第一次推送代码;第一次拉取git上已有的项目;修改代码推送解决冲突;代码提交错误会滚等。接下来就结合场景来学习git命令吧~

目录:
        前提:

                在下列场景操作时的前提是需要先配置好git全局用户名和邮箱,在git上配置SSH 公钥实现免密登录。具体配置已在文档里面第2,3点阐述:【Git】第一次推送代码到gitLab-CSDN博客

                                                                正常场景如下:
场景一:目前在Git上没有项目,第一次推送项目

​​​​​​【Git】第一次推送代码到gitLab-CSDN博客

场景二: Git上有项目,本地无该项目需要克隆项目并自动生成一个本地仓库
步骤1: 想要将项目放在桌面Desktop

        cd ~/Desktop

步骤2: 克隆项目到桌面

        git clone <此处为项目的SSH地址>
场景三:修改代码并推送
前提:切换到master分支先拉取最新代码 
    git pull origin master

一般不直接在master分支上改代码,需要额外创建自己的本地分支

步骤1: 克隆项目打开后,会默认在本地master分支上。先查看本地所有分支,其中分支为绿色且跟*代表当前所在分支

        git branch


步骤2:需要创建新分支ha并切换

        方式一: 创建并切换到新分支  git checkout -b ha
        
        方式二: 先创建新分支  git branch ha
                后切换分支   git checkout ha
步骤3:在新分支ha上修改代码进行推送
 

    #将工作区所有改动的文件添加到暂存区
    git add . 

    #将暂存区的文件推送到本地仓库
    git commit -m "此处为commment" 

    #查看工作区文件的状态: 
         untracked file 即新建文件未跟踪->pycharm显示文件为红色
    
         working tree clean 即文件在暂存区待提交->pycharm显示文件为绿色
         Changes not staged for commit即commit过&文件发生修改但未暂存->pycharm显示文件为蓝色
         Changes to be committed即文件已暂存,下次提交

    git status 


    #将本地仓库代码推送到远程仓库
    git push origin ha  

步骤4: 发起merge request而后审批通过

步骤5: 切换本地分支到master

        git checkout master

步骤6: 拉取最新代码

        git pull origin master

步骤7: 查看远程仓库,应该有master和ha

    git branch -r

步骤8: 以行查看最近提交的3条日志,会有commit哈希值和当前head指向和远程仓库的commit

    git log -3 --oneline
            
                                                        异常场景如下:
场景一删除(针对工作区的处理):git rm  <file>相当于rm和git add
所有场景的前提: hello.py文件commit过到本地仓库即被跟踪的文件
-------------------------------------------------------------
场景1:某个py文件需要下掉不再使用,就需要删除工作区文件并且推送到本地仓库更新版本库

前提:文件未发生修改即 当前工作区的文件内容同当前版本库的内容一致

步骤1: 删除工作区的文件并将该文件添加到暂存区

        git rm hello.py

步骤2: 查看文件状态: Changes to be committed: deleted hello.py

        git status

        

步骤3: 推送到本地仓库

        git commit -m "此处为comment"


最终: 当前版本库的文件和工作区文件保持一致


-------------------------------------------------------------
场景2: 同场景1
前提:文件发生修改

步骤1: 强制删除工作区的文件并将该文件添加到暂存区

        git rm -f hello.py

步骤2: 推送到本地仓库

-------------------------------------------------------------
场景3: 某个py文件不希望被提交,仅在工作区使用.比如日志文件,缓存文件/误提交,想要从版本库删除
解决方案: 使用.gitignore文件添加需要忽略的文件
步骤1: 删除文件

        git rm --cached hello.py

步骤2: 查看文件状态

        git status  
        # Changes to be committed: deleted hello.py 需要commit的
        # unpacked file: hello.py 被取消退回工作区即未被跟踪

步骤3: 推送到本地仓库会更新版本库

步骤4: 查看工作区文件还在

场景二撤销(针对暂存区的处理):git restore  --staged <file>
-------------------取消暂存区的文件----------------
步骤1: 将hello.py, myapp.ini文件添加到暂存区

        git add .

步骤2: 想要将hello.py其从暂存区撤回

        git restore --staged hello.py

步骤3: 核对该文件状态

        git status  # Untracked files: hello.py且该文件在pycharm显示红色

步骤4: 所有暂存区的文件都取消

        git restore --staged .


-------------------修改暂存区文件内容但未重新暂存,想要撤回工作区的修改---------------
步骤1: 将hello.py添加到暂存区

        git add .

步骤2: 对该文件进行修改


步骤3: 查询本地仓库文件状态,简洁展示为: M hello.py  即modified hello.py

        git status -s

步骤4: 撤回修改

        git restore hello.py

-------------------修改暂存区文件本身(删除文件)但未重新暂存,想要撤回修改---------------

场景三重置(针对本地仓库处理):git reset  --options <目标commit 哈希值>
--------------------(谨慎操作)工作区删除,暂存区删除,本地仓库&远程仓库删除------------------
步骤1: 新增hello.py文件并添加到暂存区

        git add .

步骤2: 推送到本地仓库

        git commit -m "此处为comments"

步骤3: 推送到远程仓库

        git push origin master


步骤4: 查看已经提交的commit记录
        
        git log --oneline  # 行形式查看未删除的commit,会有commit的哈希值和HEAD指向
        # 假设当前已经commit的记录有如下:

        234dr  (HEAD->master,origin master)hello.py
        1e2d3  addFile.py

步骤5: 撤回并删除hello.py文件
        
        git reset --hard 1e2d3

步骤6: 查看HEAD当前指向的commit

        git log --oneline

        # 当前已经commit的记录如下:

        1e2d3  (HEAD->master)

reset操作会导致本地仓库和远程仓库的版本不一致,后续push也会有问题
        解决办法:
        git reflog  # 查看所有分支的操作记录(包括已删除的commit和reset),找到删除的commit哈希值

步骤8: 再次使用reset恢复


        git reset --hard <被删除的commit哈希值>




-----------------------2.工作区删除,暂存区删除,本地仓库回滚到指定commit---------------
步骤1: 新增hello.py文件并添加到暂存区

        git add .

步骤2: 推送到本地仓库

        git commit -m "此处为comments"

步骤3: 查看未被删除的commit记录以及当前HEAD

        git log --oneline
        
        # commit列表:
        8b9c1c3 (HEAD -> master) hello.py
        0d64047 (origin/master) fix

步骤4: 回退到上一个commit即撤回并删除提交到本地仓库的文件hello.py

        git reset --hard 0d64047


---------------------3.工作区保留,暂存区保留,本地仓库回滚到指定commit-------------------
步骤1: 新增hello.py文件并添加到暂存区

        git add .

步骤2: 推送到本地仓库

        git commit -m "此处为comments"

步骤3: 查看未被删除的commit记录以及当前HEAD

        git log --oneline
        
        # commit列表:
        aa9825a (HEAD -> hmx) hello.py
        b19a398 bcde.py
        31ec1be bce.py


步骤4: 回退到上一个commit

        git reset --soft b19a398

步骤5: 再次查看提交日志

        # commit列表:
        b19a398 (HEAD -> hmx) bcde.py
        31ec1be bce.py

步骤6: 查看文件的状态都为:Changes to be committed

--------------------4.工作区保留,暂存区文件取消,本地仓库回滚-------------------

步骤1: 新增hello.py文件并添加到暂存区

        git add .

步骤2: 推送到本地仓库

        git commit -m "此处为comments"

步骤3: 查看未被删除的commit记录以及当前HEAD

        git log --oneline
        
        # commit列表:
        aa9825a (HEAD -> hmx) hello.py
        b19a398 bcde.py
        31ec1be bce.py


步骤4: 回退到上一个commit

        git reset --mixed b19a398

步骤5: 再次查看提交日志

        # commit列表:
        b19a398 (HEAD -> hmx) bcde.py
        31ec1be bce.py

步骤6: 查看文件的状态都为:Untracked files
场景三(针对本地仓库恢复):revert
场景四:隐藏(切换分支,隐藏工作区/暂存区的文件):git stash 

                git有多个提交区,提交之后切换分支不会受到影响

                但git只有一个工作区和暂存区,文件在工作区/暂存区切换分支会受到影响

---------------commit之后切换分支--------------------------------
步骤1: 新增hello.py文件并添加到暂存区

        git add .

步骤2: 推送到本地仓库

        git commit -m "此处为comments"

步骤3: 切换到分支B,看不到hello.py文件


        git checkout B

----------------暂时不想commit切换分支也不希望其他分支受到影响--------------

步骤1: 分支A下新增hello.py文件添加到暂存区; world.py文件在工作区

步骤2: 隐藏工作区和暂存区的上述2个文件

        git stash save "此处为备注,方便恢复时查找"

步骤3: 切换到分支B,看不到2个文件

步骤4: 切换到分支A,列出隐藏工作现场的文件list

        git stash list  # 比如 stash@{0}: On A: hello.py&world.py

步骤5: 恢复工作现场并删除隐藏记录


        git stash pop stash@{0}

----------------在工作区直接切换分支----------------------

步骤1: 在当前分支A下新增hello.py文件

步骤2: 切换到分支B, 也可以hello.py文件


---------------暂存区直接切换分支------------------------

步骤1: 在当前分支A下新增hello.py文件

步骤2: 将文件添加到暂存区

步骤3: 切换到分支B, 也可以hello.py文件

场景五:git checkout
总结
(1)会碰到的报错:
        1. 拉取远程仓库代码的时候

        报错:fatal: Need to specify how to reconcile divergent branches.

        解决:

        2. 推送代码的时候

        报错: ! [rejected]        master -> master (non-fast-forward) error: failed to push some refs to 'gitee.com:xxx'

        原因排查:

                排查1: 进行reset后,git版本不一致导致的

                解决1: 使用 git reset --hard <此处为误删除的commit的哈希值>,操作该命令再进行push

        3. 代码推送到本地仓库后,切换分支

        报错:error: Your local changes to the following files would be overwritten by checkout:
        x x.py
                        Please commit your changes or stash them before you switch branches.
                        Aborting

        原因: 文章来源地址https://www.toymoban.com/news/detail-761712.html

(2)reset,revert,checkout的区别

到了这里,关于【Git】3.git常用命令(结合提交/拉取代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • idea提交代码到git以及git常用命令

    本次操作以将本地代码提交到gitlab为例,不过都大同小异,差别不大。 Git 作为分布式版本控制软件,存储文件的位置叫做仓库。仓库有远程仓库(互联网上一台服务器或局域网内的一台服务器)和本地仓库(本机的一个目录)两种。 系统中任意文件夹都可以作为本地仓库。

    2024年02月04日
    浏览(112)
  • 【Git】拉取代码/提交代码

    1.从将本地代码放入远程仓库 ( 如果有分支的情况 ) [git checkout xx切换分支后 git add . 将本地所有改动文件新增 commit之后 git push(将代码全部提交)] 分支操作 2.在远程仓库拉取代码放入本地 🍉🍉🍉第一次从线上拉取代码到本地时,输入克隆命令: git clone 远程仓库地址 Errno -

    2024年02月11日
    浏览(104)
  • Git拉取和提交代码

    git管理程序的整体流程如下: git其他分支合并代码到master分支 git主分支代码合并到自己的分支(主分支代码一般领先于自己的分支)

    2024年02月06日
    浏览(63)
  • git拉取历史提交的代码

    我们在写项目时,通常提交很多次代码,如果我们想拉取历史commit的某次代码,该如何做呢? 首先:将整个代码拉取到本地 接着,查看提交日志: 可以查看到黄色的commit的哈希值。 再创建新的分支并切换到新分支 最后,输入代码

    2024年03月23日
    浏览(58)
  • 潇洒郎: git配置、拉取、提交代码

    git config --global user.name \\\"xuxiaosa\\\" git config --global user.email \\\"xuxiaosa@migu.cn\\\" 1、打开git-bash 输入ssh-keygen 一直回车,会提示文件保存的地址 id_rsa,id_rsa.pub两个文件默认在user/.ssh目录下     不用https git pull git add . git commit -m \\\'优化用户建立连接后等待问题,避免超时断链\\\' git push git che

    2023年04月23日
    浏览(54)
  • VScode&Git 拉取提交推送代码

    拉取在终端输git clone  + url的地址 推送前先拉取 点击第三按钮旁边就是你修改的一些项目文件了 先添加暂存区,再写提交说明,然后点commit按钮提交代码,最后点push按钮推送到GitHub(注意先pull)    

    2024年02月11日
    浏览(66)
  • git拉取项目及提交本地代码到远程仓库

    目录 流程 创建仓库 首次拉取项目 提交项目  1.设置签名  2.查看工作区状态  3.提交 流程 首次从远程仓库中拉取项目使用Clone命令,将项目存储在自己的本地仓库中,当编辑结束,需要将更新的内容提交到远程仓库时,有这样几个步骤: 首先,需要将工作区的内容添加到暂

    2024年01月18日
    浏览(67)
  • IDEA结合Git拉取代码到自己的分支

    步骤说明: 创建自己的分支,例如:项目名_csdn_dev 在Git库中复制项目Git地址 在IDEA中选中file–new–project from Version control…输入复制的项目Git地址,以及拉取的代码在本地的存放地址 找到对应的分支拉去代码到自己的分支(项目名_csdn_dev) 详细步骤演示 : 1、创建自己的分

    2024年02月15日
    浏览(60)
  • vscode中git拉取、提交代码、解决冲突,以及合并代码的操作

    场景:本地有修改代码,远程仓库没有更新,这时本地想要提交代码。 步骤:本地修改了testA文件内容-本地先暂存提交-拉取-推送; 本地修改了testA文件内容 本地先暂存提交 拉取 推送 远程仓库上就可以看见提交记录了 解决冲突场景:本地有修改代码,远程仓库同时有更新

    2024年02月05日
    浏览(67)
  • IntelliJ IDEA切换Git远程分支 提交代码 拉取最新代码

            前言:众所周知Git用命令提交代码比较繁琐,而且还得记住命令,那如何让我们更加方便的提交代码呢 以及获取最新内容拉到本地 还有更换你要提交到的分支呢 下面废话不多说。 目录 IDEA里切换Git分支 IDEA里提交代码到远程 IDEA拉取最新代码 第一种: 右键项目

    2023年04月24日
    浏览(108)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包