Git基础

79 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

用户信息

配置个人的用户名称和电子邮件地址:

 $ git config --global user.name "runoob"
 $ git config --global user.email test@runoob.com

如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。个人信息的配置保存在 C:\Users\用户名.gitconfig 中。

如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。

查看配置信息

 $ git config --list
 ...
 init.defaultbranch=master
 user.email=2480340264@qq.com
 user.name=qwtoe

查看版本

 $ git --version
 git version 2.37.3.windows.1

初始化

使用当前目录作为 Git 仓库,我们只需使它初始化。

 $ git init
 Initialized empty Git repository in C:/Users/XXXX/Desktop/git_test/.git/

该命令执行完后会在当前目录生成一个 .git 目录。

git clone

git clone 从现有 Git 仓库中拷贝项目:

 
 git clone <repo>
 git clone <repo> <directory>  # 克隆到指定目录
 git clone git://github.com/schacon/grit.git

执行该命令后,会在当前目录下创建一个名为grit的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录。

如果要自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:

 $ git clone git://github.com/schacon/grit.git mygrit

配置

显示当前 git 配置信息:git config --list

编辑当前仓库配置文件:git config -e

编辑全局所有仓库的配置文件:git config --global

设置提交代码时的用户信息:(前面设置了就不用设置了,可通过 git config --list 提前看用户信息是否正确)

 $ git config --global user.name "runoob"
 $ git config --global user.email test@runoob.com

如果去掉 --global 参数只对当前仓库有效。

基本git操作

Git 常用的是以下 6 个命令:git clonegit pushgit addgit commitgit checkoutgit pull,后面我们会详细介绍。

git-command.jpg

说明:

  • workspace:工作区
  • staging area:暂存区/缓存区
  • local repository:版本库或本地仓库
  • remote repository:远程仓库

一个简单的操作步骤:

 $ git init    
 $ git add .    
 $ git commit  
  • git init - 初始化仓库。
  • git add . - 添加文件到暂存区。(“add” 和 “.” 之间有空格)
  • git commit - 将暂存区内容添加到仓库中。

提交和修改

命令说明
git add添加文件到暂存区
git status查看仓库当前的状态,显示有变更的文件。
git diff比较文件的不同,即暂存区和工作区的差异。
git commit提交暂存区到本地仓库。
git reset回退版本。
git rm将文件从暂存区和工作区中删除。
git mv移动或重命名工作区文件。

提交日志

命令说明
git log查看历史提交记录
git blame以列表形式查看指定文件的历史修改记录

远程操作

命令说明
git remote远程仓库操作
git fetch从远程获取代码库
git pull下载远程代码并合并
git push上传远程代码并合并

git 远程仓库(github)

  1. github 新建一个仓库;
  2. 配置本地 gitgithub 的SSH连接;-- TO DO --
 $ ssh -T git@github.com
 Hi qwtoe! You've successfully authenticated, but GitHub does not provide shell access.
 # 说明SSH配置成功
  1. 在本地依次运行如下:
 $ mkdir runoob-git-test                     # 创建测试目录
 $ cd runoob-git-test/                       # 进入测试目录
 $ echo "#Git 测试" >> README.md              # 创建 README.md 文件并写入内容
 $ ls                                        # 查看目录下的文件
 README
 $ git init                                  # 初始化
 $ git add README.md                         # 添加文件
 $ git commit -m "添加 README.md 文件"         # 提交并备注信息
 [master (root-commit) 0205aab] 添加 README.md 文件
  1 file changed, 1 insertion(+)
  create mode 100644 README.md
 ​
 # 提交到 Github
 $ git remote add origin git@github.com:tianqixin/runoob-git-test.git
 $ git push -u origin master

最后就可以在 github 仓库看到 README.md 已经传上去了。

提取远程仓库更新

当远程仓库有更新的内容时(本地还没有更新);

假设远程仓库的 README.md 有更新,我们可以在本地这样更新修改:

 $ git fetch origin
 remote: Enumerating objects: 5, done.
 remote: Counting objects: 100% (5/5), done.
 remote: Compressing objects: 100% (2/2), done.
 remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
 Unpacking objects: 100% (3/3), 655 bytes | 6.00 KiB/s, done.
 From https://github.com/qwtoe/test_Respository
    1aa65fd..2cb8144  master     -> origin/master  # 这个说明 master分支有更新

使用以下命令将更新同步到本地:

 $ git merge origin/master
 Updating 1aa65fd..2cb8144
 Fast-forward
  README.md | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

此时本地的 README.md 已经被更新了。

本地更新推送到远程仓库

推送你的新分支与数据到某个远端仓库命令:

 git push [alias] [branch]

以上命令将你的 [branch] 分支推送成为 [alias] 远程仓库上的 [branch] 分支,实例如下。

例如:在本地添加 push_test.txt 文件;

 $ git add .
 ​
 $ git commit -m "添加push_test.txt"
 [master a77258c] 添加push_test.txt
  1 file changed, 0 insertions(+), 0 deletions(-)
  create mode 100644 push_test.txt
 ​
 $ git push origin master
 Enumerating objects: 4, done.
 Counting objects: 100% (4/4), done.
 Delta compression using up to 8 threads
 Compressing objects: 100% (2/2), done.
 Writing objects: 100% (3/3), 289 bytes | 289.00 KiB/s, done.
 Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
 To https://github.com/qwtoe/test_Respository.git
    2cb8144..a77258c  master -> master

远程仓库更新成功。

分支管理

列出分支

创建分支命令:

 git branch (branchname)

切换分支命令:

 git checkout (branchname)

创建新分支并立即切换到该分支下:

 git checkout -b (branchname) 

列出分支基本命令:

 git branch

没有参数时,git branch 会列出你在本地的分支。

 $ git branch
 * master

此例的意思就是,我们有一个叫做 master 的分支,并且该分支是当前分支。

当你执行 git init 的时候,默认情况下 Git 就会为你创建 master 分支。

如果我们要手动创建一个分支。执行 git branch (branchname) 即可。

 $ git branch testing
 $ git branch
 * master
   testing

删除分支

删除分支命令:

 git branch -d (branchname)
 $ git branch -d testing
 Deleted branch testing (was a77258c).
 ​
 $ git branch
 * master

合并分支

 # 1.在 newtest 分支做出更新
 $ git branch
   master
 * newtest
 ​
 $ ls
 README.md  push_test.txt
 ​
 $ touch merge_test.txt  # 在 newtest 分支下创建 merge_test.txt 文件
 $ ls
 README.md  merge_test.txt  push_test.txt
 ​
 $ git add .
 $ git commit -m "添加 merge_test.txt"
 ​
 # 2.回到 master 分支
 $ git checkout master
 $ ls
 README.md  push_test.txt  # master 分支目前没有 merge_test.txt
 ​
 # 3.合并 newtest 分支到 master
 $ git merge newtest
 $ ls                      # newtest 中的 merge_test.txt 已经合并到了 master
 README.md  merge_test.txt  push_test.txt