zoukankan      html  css  js  c++  java
  • git命令实战之血泪记录

    注意:
    本文章所写所有命令均在Git命令行窗口执行!非cmd窗口!
    打开git命令行窗口步骤为:到项目根目录下执行bash命令行操作:右键点击Git Bash Here菜单,打开git命令窗口,不是cmd窗口!如果没有该菜单,请先下载并安装小乌龟:TortoiseGit-2.3.0.0-64bit.msi
    git初次拉取远程代码到本地
    假设项目是xxx,假设已知git地址是:https://gitlab.com/zhuwenjoyce/xxx.git,假设将要存放的本地地址是:d:/workspace。
    进入目录d:/workspace,右键打开git命令窗口(Git Bash Here),顺序执行以下命令:
    mkdir xxx         新建项目文件夹
    cd xxx              进入项目文件夹根目录
    git init              指定在此文件夹下建立库概念
    git config --global user.name "wirelessqa"                               设置用户名
    git config --global user.email "wirelessqa.me@gmail.com"      设置密码
    git remote add origin https://gitlab.com/zhuwenjoyce/xxx.git    添加一个远程git地址,并命名为origin
    git remote remove origin                                               刚才那个远程git地址如果添加错了,则删除origin地址
    git pull origin master                                                               从命名为origin的远程地址上获取master分支代码
    之后如果有弹出框让你输入git的用户名密码,照做就行。
    git本地代码提交过程
    增加索引(add) -> 提交(commit) -> 推送(push)
    git status                           查看项目当前状态,列出所有文件的修改信息,以及远程同步信息,以及文件冲突信息。红色的为已修改文件但未增加索引,绿色的为已增加索引但未提交,提交之后git status命令会提示你有一个commit但尚未push(推送)
    git add .                            增加索引add to index所有的已修改文件
    git add pom.xml                 增加索引add to index指定名字的已修改文件
    git add src/*                      增加索引add to index某路径下所有已修改文件
    git commit -m "注释"           提交时必须添加注释
    git push                            推送之前所有commit提交上来的文件,不包括未提交文件,即不包括已执行add to index命令但未执行commit命令的文件,更加不会执行尚未add to index的文件。
    GIT代码还原,git回滚
    git checkout  src/main/java/com/xx/Test.java   还原指定文件,删除本地修改(未add),使用checkout命令。
    git reset HEAD.     撤销所有已经add的文件,不保留修改。
    git reset --mixed    撤销所有已经add的文件,保留修改。
    git reset HEAD -filename     撤销指定文件add操作,不保留修改。
    git reset --mixed -filename   撤销指定文件add操作,保留修改。
    git log            查看最新commit的日志,获得commit ID (黄色标识)

    git reset --hard commit_id      强制撤销该次commit,删除本地修改代码。

    git reset --hard                    后悔药!!强制还原到上次提交时代码,干掉本地所有修改,所有!如果你刚刚执行了一次git pull的操作,却发现TM有大量的!文件发生冲突,可以执行这个命令,使代码还原到上一次执行git pull 命令之前!而且!此命令会强制恢复到上次提交代码时状态,不论你后来执行了多少次pull拉取代码的操作以及任何git add to index或者git commit的操作,很神奇吧,很好用,因为有时候改着改着,你都不知道代码改成什么样了,而且又忘记了本地备份。而且,代码还原的那个状态是最干净的状态,没有任何冲突!没有任何修改!

    git reset HEAD~    撤销最后一次commit,保留所有更改文件到change列表

    更新代码
    git branch                    查看当前项目所在分支
    git pull                         默认在当前分支下执行更新命令,拉取远程代码到本地,到eclipse里面去把更新后的文件冲突解决下:在eclipse里面打开Git Staging视图,点击Unstaged Changes列表中的冲突文件逐一修改,修改完成后,在文件点击右键add index一下(添加索引,相当于git add命令),当文件显示在Staged Changes列表中则表示可以点击右边的按钮“commit and push”(提交并且推送)或者"commit"(只提交)了。
    本地分支
    git branch                            查看本地当前分支名字
    git remote -v                        查看当前项目所处的远程分支名字并列出url地址
    git branch -a                        查看所有分支名字
    git pull origin master             从指定分支(master)拉取代码到当前分支(dev),查看其它分支名字使用命令git branch -r。举例:假设当前项目分支为master, 执行git branch -r 命令后得到两个分支名字分别叫master/dev和master/fixbug,那么执行git pull master dev或者git pull master fixbug 
    git push -u origin dev 提交到指定分支上(dev)。举例:假设当前项目分支为master,执行git branch -r 命令后得到分支名字叫master/dev,那么执行git push -u master dev.
     
    远程分支
    git branch -r                                     列出已经存在的远程分支
    git fetch                                          更新本地.git文件夹。在远程有新分支的情况下,如果没有列出所有已存在的远程分支,先使用fetch命令使本地.git文件夹更新。如果fetch后使用git branch -r还是不能罗列出所有远程分支,那么删掉本地项目,送git上重新拉取一边全新的项目,再使用fetch命令更新.git文件夹,此时使用git branch -r即可以看到所有远程分支
    git remote                                       查看当前所处的远程分支名字
    git remote -v                                   查看当前项目所处的远程分支名字并列出url地址
    git remote add origin git://xxxx.git    设置远程分支属性,如果一个项目尚未连接远程。origin是分支名字,后面跟git地址
    切换远程分支
    git branch -r 获得所有远程分支,如果没有列出全部,使用git fetch --all 命令更新本地.git文件夹,就可以列出所有远程分支。
    $ git branch -r
    origin/master
    origin/develop
    
    如果使用git branch -r 无法列出远程已经存在的分支,又需要拉取这个远程分支的代码,则使用命令:
    $ git pull origin master    第1次拉取主分支
    $ git pull origin develop   第2次拉取本地不存在的分支

    git  checkout -b abcd aaa    拉取远程分支abcd的代码,并且新建本地分支命名为aaa。

    git branch                                     查看当前代码隶属分支,如果abcd前面有个*号,则切换分支到abcd成功。

    git checkout origin/master              切换到远程master分支,如果本地已经存在master分支,则不使用-b参数来创建本地分支

    小妙招:如果远程存在已经创建的新分支 branch_x,在本地使用任何命令死活出不来,有个方法可以使用:

        1、重新拉取一遍: git fetch --all

        2、切换到指定分支: git checkout branch_x

        3、拉取指定分支代码: git pull origin branch_x

    切换本地分支

    $ git branch -a
       * version2.0                      带*号表示你当前所处version2.0的分支
       abcd                                 另外你还有一个abcd的本地分支
       remotes/origin/version2.0   有一个version2.0远程分支
       remotes/origin/abcd           有一个abcd的远程分支

    git checkout abcd              切换到本地abcd分支

    git checkout origin/abcd     切换到远程abcd分支

    git branch -D master   删除本地分支master

    git切换分支保存修改的代码的方法(转载)http://www.cnblogs.com/lance-ehf/p/4963050.html

    git stash save “修改的信息" 保存一个已修改代码版本
    git stash pop 将git stash栈中最后一个版本取出来
    或者
    git stash list 列出所有的未提交修改
    git stash apply stash@{0} 可以取出指定栈中的一个版本

    PS: 去除stash列表里的已修改代码,必须相应的切换到当时保存该stash时的分支

    用户名密码
    设置
    git config --global user.name "wirelessqa"                        设置用户名
    git config --global user.email "wirelessqa.me@gmail.com"   设置密码
    查看
    git config --global user.name       查看当前用户名
    git config --global user.email       查看当前用户密码
     
    git 窗口乱码
    $ git config --global core.quotepath false    当git status乱码时,设置这个有用
     
    gitlab新建项目,项目已有代码并首次提交,远程已新建好git项目地址
    在eclipse中项目代码已经存在,而gitlab首次新建这个项目库,连master主干都无任何代码提交,这种情况下,执行以下命令:
    进入到项目根目录下,打开bash命令窗口,依次执行以下git命令:

    git config --global user.name "zhangsan"               设置用户名

    git config --global user.email "1234@qq.com"         设置密码

    git init                                                                     设置当前目录下为本地仓库目录

    git remote add origin git@gitlab.com:zhangsan/example.git       添加远程仓库git地址,在origin地址下

    git remote remove origin                                           刚才那个远程仓库地址如果添加错了,则删除origin地址

    git remote add origin https://gitlab.com/zhangsan/example.git    添加https格式的远程项目git地址,git库命名为origin,可随意命名再比如mycompany

    git add .                                                                   注意不要忽略最后的那个点,把当前目录下的所有文件都加入为提交内容,如果单个提交则是 git add xxx.java

    git commit -m '初始导入'                                           初始提交到本地仓库,只有上一步的add命令成功提交了之后,即有提交内容之后,才可以执行commit命令,否则commit命令操作失败。

    git push -u origin master                                         提交代码到命名为origin的git库,如果你上面通过git remote add XXX,添加了多个git远程库地址,这里的git库命名作用就显现出来了。首次提交代码,会先后弹出两个输入框,要求你输入代码提交时的用户名和密码,输入正确之后控制台会显示代码提交的百分比进度。

    git status                                                            查看当前项目状态,如果看见:Your branch is up-to-date with 'origin/master'.表示代码提交到gitlab成功

    git remote get-url --all origin                              查看所有push、pull动作的远程url地址

    然后在eclipse里面显示git步骤:

    先复制好git地址:https://gitlab.com/zhangsan/example.git

    项目右键 -> Team -> Share Project -> 选择git,点击next

     勾选Use or create repositories in the Eclipse……,然后点击按钮Create Repository

     

    点击Create Repository按钮,相当于执行了git init命令,就是选择一个目录当你的本地仓库的意思,建立好之后,项目以后不会再次让你选择本地仓库的地址,除非你项目右键-> Team -> Disconnect。再点击Finish按钮。

    这时候就添加成功了,校验是否添加成功,在eclipse里面Windown -> Show View -> Other -> Git Repositories,Git Repositories视图如下:

    可以看到之前添加的origin远程地址都已经显示出来了。

    git撤销修改方案

    git从修改到提交成功,文件会经过N种状态:红色的(已修改未提交),绿色的(已提交未推送push)

    git checkout -- file      当文件仅是修改未提交时,需要撤销所有文件修改

     git简化命令

    git pull

    git push

    如果想使用以上两个简化命令,而不想每次指定remote和branch,只需要像这样设置:

    git branch --set-upstream-to=github/master master   设置remote为github的远程分支master映射到本地分支master

    git拉取tag代码

    #查询远程heads和tags的命令如下:

    git ls-remote --heads origin
    git ls-remote --tags origin
    git ls-remote origin

    git pull origin refs/tags/v1.0.3       // 拉取origin库的 refs/tags/v1.0.3  tag代码

    PS:用了一段时间git之后,发现确实比SVN好用,git的正确使用方式是每个人都开一个分支,留下主分支master不要作为开发分支,只做合并就对了!
     
    1点几版本的sourcetree,git客户端
  • 相关阅读:
    asp.net core mvc 之 DynamicApi
    打造适用于c#的feign
    asp.net App_Code文件夹相关操作
    基于Mono.Cecil的静态注入
    补充ICache
    自制简单实用IoC
    自制简单的.Net ORM框架 (一) 简介
    解决Asp.net Mvc中使用异步的时候HttpContext.Current为null的方法
    微信开发之.Net
    VS2017 网站打包发布生成的文件中包含.pdb文件,解决办法
  • 原文地址:https://www.cnblogs.com/zhuwenjoyce/p/6306631.html
Copyright © 2011-2022 走看看