• Git常用命令


    Git常用命令

    • 前阵子在字节跳动广告创意中心实习的时候,发现自己对Git不是很精通。因此写下这篇博客,作为一份备忘录,记录本人经常使用的Git命令操作。

    • git config

      • git config --global user.name "xx"
      • git config --global user.email "xxx@example.com"
      • git config -l 查看配置信息
    • git branch

      • git branch 查看所有本地分支
      • git branch -r 查看所有远程分支
      • git branch -a 查看本地分支+远程分支
      • git branch xx 创建新分支
      • git branch -d xx  删除分支
      • git branch -v 查看各个分支最后一个提交信息
      • git branch --track dev origin/dev是创建一个新分支,并关联,若本地已存在,则会报本地分支已存在的错误
      • git branch --set-upstream-to=origin/dev dev 如果本地分支已存在,那使用--set-upstream-to来代替
      • git branch -u origin/xxx 设置当前分支跟踪远程分支origin/xxx
      • git branch -vv 查看本地分支和远程分支的跟踪关系
    • git remote

      • git 添加新的远程仓库,删除掉现在的
      • git remote -v 列出远程仓库的详细信息
      • git remote rm origin 删除远程仓库
      • git remote add origin(可修改) git@github.com:xxx/xxx.git 将本地仓库与远程仓库建立连接
      • git remote set-head origin branch_name 切换HEAD分支
    • git checkout

      • git checkout xx 切换分支
      • git checkout -b dev(本地分支名) origin/dev(远程分支名)达到关联效果
      • git checkout --
        • 放弃工作区修改,从版本库中拉取还原。
    • git push

      • git push <远程主机名> <本地分支名> :<远程分支名> 将本地版本库的分支推送到远程服务器上对应的分支
      • git push origin master:refs/for/master 将本地的master分支推送到远程主机origin上的对应master分支
      • git push origin master 远程分支被省略,则表示将本地分支推送到与之存在追踪关系的远程分支(如果未关联,则是同名分支)
      • git push --force origin master 一般使用git push的时候,本地需要先与远端保持一致,使用--force可以强制推送(我一般用于 git commit --amend 之后)
    • git pull

      • 尽量用git fetch 和 git merge 代替git pull
      • git pull origin master 等价于
        • git fetch origin master
        • git merge origin/master
    • git fetch

      • 相当于远程获取最新版本到本地,不自动merge

      • git fetch origin branch_name

        • 该操作不会在本地创建新的branch。设定当前分支的FETCH_HEAD' 为远程服务器的branch_name分支。
      • git fetch origin branch1:branch2

        • 使用远程branch1分支在本地创建branch2(但不会切换到该分支),如果本地不存在branch2分支, 则会自动创建一个新的branch2分支,
        • 如果本地存在branch2分支, 并且是`fast forward', 则自动合并两个分支
      • 利用git fetch拉取远端数据的方法

        • 方法一
          • git fetch origin master 从远程的origin仓库的master分支下载代码到本地的origin/master
          • git merge origin/master 把远程下载下来的代码合并到当前本地仓库
        • 方法二
          • git fetch origin master:temp 从远程的origin仓库的master分支下载到本地分支temp
          • git merge temp 合并temp分支到当前分支 (之后git push)
      • 本地代码误删

        • git fetch --all && git reset --hard origin/master && git pull
    • git stash (把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录。)

      • git stash 等价于 git stash save
      • git stash save message, message是文字说明
      • git stash list,显示保存的工作进度列表,编号越小代表保存进度的时间越近
      • git stash pop stash@{num}, 恢复工作进度到工作区
      • git stash apply stash@{num}, 恢复工作进度到工作区且该工作进度可重复恢复
      • git stash drop stash@{num},删除一条保存的工作进度
      • git stash clear, 删除所有保存的工作进度
      • 如果想git stash 部分文件:
        • git stash -p,交互式命令,决定每个文件的操作方式
        • git stash push or git stash push -m message ,执行该操作前应该已经add过
        • git stash --keep-index -> git reset
    • 注意,分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

    • 工作时,push的代码不完善需要重新commit,但又不希望产生多次提交,污染日志,采用如下方法:

      • git add xx
      • git commit --amend --no-edit
      • git push --force xxx
    • git log --pretty=oneline 只会显示版本号和提交时的备注信息(或 git log --oneline)

    • git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)

      • 例如执行 git reset --hard HEAD~1,退回到上一个版本,用git log则是看不出来被删除的commitid,用git reflog则可以看到被删除的commitid,便于恢复到被删除的那个版本。
    • git rm --cached 撤销add操作

    • git reset HEAD . 撤销add操作

    • 撤销commit操作:

      • git reset --soft HEAD~1
    • 当本地代码与远程仓库发生冲突:

      • 希望本地代码覆盖远程仓库
        • 利用git stash保存本地 -> git pull 覆盖 -> git stash pop 再覆盖
        • 或者笨方法,本地重命名保存
      • 希望远程仓库覆盖本地代码
        • git checkout file,放弃工作区的修改
    • 其余常用命令,有时间再总结

      • git diff
      • git rebase
      • git reset 用于回退版本
      • git revert 用于“反做”某一版本,以撤销该版本,会生成一个新的版本
      • git log
    • 解决Github 每次上传都要输入用户名和密码

    • 如何写.gitignore

    • 如何合并远程分支

    • git全方位解读

    • git常用命令解读

  • 相关阅读:
    Oracle EXP
    Using Spring in Web and WinForms
    System.ComponentModel(未完...)
    工作必须得到强势方的支持!
    book.Save()还是bookManager.Save(book)?
    C#中常用的Attribute搜集(刚开始...)
    领域模型是否能够屏蔽数据库?
    合格代码的最基本的标准
    关于配置系统的设计
    对象分类
  • 原文地址:https://www.cnblogs.com/szxspark/p/11828235.html
Copyright © 2020-2023  润新知