zoukankan      html  css  js  c++  java
  • git的常用命令

    如何提交代码到远程库

    代码提交一般有五个步骤: 
    1. 查看目前代码的修改状态 
    提交代码之前,首先应该检查目前所做的修改,运行git status命令

    • 已暂存 (Changes to be committed) 
    • 已修改 (Changes not staged for commit)
    • 未跟踪 (Untracked files) 

    2.查看代码修改内容

    git diff <file>

    比较某文件与最近提交节点的差异。
    注意:如果该文件已暂存,那么应该使用git diff –cached <file>

    还可以比较某文件在commit_id1,commit_id2的差异。

    git diff <commit_id1> <commit_id2> <file>

    如果省略后面commit_id2,则默认表示与上一提交commit_id比较

    3.暂存需要提交的文件 
    如果是新建或者修改的文件

    git add <file>

    如果是删除的文件

    git rm <file>

    4.提交已暂存的文件

    git commit -m "first commit"

    5.同步到配置库服务器 
    同步到服务器前, 先需要将服务器代码同步到本地

    git pull origin master

    如果执行失败,就按照提示还原有冲突的文件,然后再次尝试同步。

    git push origin HEAD:master

    git中的三种状态以及它们之间的转换

    命令示例:

    git reset --hard origin master 或者 git reset --hard HEAD 
    git status -s

    目前你或许已经了解,git中的文件可以有三种不同的状态:

    • 没有暂存
    • 暂存并准备提交
    • 已经提交

    通过运行git status可以看到关于文件的描述以及文件的状态。
    运行 git add <file>命令可以将文件从未暂存状态移动到暂存并准备提交的状态, 或者使用git add .命令一次性暂存所有的文件。

    通过运行git status -s命令可以看到状态图,其中-s是简短(short)的意思(个人认为),最终输出结果如图所示:
     
    显然,git status不显示已经提交了的文件,你可以使用git log命令来查看。

    日志输出参数

    命令示例:

    git log --oneline --graph

    下面是经常使用的参数

    选项含义
    --author="fireway" 只显示某个用户的提交任务
    --name-only 只显示变更文件的名称
    --oneline 将提交信息压缩到一行显示
    --graph 显示所有提交的依赖树
    --reverse 按照逆序显示提交记录(最先提交的在最前面)
    --after 显示某个日期之后发生的提交
    --before 显示发生某个日期之前的提交

    例如,要求在每周五提交周报, 所以我每周五都运行一下这个指令:

    git log --author="fireway" --after="1 week ago" --oneline

    帮助命令:

    man git log

    如果这些都不好用,git还有一个--pretty 参数,可以用来创建高级自定义输出。

    查看文件的详细变更

    命令示例:

    git -log -p <file>

    不仅显示提交说明、提交者以及提交日期,还会显示这每次提交实际修改的内容。

    然后你就可以使用Vim中常用的检索技巧来查找关键字

    查看文件中指定位置的变更

    命令示例:

    git log -L 1,1:<file>

    你可以使用git blame <file>追查出文件中每一行是由谁变更的,但是这个命令无法提供足够的信息。
    git log 提供了一个 -L 的选项。这个选项允许指定文件中的某些行。git只会输出与这些行的变更日志,这有点像带焦点的 git log -p 。

    查看尚未合并的变更

    命令示例:

    git log --no-merges master..

    --no-merges 标志意味着只显示没有合并到任何分支的变更。
    master..选项,意思是指显示没有合并到master分支的变更(在master后面必须有..)。

    查看其他分支中的文件

    命令示例:

    git show <branch>:<file>

    用这个命令可以很方便地查看其他分支上的文件而无需切换到那个分支。
    如果你想查看另一个分支上文件与当前分支上文件的差异,只要运行下面的命令就可以了:

    git diff <branch> <file>

    修复而非新建提交

    命令示例:

    git commit --amend

    假设提交之后,你意识到自己犯了一个拼写错误。你可以重新提交一次,并附上描述你的错误的提交信息。
    如果提交尚未推送到远程分支,那么按照下面步骤简单操作一下就可以了:

    1. 修复你的拼写错误
    2. 将修正过的文件暂存,通过git add <file>
    3. 运行 git commit --amend 命令,将会把最近一次的变更追加到你最新的提交。同时也会给你一个编辑提交信息的机会。
    4. 准备好之后,将干净的分支推送到远程分支。

    重置文件

    重置是让文件回到git历史中的一个特定版本。 
    在git中,有3种类型的重置。

    命令说明
    git reset --hard commit_id 回退到一个特定的历史版本。
    丢弃这次提交之后的所有变更。
    git reset commit_id 回滚到一个特定的历史版本。
    将这个版本之后的所有变更移动到“未暂存”的阶段。这也就意味着你需要运行git add . 和git commit -m "" 才能把这些变更提交到仓库。
    git reset --soft commit_id 回滚到一个特定的历史版本。
    将这次提交之后所有的变更移动到暂存并准备提交阶段。意味着你只需要运行git commit -m ""就可以把这些变更提交到仓库。

    如果想清除变更记录,可以使用清理命令:

    git reset --hard HEAD

    签出部分文件

    如果你想取消某些文件在本地的变更,而同时保留另外一些文件在本地的变更,一个比较简单的方法是通过 git checkout <file> 签出那些你想取消本地的变更的文件。

    正如前面提到的那样,你也可以从其他分支签出文件的不同版本。

    git checkout <branch> <file>

    或者之前的commid_id中签出

    git checkout <commit_id> <file>

    你应该注意到了签出的文件处于“暂存并准备提交”的状态。
    如果想回到未暂存的状态,需要执行一下 git reset HEAD <file> 。然后再次执行 git checkout <file>, 文件回到了初始状态。

    撤销而不产生提交信息

    命令示例:

    git revert -n

    如果打算撤销之前一次或者两次的提交,查看这些提交都做了哪些变更,哪些变更又有可能引发问题,这个命令非常方便。
    通常,git revert 会自动将回退的文件提交到仓库,需要你写一个新的提交信息。
    -n 标志告诉git先别急着提交,因为我只是想看一眼罢了。

    参考

  • 相关阅读:
    AngularJS依赖注入
    transclude 嵌入
    收藏的文章
    mysql
    jquery的deferred对象
    restrict取值
    AngularJs碎片笔记
    js工具函数
    canvas解决画图模糊
    去体湿
  • 原文地址:https://www.cnblogs.com/fireway/p/7168269.html
Copyright © 2011-2022 走看看