• git常用命令


    一、git常用命令

    重点:提交本地分支到远程分支

    git push origin test:master         // 提交本地test分支作为远程的master分支 //好像只写这一句,远程的github就会自动创建一个test分支
    git push origin test:test              // 提交本地test分支作为远程的test分支

    实例:git push origin 20180228mybank-fbi:20180228mybank-fbi

    1、git clone

    • 获取一个url对应的远程Git repo,创建一个local copy;

    • git clone[url];

    • clone下来的repo会以url最后一个斜线后面的名称命名,创建一个文件夹,如果想要指定特定的名称,可以git clone [url] newname指定;
    2、git status
    • 查询状态;
    • git status -s: -s表示short, -s的输出标记会有两列,第一列是对staging区域而言,第二列是对working目录而言.
    图一
    3、git log(show commit history of a branch)
    • 查看提交的历史记录
    • 注意:在开发过程中多人修改同一个文件很常见,所以可以通过此命令查看修改信息记录
    图二
    4、git add
    • 在提交之前,Git有一个暂存区(staging area),可以放入新添加的文件或者加入新的改动;
    • commit时提交的改动是上一次加入到staging area中的改动,而不是我们disk上的改动;
    • git add.
    • 会递归地添加当前工作目录中的所有文件;
    • 包括一些编译器的临时文件和编译文件都会被整体add;
    • "."使用点号时,请先git status 查看当前工作区域状态,防止临时文件也被添加
    • git add[文件路径]
    • 这样可以直接具体到某个文件
    5、git commit
    • 提交已经被add进来的改动;
    • git commit -m “the commit message"
    • git commit -a
    • 会先把所有已经track的文件的改动add进来,然后提交(有点像svn的一次提交,不用先暂存). 对于没有track的文件,还是需要git add一下;
    • git commit --amend
    • 增补提交. 会使用与当前提交节点相同的父节点进行一次新的提交,旧的提交将会被取消;
    6、git revert(类似于svn的revent)
    • 反转撤销提交.只要把出错的提交(commit)的名字(reference)作为参数传给命令就可以了.
    • git revert HEAD: 撤销最近的一个提交.
    • git revert会创建一个反向的新提交,可以通过参数-n来告诉Git先不要提交
    7、git rm
    • git rm file: 从staging区移除文件,同时也移除出工作目录.
    • git rm --cached: 从staging区移除文件,但留在工作目录中.
    • git rm --cached从功能上等同于git reset HEAD,清除了缓存区,但不动工作目录树.
    8、git stash
    • 把当前的改动压入一个栈.
    • git stash将会把当前目录和index中的所有改动(但不包括未track的文件)压入一个栈,然后留给你一个clean的工作状态,即处于上一次最新提交处.
    • git stash list会显示这个栈的list.
    图三
    • git stash apply:取出stash中的上一个项目(stash@{0}),并且应用于当前的工作目录.
    图四
    • 也可以指定别的项目,比如git stash apply stash@{1}.
    • 如果你在应用stash中项目的同时想要删除它,可以用git stash pop
    • 删除stash中的项目:
    • git stash drop: 删除上一个,也可指定参数删除指定的一个项目.
    • git stash clear: 删除所有项目.
    9、git branch
    • git branch可以用来列出分支,创建分支和删除分支.
    • git branch -v可以看见每一个分支的最后一次提交.
    • git branch: 列出本地所有分支,当前分支会被星号标示出.
    10、git merge
    • 把一个分支merge进当前的分支.
    • git merge [alias]/[branch]
    • 把远程分支merge到当前分支
    11、git fetch(download new branches and data from a remote repository.)
    • git fetch将会取到所有你本地没有的数据,所有取下来的分支可以被叫做remote branches,它们和本地分支一样(可以看diff,log等,也可以merge到其他分支),但是Git不允许你checkout到它们.
    12、git pull(pull == fetch + merge FETCH_HEAD)
    • git pull会首先执行git fetch,然后执行git merge,把取来的分支的head merge到当前分支.这个merge操作会产生一个新的commit.
    • 如果使用--rebase参数,它会执行git rebase来取代原来的git merge.
    13、git rebase
    • --rebase不会产生合并的提交,它会将本地的所有提交临时保存为补丁(patch),放在”.git/rebase”目录中,然后将当前分支更新到最新的分支尖端,最后把保存的补丁应用到分支上.
    • rebase的过程中,也许会出现冲突,Git会停止rebase并让你解决冲突,在解决完冲突之后,用git add去更新这些内容,然后无需执行commit,只需要:
    • git rebase --continue就会继续打余下的补丁.
    • git rebase --abort将会终止rebase,当前分支将会回到rebase之前的状态.
    14、git push
    • git push [alias] [branch]
    • git push origin master
    • 将会把当前分支merge到alias上的[branch]分支.如果分支已经存在,将会更新,如果不存在,将会添加这个分支.
    • 如果有多个人向同一个remote repo push代码, Git会首先在你试图push的分支上运行git log,检查它的历史中是否能看到server上的branch现在的tip,如果本地历史中不能看到server的tip,说明本地的代码不是最新的,Git会拒绝你的push,让你先fetch,merge,之后再push,这样就保证了所有人的改动都会被考虑进来.
    15、关于切分支的异常处理
    • fatal: unable to stat 'node_modules/gulp-connect/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/normalize-package-data/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/parser.generated.js': Filename too long
    • git config --system core.longpaths true
    • 也可以仅设置当前项目:
    • git config core.longpaths true
    • 查看设置状态:
    • git config core.longpaths
    16、git checkout -b (创分支)
    git checkout -b [分支名称]
    git branch[分支名称] 切换到该分支
    git pull #git会提示我们相应的操作命令(如图五所示)
     
    git branch --set-upstream-to=origin/<branch> ANTM0253544_20171103_bkloansceneprod
     
    git branch --set-upstream-to=origin/ANTM0253544_20171103_bkloansceneprod ANTM0253544 _20171103_bkloansceneprod
     
    图五
  • 相关阅读:
    SQL SERVER全面优化
    Mysql常见问题及优化
    Mysql相关问答
    Activiti动态设置办理人扩展
    Activiti流程编辑器针对自定义用户角色表优化改造
    taskService 流程任务组件
    activiti 工作流 动态 设置 指定 节点任务人、责任人、组 的实现方式
    千万级规模高性能、高并发的网络架构经验分享
    B树,B+树,红黑树应用场景AVL树,红黑树,B树,B+树,Trie树
    Mybatis源码分析
  • 原文地址:https://www.cnblogs.com/xinxin1994/p/8485220.html
Copyright © 2020-2023  润新知