当前位置 博文首页 > XSES_yasuoman的博客:git基础操作总结,git推送本地分支到远程

    XSES_yasuoman的博客:git基础操作总结,git推送本地分支到远程

    作者:[db:作者] 时间:2021-08-31 22:27

    git命令总结

    git --version              # 查看版本信息
    

    基础配置

    git config --global user.email "you@example.com"
    git config --global user.name "Your Name"
    """
    再次强调,如果使用了--global选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。 当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有--global选项的命令来配置。
    """
    git config --list          # 查看配置
    git config user.name       
    git config user.email
    

    基础操作

    git init                   # 仓库初始化
    git add <file>             # 往库中添加文件
    git status                 # 查看仓库状态
    git rm --cached <file>...  # 移除git add向缓存中添加的文件
    git commit -m ”commit xxx“ # 提交到Git 仓库 -m 代表提交信息
    git commit -a -m “massage” # 加的 -a 参数可以将所有已跟踪文件中的执行修改或删除操作的文件都提交到本地仓库,即使它们没有经过 git add 添加到缓存区,注意,新加的文件(即没有被 git 系统管理的文件)是不能被提交到本地仓库的。建议一般不要使用 -a 参数,正常的提交还是使用 git add 先将要改动的文件添加到暂存区,再用 git commit 提交到本地版本库。
    git commit --amend         # 追加提交,它可以在不增加一个新的commit-id的情况下将新修改的代码追加到前一次的commit-id中
    git log                    # 打印 Git仓库提交日志、显示作者 时间 提交信息
    

    commit后才会有分支

    git branch                 # 查看分支
    git branch xxx             # 创建一个xxx分支
    git branch -d xxx          # 删除分支 
    git branch -r              # 查看远程分支
    git branch -a              # 查看所有分支
    git branch -vv             # 查看分支联系
    git branch -u origin/serverfix #关联远程分支
    git branch --set-upstream-to origin/远程分支名     #关联远程分支
    git checkout xxx           # 切换至xxx分支/标签
    git checkout -b xxx        # 建立分支后自动切换到该分支
    git branch -D xxx          # 强制删除 xxx 分支
    git merge xxx              # 合并分支
    # 首先需要切换到 master 分支
    # 执行 git merge xxx , xxx 分支的代码合并到 master 分支
    

    远程操作

    ssh密钥本地与github匹配

    https://github.com/CatOneTwo/GitHub-Tutorial/issues/4

    clone push 以及 pull 操作

    git clone URL              # clone 库
    
    • HTTPs git clone 到本地,进行了一些文件的修改,当再次提交到 GitHub远程服务器的时候,都会进行账号与密码的输入
    • SSH git clone 到本地之后,由于已有 SSH Keys 授权,就不需要用户名和密码进行授权了,←←←优先用这个啦!
    git push origin master     # 把本地代码推到远程 master 分支
    git pull origin master     # 把远程最新的代码更新到本地
    git pull <远程主机名> <远程分支名>:<本地分支名>  # 把远程最新的代码更新到本地
    git push <远程主机名> <本地分支名>:<远程分支名>  # 远程分支无的时候可以直接创建远程分支
    

    本地库连接远程库

    git remote add origin URL  # 本地库连接远程库
    git remote -v              # 查看远程库连接情况
    

    创建远程分支

    git push <远程主机名> <本地分支名>:<远程分支名> # 远程分支无的时候可以直接创建远程分支
    

    关联远程分支

    git branch --set-upstream-to origin/远程分支名     # 关联远程分支
    git branch -u origin/serverfix                   #关联远程分支
    

    移除远程仓库联系

    git remote rm origin // 移除本地关联
    git remote add origin git@github.com/example.git // 添加线上仓库
    git push -u origin master // 注意:更改后,第一次上传需要指定 origin
    

    删除远程文件

    预览将要删除的文件

    git rm -r -n --cached 文件/文件夹名称 
    加上 -n 这个参数,执行命令时,是不会删除任何文件,而是展示此命令要删除的文件列表预览。
    

    确定无误后删除文件

    git rm -r --cached 文件/文件夹名称
    

    提交到本地并推送到远程服务器

    git commit -m "提交说明"
    git push origin master
    

    修改本地 .gitignore 文件 并提交

    git commit -m "提交说明"
    git push origin master
    

    删除远程分支

    git push --delete origin xxxx
    git push origin :xxx       # 注意是冒号前面,省略 [本地分支],“在这提取空白→把它变成[远程分支]”
    

    实例之推送流程

    本地分支向一固定分支推送

    1. GitHub上创建仓库(创建了README.md,且有一固定名字分支情况下,设default分支名字是"main")

    2. 本地git init

    3. 本地 git remote add origin URL

    4. 本地 git pull <远程主机名"origin"> <远程分支名"main">:<本地分支名"master"> # 把远程最新的代码更新到本地

    5. 本地 git branch --set-upstream-to origin/<远程分支名"main"> # 关联远程分支

      * master fa87883 [origin/main: ahead 1, behind 1] test
      
      • 出现类似如上信息,则说明关联成功,master为本地分支名,main为远程分支名,test为commit提交信息

      • 如果push时,严格使用git push <远程主机名> <本地分支名>:<远程分支名>,则不需要第5步关联远程分支了!

    6. 本地 git add .

    7. 本地 git commit -m "xxx"

    8. 本地 git push <远程主机名> <本地分支名"master">:<远程分支名"main">

    【注:易错点】

    如果在第3步后 没有先 进行git pull <远程主机名> <远程分支名>:<本地分支名>合并远程分支到本地(同时使得两个分支初始历史记录一致) ,而是先进行了git add .操作的话

    (由于远程分支和本地分支是两个独立的分支,本地先 git add .导致本地历史先出现了更改操作,本地分支与远程分支历史不同步,后续操作会出现错误,如下表)

    操作错误
    git pull <远程主机名> <远程分支名>:<本地分支名>fatal: refusing to merge unrelated histories
    git push <远程主机名> <本地分支名>:<远程分支名>failed to push some refs to git

    这种情况可以使用 在操作后+--allow-unrelated-histories的方法来忽略两个分支历史联系,例如:

    • git pull <远程主机名> <远程分支名>:<本地分支名> --allow-unrelated-histories
    • git push <远程主机名> <本地分支名>:<远程分支名> --allow-unrelated-histories

    本地分支向远程仓库推送到一个新分支(原来没有,需要在git过程中创建)

    1. GitHub上创建仓库,你不想推送至main分支,而是一个新的分支"new"

    2. 本地git init

    3. 本地 git remote add origin URL

    4. 本地 git add .

    5. 本地 git commit -m "xxx"

    6. 本地 git push <远程主机名"origin"> <本地分支名"master">:<远程分支名"new">

      上面提到过,该命令可以直接创建远程分支。

     * [new branch]      master -> new
    

    ? 出现上述,说明创建成功,new为远程分支名

    1. 如果你本地没有写README文件,你也可以在GitHub中创建你的README文件。

    【注】

    直接push即可,无需关心git add .命令是否会破坏历史记录,既然远程仓库还没有分支,何来破坏可言,push时输入想要创建的分支名字,会直接同步历史创建该分支。

    cs