美文网首页
git简要使用

git简要使用

作者: 山坡上的斐德洛 | 来源:发表于2018-12-23 21:02 被阅读0次

    我们知道Git分为三个大区:工作区、暂存区、版本库。我们是在工作区进行项目的修改,之后使用git add命令将项目添加到暂存区,再使用git commit命令将暂存区的文件上传到版本库。这个就是Git的大体流程。
    【在工作目录中初始化工作区】
    要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行:$ git init语句即可
    初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。

    之后进行账号的初始化:

    $ git config --global user.name "你的远程仓库的用户名"
    $ git config --global user.email "你注册远程仓库的邮箱"
    

    git remote add origin 你的远程文档库网址执行次语句会建立本地文档库和此远程文档库的连接

    【将版本库中的项目下载到本地】
    克隆仓库的命令格式为 git clone [url]。比如,要克隆 Ruby 语言的 Git 代码仓库 Grit,可以用下面的命令:
    $ git clone git://github.com/schacon/grit.git

    这会在当前目录下创建一个名为grit的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录,然后从中取出最新版本的文件拷贝。如果进入这个新建的 grit 目录,你会看到项目中的所有文件已经在里边了,准备好后续的开发和使用。如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:
    $ git clone git://github.com/schacon/grit.git mygrit

    唯一的差别就是,现在新建的目录成了 mygrit,其他的都和上边的一样。

    【检查当前文件状态】
    要确定哪些文件当前处于什么状态,是在工作区呢?还是提交到了暂存区?可以用 git status 命令来进行查看。如果在克隆仓库之后立即执行此命令,会看到类似这样的输出:

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

    这说明你现在的工作目录相当干净。换句话说,所有上传过的文件在上次提交后都未被更改过。此外,上面的信息还表明,当前目录下没有出现任何处于暂存区的新文件,否则 Git 会在这里列出来。最后,该命令还显示了当前所在的分支是 master,这是默认的分支名称,实际是可以修改的,现在先不用考虑。下一章我们就会详细讨论分支和引用。

    现在让我们用 vim 创建一个新文件 README,保存退出后运行 git status 会看到该文件出现在未跟踪文件列表中:

    $ vim README
    $ git status
    On branch master
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    
            README
    
    nothing added to commit but untracked files present (use "git add" to track)
    

    在状态报告中可以看到新建的README文件出现在“Untracked files”下面。未跟踪的文件意味着Git在之前的快照(提交)中没有这些文件;Git 不会自动将之纳入跟踪范围,除非你明明白白地告诉它“我需要跟踪该文件”,因而不用担心把临时文件什么的也归入版本管理。不过现在的例子中,我们确实想要跟踪管理 README 这个文件。

    【将新文件添加到暂存区】
    使用命令 git add 开始将新文件提交到暂存区。所以,要提交 README 文件,运行:

    $ git add README

    此时再运行 git status命令,会看到 README 文件已被跟踪,并处于暂存状态:

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

    只要在 “Changes to be committed” 这行下面的,就说明是已暂存状态。如果此时提交,那么该文件此时此刻的版本将被留存在历史记录中。在 git add后面可以指明要跟踪的文件或目录路径。git add .代表当前目录的所有文件。如果是目录的话,就说明要递归跟踪该目录下的所有文件。(译注:其实 git add 的潜台词就是把目标文件快照放入暂存区域,也就是 add file into staged area,同时未曾跟踪过的文件标记为需要跟踪。这样就好理解后续 add 操作的实际意义了。)

    【暂存已修改文件】
    现在我们修改下之前已跟踪过的文件 benchmarks.rb,然后再次运行 status 命令,会看到这样的状态报告:

    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
            new file:   README
    
    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:   benchmarks.rb
    

    文件 benchmarks.rb 出现在 “Changes not staged for commit” 这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区。要暂存这次更新,需要运行 git add命令(这是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等)。现在让我们运行 git add将 benchmarks.rb 放到暂存区,然后再看看 git status 的输出:

    $ git add benchmarks.rb
    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
            new file:   README
            modified:   benchmarks.rb
    

    现在两个文件都已暂存,下次提交时就会一并记录到仓库。

    【提交更新】
    现在的暂存区域已经准备妥当可以提交了。运行提交命令 git commit

    $ git commit
    

    这种方式会启动文本编辑器以便输入本次提交的说明。(默认会启用 shell 的环境变量 $EDITOR 所指定的软件,一般都是 vim 或 emacs。当然也可以使用 git config --global core.editor 命令设定你喜欢的编辑软件。)

    编辑器会显示类似下面的文本信息(本例选用 Vim 的屏显方式展示):

    # Please enter the commit message for your changes. Lines starting
    # with '#' will be ignored, and an empty message aborts the commit.
    # On branch master
    # Changes to be committed:
    #       new file:   README
    #       modified:   benchmarks.rb
    #
    ~
    ~
    ~
    ".git/COMMIT_EDITMSG" 10L, 283C
    

    可以看到,默认的提交消息包含最后一次运行 git status的输出,放在注释行里,另外开头还有一空行,供你输入提交说明。你完全可以去掉这些注释行,不过留着也没关系,多少能帮你回想起这次更新的内容有哪些。(如果觉得这还不够,可以用 -v 选项将修改差异的每一行都包含到注释中来。)退出编辑器时,Git 会丢掉注释行,将说明内容和本次更新提交到仓库。

    另外也可以用 -m 参数后跟提交说明的方式,在一行命令中提交更新:

    $ git commit -m "Story 182: Fix benchmarks for speed"
    [master 463dc4f] Story 182: Fix benchmarks for speed
     2 files changed, 3 insertions(+)
     create mode 100644 README
    

    好,现在你已经创建了第一个提交!可以看到,提交后它会告诉你,当前是在哪个分支(master)提交的,本次提交的完整SHA-1 校验和是什么(463dc4f),以及在本次提交中,有多少文件修订过,多少行添改和删改过。

    记住,提交时记录的是放在暂存区域的快照,任何还未暂存的仍然保持已修改状态,可以在下次提交时纳入版本管理。每一次运行提交操作,都是对你项目作一次快照,以后可以回到这个状态,或者进行比较。

    【提交到服务器】
    同步到服务器前先需要将服务器代码同步到本地

    命令: git pull
    同步到服务器

    命令:git push origin <本地分支名>

    【仅仅移除暂存区的文件】
    此时你想撤销错误添加到暂存区里的文件,可以输入以下命令:
    git rm --cache 文件名
    该命令仅仅删除暂存区的文件而已,不会影响工作区的文件

    【删除暂存区和工作区的文件】
    另外一种情况是,我们想把文件从 本地仓库中删除(亦即从暂存区域移除)我们可以使用如下命令

    $ git rm -f 文件名
    

    这样,你就将工作区和暂存区的文件都删掉了

    相关文章

      网友评论

          本文标题:git简要使用

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