美文网首页
git的基本使用

git的基本使用

作者: lingfighting | 来源:发表于2016-11-27 12:52 被阅读107次

    !(https://img.haomeiwen.com/i3780525/5ba3c246a7db25e1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    注:图片链接http://www.ruanyifeng.com/blog/2014/06/git_remote.html。 侵权删

    本地项目上传到 Github
    例如:使用命令行工具创建一名为 blog的project,推送到自己的 Github

    1.新建本地blog仓库

    mkdir blog
    cd blog
    touch readme.txt
    

    //以上三步操作的是workspace

    git init
    git add readme.txt  //git add .提交当前文件前所有新增文件
    git commit readme.txt -m "commit log description" //可提交多个文件
    

    //以上操作是将workspace的文件上传到本地仓库

    • git init 将woksapce变成repository,当前文件下多了.git文件夹。**clone远程代码仓库到本地的时候,自带.git文件夹,不再需要git init **
    • git add 把文件添加到暂存区index(俗称stage)
    • git commit 提交更改,把暂存区的所有内容提交到当前本地repository

    与SVN比较
    git是commit到本地仓库,svn是commit到远程服务器。svn没有上图中pull、fetch/clone、push、Repository。git的优势在于,当远程服务器duang掉时,任何本地仓库可以通过push操作恢复远程服务器上的仓库。但是svn没有这样的恢复机制

    2.在github上新建一个同名的远程仓库,并复制仓库地址

    注:创建完成后,github显示仓库里面是空的,什么都没有,只有当你将本地仓库的文件上传,才会显示文件夹

    3.把本地仓库推送到远程仓库

    把本地仓库文件推送到远程仓库的必要条件是要将暂存区文件清空。可以用commit命令将暂存区文件提交到本地仓库,也可以用reset撤销add的操作,将文件从暂存区移除

    //本地仓库连接到remote仓库,并给remote地址取别名叫origin,以后推送就不需要再使用远程地址
    git remote add origin remote仓库名
    //把本地仓库的文件推送到远程仓库。-u(--set-upstream)设置push分支,设置以后可直接使用git push命令
    git push -u origin master
    

    • git remote -v //查看origin对应名称
    • git push remote地址 master //不使用别名的推送命令
    • git remote set-url origin remote地址 //给origin重新定位

    从远程仓库中下载项目文件到本地

    git clone 远程仓库名
    git pull origin master 相当于svn的update,在git里面相当于执行了git fetch之后与workspace代码合并
    

    创建branch

    git branch 项目分支名    //创建分支
    git checkout 项目分支名    //切换到刚刚新建的分支。本次仓库也会自动切换。这样就不需要为同一项目上衍生的多个小项目新建仓库。svn就需要建立多个本地文件夹
    git branch    //查看当前分支
    git branch -a    //查看所有的分支
    git push origin 项目分支名  //将新建分支推送到远程仓库
    

    删除文件

    git rm filename
    git add -A .
    git commit -m "commit log descripition"
    git push origin master  //同步远程仓库
    

    :本地错误删除使用git reset --hard HEAD恢复文件

    合并branch

    git checkout master
    git merge 项目分支名    //将新的分支合并到master分支
    git push origin master    //将合并后的master分支提交到远程仓库
    

    代码回退

    //暂存区回退
    git checkout -- filename  //文件一经修改就进入暂存区。此命令是恢复文件,清除修改
    //本地仓库回退
    git reset HEAD filename
    git reset --hard HEAD    //对未commit的被git接管的修改文件,不经过checkout直接回到本地仓库当前版本,当前修改丢失
    git reset HEAD指针    //回退到本地仓库指定版本。未commit的被git接管的修改文件,修改内容不会丢失
    //本地回退后,同步远程
    git push origin master  //协作开发时需谨慎
    


    1.HEAD指针在commit时会改变,通过git log命令查看之前的HEAD指针。用reset命令回到以前版本,用checkout命令撤销在当前版本上还未commit的修改。
    2.git reset HEAD filename命令在文件第一次add进暂存区,还未commit时有效,相当于解除git对该文件的管理。已经在git管辖范围里,对修改的文件进行撤销无效,因为文件没有commit,HEAD指针没有改变。此时的撤销修改请用git checkout命令.

    //远程仓库回退

    常用查看信息的命令

    • git status 随时关注当前文件夹下文件的修改状况
      • 增加了新文件
    $ git status
    On branch master
    Your branch is up-to-date with 'origin/master'.
    //未追踪文件
    Untracked files:
    //使用命令git add将新文件add进需要commit的阵列
      (use "git add <file>..." to include in what will be committed)
            test.txt
    //没有文件需要commit,但是有还没有确定路径的文件,请用git add添加
    nothing added to commit but untracked files present (use "git add" to track)
    
    • 修改了原来已有的文件(相当于把文件从本地仓库移到了暂存区),但是还未commit
    $ git status
    On branch master
    Your branch is up-to-date with 'origin/master'.
    Changes not staged for commit:
    //使用git add命令更新需要commit的文件
      (use "git add <file>..." to update what will be committed)
    //使用git checkout命令撤销修改
      (use "git checkout -- <file>..." to discard changes in working directory)
            modified:   index.html
    //没有新文件需要add,然后commit
    no changes added to commit (use "git add" and/or "git commit -a")
    

    注:
    1.新增文件第一次add之后,还没commit之前,可用git reset HEAD filename命令撤销,解除新增文件和git之间的关系,新增文件从暂存区移除,即把staged文件变为untracked文件
    2.已经被git接管的文件,一经修改,该文件进入暂存区,提交到本地仓库时,可以不需要再使用add命令。
    3.已经被git接管的文件,修改后,没commit之前用git checkout -- filename命令撤销本地文件修改,即将暂存区的文件恢复到之前状态,清空暂存区

    • git diff 顾名思义就是查看difference,显示的格式正是Unix通用的diff格式。
    • git log 命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file。
    • git reflog 所有改动日志

    文章著作权归本人所有,转载须说明来源。以上命令均为测试所得,如有出入,望指正。

    相关文章

      网友评论

          本文标题:git的基本使用

          本文链接:https://www.haomeiwen.com/subject/xvaipttx.html