本文已参与「新人创作礼」活动,一起开启掘金创作之路。
用户信息
配置个人的用户名称和电子邮件地址:
$ 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 clone、git push、git add 、git commit、git checkout、git pull,后面我们会详细介绍。
说明:
- 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)
- 在
github新建一个仓库; - 配置本地
git和github的SSH连接;-- TO DO --
$ ssh -T git@github.com
Hi qwtoe! You've successfully authenticated, but GitHub does not provide shell access.
# 说明SSH配置成功
- 在本地依次运行如下:
$ 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