专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构

git本地版本管理

  • 每一个人的电脑都有一个独立的版本库,可以在本地做版本管理
    1. 适用于单人项目
    2. 方便备份代码
    3. 代码可以回退到之前任意提交的版本

git本地提交的操作步骤

  1. 初始化一个本地仓库
  2. 配置用户名和用户邮箱
  3. 添加或修改文件
  4. 将文件提交到仓库

初始化一个本地仓库

  1. cd 到保存仓库的路径
  2. 使用 git init 创建本地仓库,会看到终端有一下输出表示创建本地仓库成功了
    Initialized empty Git repository in /Users/UserName/Project/01.git本地仓库/.git/
    
  3. .gitgit 的仓库,千万不要自己手动去更改里面的内容

给仓库配置用户名和用户邮箱

  1. 配置用户名和邮箱可以查看每行代码是谁写的,方便联系作者,对于有bug的代码可以一目了然,谁也无法抵赖
  2. 配置用户名
    git config user.name yourname
    
  3. 配置用户邮箱
    git config user.email youremail
    
  4. 配置好的 user.nameuser.email 会保存在 .git/config 文件中
  5. 每当新建一个仓库都需要配置用户名和用户邮箱比较麻烦,可以给 git 配置一个 全局的 用户名和用户邮箱
  6. 配置全局的用户名
    git config --global user.name yourname
    
  7. 配置全局的用户邮箱
    git config --global user.email youremail
    
  8. 配置全局的 user.nameuser.email 会保存在 /Users/UserName/.gitconfig 文件中

添加或修改文件

  1. .git 同级目录创建文件 main.c
    touch main.c
    
  2. 使用 git status 查看当前仓库的状态,可以查看哪些文件没有被添加到仓库,哪些文件被修改了
    1. Untracked files: 表示没有添加到仓库的文件
    2. modified: 文件被修改
    3. Changes to be committed: 需要提交到仓库

将文件提交到仓库

  1. git add: 将文件添加到 暂存区
    • 如果添加单个文件使用 git add 文件名
    • 如果添加多个文件使用 git add .: . 表示当前目录
  2. git commit: 将文件添加到 对象存储区(仓库)
    • git commit -m "注释": 提交时附上简短的注释,告诉别人这次提交干了什么事

git 工作区暂存区对象存储区 的概念

  • 我们的项目文件夹即是 工作区。提交的过程,是先将修改的文件放到暂存区、再从 暂存区 移动到 对象存储区

git 常用操作

  1. 一次添加多个文件到仓库
    1. touch Person.c Student.c: 创建2个文件
    2. git add .: 将多个文件一起添加到暂存区
    3. git commit -m "添加Person和Student文件": 将暂存区的文件添加到 对象存储区
    4. Person.c 文件添加 feature 方法
      void feature() {
        print("完成摇一摇功能");
      }
      
    5. Person.c 的改动添加到仓库
    6. 修改 Person.cfeature 方法
      void feature() {
        print("将摇一摇改成甩一甩");
      }
      
    7. Person.c 的改动添加到仓库
  2. git log: 查看版本库的提交日志

      MacBook-Pro:01.git本地仓库 zhangping$ git log
      commit 5273301917e762b1389673e8b5208d4ee18c28fb
      Author: ZhangSan <[email protected]>
      Date:   Tue Jun 14 13:45:34 2016 +0800
    
          将摇一摇改成甩一甩
    
      commit 7b5ab5ae19315ea95dc35b43db91a2d2dfb20416
      Author: ZhangSan <[email protected]>
      Date:   Tue Jun 14 13:44:45 2016 +0800
    
          添加摇一摇功能
    
      commit 27a1d9ee87ec90f2a6a7f32dd4150299f2decd39
      Author: ZhangSan <[email protected]>
      Date:   Tue Jun 14 13:43:49 2016 +0800
    
          添加Person.c和Student.c
    
      commit 0eaea35592d38bf4fedca16e991270b8386fe98c
      Author: ZhangSan <[email protected]>
      Date:   Tue Jun 14 13:42:55 2016 +0800
    
          添加main.c
    
    • 可以看到每次提交 commit内容版本号
      • 如果提交内容很多,超过一页使用 空格键 下一页, Control + b 上一页。 使用 j 下一行,使用 k 上一行
  3. git reset --hard 版本号: 将仓库和工作目录代码回退到指定版本

    1. 将代码回退到 添加摇一摇功能 这个版本
      git reset --hard 7b5ab5a
      
    2. 可以看到代码又回到 添加摇一摇功能:
      void feature() {
        print("添加摇一摇功能");
      }
      
    3. git log查看仓库log

        commit 7b5ab5ae19315ea95dc35b43db91a2d2dfb20416
        Author: ZhangPing <[email protected]>
        Date:   Tue Jun 14 13:44:45 2016 +0800
      
            添加摇一摇功能
      
        commit 27a1d9ee87ec90f2a6a7f32dd4150299f2decd39
        Author: ZhangPing <[email protected]>
        Date:   Tue Jun 14 13:43:49 2016 +0800
      
            添加Person.c和Student.c
      
        commit 0eaea35592d38bf4fedca16e991270b8386fe98c
        Author: ZhangPing <[email protected]>
        Date:   Tue Jun 14 13:42:55 2016 +0800
      
            添加main.c
      
    4. 可以看到 git 仓库也没有了 将摇一摇改成甩一甩 这次的提交
  4. 将代码再次回到 将摇一摇改成甩一甩
    1. 刚才通过 git log可以看到 git 仓库也没有了 将摇一摇改成甩一甩 这次的提交,那怎么才能回退回去呢
    2. 其实 git 会记录我们的每一次提交
    3. 通过 git reflog可以看到每次的提交操作
      7b5ab5a HEAD@{0}: reset: moving to 7b5ab5a
      5273301 HEAD@{1}: commit: 将摇一摇改成甩一甩
      7b5ab5a HEAD@{2}: commit: 添加摇一摇功能
      27a1d9e HEAD@{3}: commit: 添加Person.c和Student.c
      0eaea35 HEAD@{4}: commit (initial): 添加main.c
      
    4. 可以看到每次提交的commit版本号
    5. 使用 git reset --hard 5273301 可以将代码再次回到 将摇一摇改成甩一甩的状态
  5. git diff: 查看工作区文件变化
    1. Person.c 添加 develop 方法
      void develop() {
       print("研发摸一摸功能")
      }
      
    2. 使用 git status 可以看到 Person.c 发生了改变,但是具体改变了哪些内容看不到
    3. 使用git diff: 查看工作区文件变化
        diff --git a/Person.c b/Person.c
        index 2be19b5..fa91490 100644
        --- a/Person.c
        +++ b/Person.c
        @@ -1,3 +1,7 @@
         void feature() {
             print("将摇一摇改成甩一甩");
        +}
        +
        +void develop() {
        +    print("研发摸一摸功能")
         }
        \ No newline at end of file
      
      • +: 表示添加了内容
      • -: 表示删除了内容
  6. git checkout 文件名: 将这个文件的的修改撤销

忽略不想添加到仓库的文件

  • 在开发过程中,有些文件我们不想提交到git仓库,将不想添加到git仓库的文件写入.gitignore文件中可以忽略

    1. touch abc.txt 创建 abc.txt 文件
    2. git status: 显示未跟踪的文件,文件没有被添加到git仓库进行管理

      Untracked files:
      (use "git add <file>..." to include in what will be committed)
      
       abc.txt
      
    3. touch .gitignore: 创建git忽略文件,只要在这个文件写入要忽略文件的名称,这个文件就会被忽略,git仓库就不会来跟踪这个文件了,但是在磁盘上还有这文件的
    4. 打开 .gitignore 文件,输入 abc.txt
    5. git status:

      Untracked files:
      (use "git add <file>..." to include in what will be committed)
      
        .gitignore
      
    6. 可以看到git仓库就不会理会 abc.txt 文件了

总结用到的命令

git init    #创建本地仓库
git config user.name yourname   #配置用户名
git config user.email youremail #配置用户邮箱
git config --global user.name yourname      #配置全局的用户名
git config --global user.email youremail    #配置全局的用户邮箱
git status      #查看仓库的状态
git add 文件名  #将文件添加到暂存区
git add .       #将当前目录的所有文件添加到暂存区
git commit      #将文件添加到 对象存储区(仓库)
git log         #查看版本库的提交日志
git reset --hard 版本号: #将仓库和工作目录代码回退到指定版本
git reflog      #可以看到每次的提交操作
git checkout 文件名 #将这个文件的的修改撤销

results matching ""

    No results matching ""