程序猿阵线联盟-汇总各类技术干货程序员

Git常用指令及流程详解

2018-07-03  本文已影响85人  eagleTang

Git基本概念了解

为了方便以及我们之后正确的了解Git的各个指令的操作含义,我们需要了解几个概念

Git和SVN的差异,以及Git的优势.

Git的文件状态 (Git可以整体把文件分为已跟踪,和未开始跟踪的两种状态)

基本的Git 工作流程
  1. 在工作目录中修改文件
  2. 暂存文件, 将文件的快照放入暂存区域
  3. 提交更新, 找到暂存区域的文件,将快照永久性存储到Git仓库目录

因为现在我们在使用Git的时候一般都是会关联一个远程仓库的, 所以在链接远程仓库的前提下,如果你想将本地的代码提交到远程公共仓库, 即在这三步之后先更新代码,然后将代码推送到远程仓库即可.

这里也要给一个小的提示,我们在配置Git仓库的时候 一定要配置忽略文件. 因为其他文章写的都挺不错的, 所以这篇文章就不在做多余的赘述 , 下面给出几个忽略文件配置的参考文章 Git忽略文件的具体配置, Git忽略文件配置


常用Git指令

$ git status
On branch master
nothing to commit, working directory clean

而如果出现如下情况, 即有Untracked files:, 并且其下面有内容, 则表示有新文件没有被跟踪到, 需要先加入到暂存当中,才能在下次提交中提交该文件

$ echo 'My Project' > README
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    XXXX

nothing added to commit but untracked files present (use "git add" to track)

或者说是修改了一个已经被跟踪的文件,则他的再次更改的部分就可以理解成为是没有被标记跟踪的状态, status会有以下大概输出格式 Changes not staged for commit:

$ git status
On branch master

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   XXXX

当已经有文件已经添加入暂存区, 但是还未提交时, status会做如下显示, 即Changes to be committed:会显示,并在下方会有内容

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   XXX
     modified:   XXXX

其实你会发现以上的status输出中, Git都是会给出我们操作提示的, 比如在第一种情况下,有文件添加的时候, Git会在下方提示(use "git add <file>..." to include in what will be committed) . 就是来提示你可以使用 git add xxxx的指令来进行操作

$ git status -s
 M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt

其中 :
??表示了这个文件尚未被标记跟踪,
A表示新添加到暂存区的文件
M表示修改的文件.
如果你仔细观察就会发现M出现的位置是会有差异的, 当M出现在靠右的位置的时候,代表了这个这个文件的修改部分还没有加入到暂存区, (即下次的提交是无法提交这个文件的修改部分, 如果提交就需要先放入暂存区). 而靠左边的M则表示了文件的修改部分已经放入到了修改区域.
而像上图示例中的Rakefile文件. 左右两个位置都标识出来了M, 则表示之前add到暂存区了一份修改之后, 本地又再次做了一些修改, 所以一部分修改在暂存区没有提交, 还有一部分修改尚未添加到暂存区. 这里我们就要注意到, 我们实际上提交的文件, 是以加入到暂存区的修改文件为最后的提交文件的,而不是你最后的提交时间为止的修改文件, 所以一定要注意如果在将文件加入暂存区之后又做了修改不要忘记将其放入暂存区


获取/创建项目

Git仓库配置

提交/添加/撤销

这边需要注意的是 如果你使用 -m 指令后面直接跟信息的话, 如果信息是英文, 则需要用'' 将信息包裹, 否则git会不识别, 并会报一下错误. 猜测在纯英文状态下无法识别为字符串吧

fatal: Paths with -a does not make sense.

我们通常的提交操作可以使用如下流程指令:

  • git status查看状态,如果有新增文件 则执行 git add .
  • git commit -a -m [提交信息] 提交到本地仓库
  • 如果需要推送到远程仓库则执行 git push (在你没有更改默认remote-name以及分支名的情况下)
  • git status查看是否完整成功提交代码.

远程仓库相关
$ git remote -v
bakkdoor  https://github.com/bakkdoor/grit (fetch)
bakkdoor  https://github.com/bakkdoor/grit (push)
cho45     https://github.com/cho45/grit (fetch)
cho45     https://github.com/cho45/grit (push)
defunkt   https://github.com/defunkt/grit (fetch)
defunkt   https://github.com/defunkt/grit (push)
  #fetch : 标识了你的拉取地址
  #push : 标识了你的推送数据的地址
$ git remote show origin
* remote origin
  Fetch URL: https://github.com/schacon/ticgit
  Push  URL: https://github.com/schacon/ticgit
  HEAD branch: master
  Remote branches:
    master                               tracked
    dev-branch                           tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

写在最后

本篇文章所总结的内容, 均是从GitBook中学习总结的, 如果你想系统而仔细的去了解git的话.还是推荐你去用GitBook中看一下.
如果这篇文章真的能够帮助到了看文章的你的话, 那将是对我来说最好的鼓励了, 还希望你能够用一个小心心告诉我哦.

持续更新ing....

上一篇下一篇

猜你喜欢

热点阅读