zoukankan      html  css  js  c++  java
  • Git常用指令

    秘钥

      生成秘钥

        $ ssh-keygen (按照提示指定存放目录和密码)

        其它形式:$ ssh-keygen -t rsa -C "your_email@example.com" (...)

      查看公钥

        $ cat ~/.ssh/id_rsa.pub

    配置

      用户信息

        $ git config --global user.name "John Doe"

        $ git config --global user.email johndoe@example.com

      文本编辑器

        $ git config --global core.editor emacs (默认通常是Vim)

      检查配置信息

        $ git config --list (所有)

        $ git config <key> (检查某一项配置,如:git config user.name)

      

    创建版本库

      $ git init

    把文件添加到版本库

      step1: 用命令 git add 告诉Git,把文件添加到仓库

        $ git add file.txt (一次提交多个文件 $ git add file1.tet file2.txt ...)

      step2: 用命令 git commit 告诉Git,把文件提交到仓库

        $ git commit -m "提交描述xxx" 

    查看文件状态

      $ git status

    查看文件修改内容

      $ git diff file.txt

      或查看工作区和版本库里最新版本版本的区别:

      $ git diff HEAD -- file.txt

    查看提交日志(从最近到最远,HEAD指向当前版本)

      $ git log 或 $ git log --oneline (简短commit id) 或 $ git log --pretty=oneline (完整commit id)

    查看命令历史(可查看版本回退后不见的commit id,以便重新返回到“未来”某个版本)

      $ git reflog

    查看文件内容

      $ cat file.txt

    版本回退

      $ git reset --hard commit_id (commit_id 具体的提交ID)

      $ git reset --hard HEAD^ (HEAD^ 表示回退到上个版本)

    撤销工作区的修改

      $ git checkout -- file.txt (命令中“--”很重要,没有“--”,就变成“切换到另一个分支”的命令了)

      分两种情况:

        一种是file.txt文件自修改后还没有被存放到暂存区(未git add),现在,撤销修改就回到和版本库一模一样的状态;

        一种是file.txt文件已添加到暂存区后,又做了修改,现在,撤销修改就回到添加到暂存区后的状态(已git add的内容不变,未git add的内容全部撤销修改)。

        总之,就是让这个文件回到最近一次git commit 或git add 时的状态。

    撤销暂存区的修改

      $ git reset HEAD file.txt (把暂存区(git add)的修改撤销掉,重新放回工作区)

    删除文件

      step1:直接删除文件,或者用rm命令(没有git前缀)

        $ rm file.txt

      step2: 面临两个选择,确定要删除还是重新恢复

      重新恢复:

        $ git checkout -- file.txt (git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”)

      确定要删除(需要执行两个命令):

        $ git rm file.txt (或 git add file.txt)

        $ git commit -m "提交描述" 

    关联本地仓库到远程仓库(远程空仓库)

      step1: 关联远程仓库

        $ git remote add origin git@server-name:path/repo-name.git

      step2: 推送本地分支的所有内容到远程仓库

        $ git push -u origin master (第一次推送时加上参数 -u,会将本地的master分支和远程的master分支关联起来)

      step3: 推动后续的本地提交到远程仓库

        $ git push origin master (后续的推送不需要加参数 -u,会自动关联本地的master分支和远程的master分支)

      注意:本地的仓库名需要与远程的仓库名相同

    关联本地仓库到远程仓库(远程仓库已有内容)

      step1: 关联远程仓库

        $ git remote add origin git@server-name:path/repo-name.git

      step2: 拉取远程内容到本地

        $ git pull origin master --allow-unrelated-histories

      step3: 解决冲突

        step2有时会出现冲突(master|MERGING),需要根据实际情况解决冲突

      step4: 提交合并后的内容

        $ git add file.txt

        $ git commit -m “解决冲突”

        $ git push -u origin master

      说明:step2中,执行命令git push -u origin master 会因为远程仓库中已有提交而失败,执行git pull 会因为还未关联远程分支而失败;

    删除与远程库间的关联

      $ git remote rm origin (删除成功后可重新关联新的远程库)

    从远程库克隆

      $ git clone git@server-name:path/repo-name.git (或 git clone https://server-name:path/repo-name.git)

      说明:

        ① Git支持多种协议,默认的 git:// 使用ssh,但也可以使用 https 等其它协议

        ② 使用 https 除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令(有的只需要第一次输入)

    分支常用命令

      $ git branch (查看本地分支;git branch -r 查看远程分支;git branch -a 查看本地和远程分支)  

      $ git branch <branch_name> (创建本地分支)

      $ git checkout <branch_name> 或者 git switch <branch_name> (切换分支)

      说明:git switch 命令是git v2.23 版本新发布的

      $ git checkout -b <branch_name> 或者 git switch -c <branch_name> (创建并切换分支)  

      $ git checkout -b <branch_name> origin/<branch_name> (检出远程分支到本地)

      $ git branch --set-upstream-to=origin/<branch_name> <branch_name> (建立本地分支和远程分支的关联,远程库中已有要关联的分支才成功)

      $ git push --set-upstream origin <branch_name> (建立本地分支和远程分支的关联,远程库中没有要关联的分支)

      $ git merge <branch_name> (合并branch_name分支到当前分支)

      $ git branch -d <branch_name> (删除本地分支)

      $ git branch -D <branch_name> (强行删除,可强行删除有提交未合并的分支)

      $ git push origin --delete <branch_name> (删除远程分支)

      $ git push origin <branch_name> (推送本地提交到远程分支)

      $ git branch -vv (查看本地分支与远程分支的追踪关系)

      $ git fetch origin -p (删除远程仓库已删除的远程分支,或:git fetch --prune origin)

      $ git push -f origin <branch_name> (强推)

    删除远程已删除的分支 

      step1: 查看remote地址,远程分支,还有本地分支与之相对应关系等信息 

        $ git remote show origin 

      step2: 根据提示,删除远程仓库中已不存在的远程分支 

        $ git remote prune origin

    合并、解决冲突

      step1: 合并其它分支内容到当前分支

        $ git merge branch_feature

      step2: 解决冲突(当合并发生冲突时,状态变为 mater|MERGIN)

        ① 根据具体情况手动解决冲突

        ② git add file.txt

        ③ git commit -m "confict fixed" (状态恢复为 master)

        ④ git push origin master

      提示:查看分支的合并情况,git log --graph --pretty=oneline --abbrev-commit

    禁用Fast forward模式

      $ git merge --no-ff -m "合并描述信息" develop

    暂存

      $ git stash list (查看所有暂存)

      $ git stash (暂存,默认,最新的暂存stash@{0},之前的暂存索引依次增加1)

      $ git stash save "save message"  (暂存,添加暂存描述)

      $ git stash show [stash@{<num>}] (显示增减的行数,默认显示最新的暂存的改动)

      $ git stash show -p [stash@{<num>}] (显示具体的改动)

      $ git stash apply [stash@{<num>}] (恢复stash,但不删除stash)

      $ git stash pop [stash@{<num>}] (恢复stash,同时删除stash)

      $ git stash drop [stash@{<num>}] (删除stath)

      $ git stash clear (删除所有暂存)

    复制其它分支的提交内容到当前分支

      $ git cherry-pick <commit_id>

    查看远程库信息

      $ git remote

      $ git remote -v (“fetch”, 可拉取;“push”,可推送。没有“push”的链接,说明没有推送权限)

    合并提交

      $ git rebase i start_commit_id end_commit_id

     获取远程主机的更新到本地

      $ git fetch origin

  • 相关阅读:
    第二章 1.绘制文本
    在Windows Mobile 5中使用DirectShow控制摄像头转
    写会议纪要也是需要水平滴
    注重实效的程序员(The Pragmatic Programmer)[转载]
    项目经理面试指南(上)[转载]
    上海西门子培训序
    周末桂林游
    我们应该如何面试程序员/技术人员?
    Erlang Code Auto Reloader
    新车落地几种常见的配件加装建议
  • 原文地址:https://www.cnblogs.com/uakora/p/6661509.html
Copyright © 2011-2022 走看看