提交/Push文件到远程仓库

管理本地仓库文件

简单的描述,在 Git 中文件有三种状态:已修改(modified)、已暂存(staged)、已提交(committed;用 Git 管理文件也可以简单的理解为三个步骤:修改文件、跟踪文件、提交文件

以下采取示例的方式简述用 Git 管理本地仓库文件。

修改文件

修改文件即是对文件的添加、编辑、删除等等,和普通修改文件的方法一致。

选择合适的地方创建一个新目录『learn-git』,新建『readme.txt』 和『learn-git.txt』 文件,在中写入『I’m learning git.』这句话并保存。

跟踪文件(git add

创建文件和修改文件后需要把文件添加到仓库,即对文件进行跟踪。一次性把一个文件或多个文件添加到仓库都可以,用到的命令都是 git add

添加一个文件时直接在终端输入 git add后面空一格输入完整的文件名(包含后缀,如.txt):

$ git add readme.txt

添加多个文件也类似,git add后面空格输入完整的文件名,文件名之间用空格分隔:

$ git add readme.txt learn_git.txt

添加当前仓库里的所有文件时直接在终端输入$ git add . ,注意此处末尾的.不要遗漏。

提交文件(git commit

git commit命令把文件提交到仓库,一次性会提交所有你已经添加的文件:

$ git commit -m "wrote a readme and a learn_git file"
[master (root-commit) 7c57f05] wrote a readme and a learn_git file
 2 files changed, 2 insertions(+)
 create mode 100644 learn_git.txt
 create mode 100644 readme.txt

提交命令为git commit-m后面引号中的内容是你的提交说明,下面几行是终端的返回结果。每次提交文件时都写个提交说明,以便清楚地了解做了什么修改。

$符号是使用终端时自动输入的,用户并不需要输入此符号。

查看文件状态(git status

如何知道一个文件处于哪种状态?使用git statu命令查看文件状态。

当前仓库里任何文件都没有被跟踪时返回结果如下:

$ git status
On branch master
Your branch is up-to-date with 'origin/master'
nothing to commit, working directory clean

当文件已跟踪但没有提交到仓库时返回结果如下:

$ 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:   learn_git.txt
	modified:   readme.txt

no changes added to commit (use "git add" and/or "git commit -a")

当文件已跟踪且已经提交到仓库时返回结果如下:

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

使用 Git 管理文件时,每次结束工作前请依次执行git addgit commit命令将文件提交到仓库。

随着用户深入使用 Git,会了解到更多 Git 知识,点击查看 Git 文件状态介绍 和 Git 常用命令速查表。

推送文件到远程仓库

  1. 添加远程仓库查看 添加远程仓库帮助。
  2. 推送代码到远程仓库在终端运行命令git push,将文件推送到远程仓库:
    $ git push origin master
    Counting objects: 8, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (4/4), done.
    Writing objects: 100% (8/8), 626 bytes | 626.00 KiB/s, done.
    Total 8 (delta 0), reused 0 (delta 0)
    To https://git.coding.net/Yangconghou/learn_git.git
     * [new branch]      master -> master
    

    git push是推送命令,实际上是把本地的master分支推送到了远程仓库,相当于在远程有了一个代码仓库的备份。

    使用 Git 管理文件时,每次结束工作前请依次执行git addgit commitgit push命令将文件推送到 CODING 远程仓库。

Git 文件状态介绍

  • 已修改(modified) ———— 表示修改了文件,但还没保存到数据库中
  • 已暂存(staged) ———— 表示对一个已修改文件的当前版本做了追踪,使之包含在下次提交的快照中
  • 已提交(committed)———— 表示数据已经安全的保存在本地数据库中

初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。 在编辑过某些文件之后,Git 将这些文件标为已修改。我们逐步把这些修改过的文件放到暂存区域,直到最后一次性提交所有这些暂存起来的文件,如此重复。使用 Git 时的文件状态变化周期如图所示。

图片

Git 常用命令速查表

创建版本库

$ git clone <url>                  #克隆远程版本库
$ git init                         #初始化本地版本库

修改和提交

$ git status                       #查看状态
$ git diff                         #查看变更内容
$ git add .                        #跟踪所有改动过的文件
$ git add <file>                   #跟踪指定的文件
$ git mv <old><new>                #文件改名
$ git rm<file>                     #删除文件
$ git rm --cached<file>            #停止跟踪文件但不删除
$ git commit -m "commit messages"  #提交所有更新过的文件
$ git commit --amend               #修改最后一次改动

查看提交历史

$ git log                    #查看提交历史
$ git log -p <file>          #查看指定文件的提交历史
$ git blame <file>           #以列表方式查看指定文件的提交历史

撤销

$ git reset --hard HEAD      #撤销工作目录中所有未提交文件的修改内容
$ git checkout HEAD <file>   #撤销指定的未提交文件的修改内容
$ git revert <commit>        #撤销指定的提交
$ git log --before="1 days"  #退回到之前1天的版本

分支与标签

$ git branch                   #显示所有本地分支
$ git checkout <branch/tag>    #切换到指定分支和标签
$ git branch <new-branch>      #创建新分支
$ git branch -d <branch>       #删除本地分支
$ git tag                      #列出所有本地标签
$ git tag <tagname>            #基于最新提交创建标签
$ git tag -d <tagname>         #删除标签

合并与衍合

$ git merge <branch>        #合并指定分支到当前分支
$ git rebase <branch>       #衍合指定分支到当前分支

远程操作

$ git remote -v                   #查看远程版本库信息
$ git remote show <remote>        #查看指定远程版本库信息
$ git remote add <remote> <url>   #添加远程版本库
$ git fetch <remote>              #从远程库获取代码
$ git pull <remote> <branch>      #下载代码及快速合并
$ git push <remote> <branch>      #上传代码及快速合并
$ git push <remote> :<branch/tag-name>  #删除远程分支或标签
$ git push --tags                       #上传所有标签

更多内容请查看 Git 文档

相关文章