Git命令图解
- Workspace:工作区
- Index / Stage:暂存区
- Repository:仓库区(或本地仓库)
- Remote:远程仓库
创建版本库
在当前目录新建一个Git代码库
git init
新建一个目录,将其初始化为Git代码库
git init [project-name]
下载一个项目和它的整个代码历史
git clone [url]
配置
显示当前Git配置
git config --lits
编辑Git配置文件
git config -e --gloal
设置提交代码时的用户信息
git config --global user.email "youremail@example.com"
git config --global user.name "yourName"
增加删除文件到暂存区
所有的的版本控制系统只能追踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等。版本控制系统可以告诉你每次的改动,比如在第五行加了一个单词"Linux",在第八行删除了"Windows"等等。而图片,视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就只知道图片从100k改成了120k。
其中Microsoft的Word格式是二进制格式,因此控制版本系统无法跟踪Word文档的改动。
添加指定文件到暂存区
git add [file1] [file2]
添加指定目录到暂存区,包括子目录
git add [dir]
添加当前目录所有文件到暂存区
git add .
对于同一个文件的多次变化,逐次确认提交
git add -p
删除工作区文件,并将这次删除放入暂存区
git rm [file1] [file2]
改名文件,并且将这个改名放入暂存区
git mv [file-original] [file-renamed]
管理撤销修改
丢弃工作区修改
git checkout -- [file]
删除添加到暂存区中的某个文件
git reset HEAD [file]
查看工作区和版本库里最新版本的区别
git diff HEAD -- [file]
$ git diff HEAD -- README.txt
diff --git a/README.txt b/README.txt
index ab76794..0f8a8e9 100644
--- a/README.txt
+++ b/README.txt
@@ -1,3 +1,4 @@
this is an test
test enter
test again
+test diff
提交代码
提交暂存区到仓库区
git commit -m "message"
提交暂存区指定文件
git commit [file1] [file2] -m "message"
提交工作区自上次commit后的所有变化到仓库
git commit -a
提交时显示所有diff信息
git commit -v
使用一次新的commit替代上一层commit提交信息
git commit --amend -m "message"
重做上一次commit,并包括指定文件的新变化
git commit --amend [file1] [file2]
时光机穿梭
查看git log
git log
如下:
commit 03d99a41e6df6d5c9f178469d2486d3f18b31676
Author: rasang <test@qq.com>
Date: Sun Aug 25 17:52:59 2019 +0800
test3
commit b099664a069db05bbde874fc5bae325183885104
Author: rasang <test@qq.com>
Date: Sun Aug 25 17:50:10 2019 +0800
test2
commit 01197a271ada3f03b80493446a6353e410f9a621
Author: rasang <test@qq.com>
Date: Sun Aug 25 17:48:23 2019 +0800
test1
commit后面跟着的就是commit-id,使用如下命令回退版本
git reset --hard [commit-id]
也可以使用如下命令返回上一个版本
git reset HEAD^
而HEAD^^
则是上上个版本,回退前100个版本的指令为
git reset HEAD~100
回退版本后,晚于该版本的log会消失,想要回到原来的版本,需要使用git reflog
查看穿梭的记录
$ git reflog
03d99a4 (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
4e75dd6 HEAD@{1}: commit: upper
03d99a4 (HEAD -> master) HEAD@{2}: reset: moving to 03d99a41e6df6
df136f4 HEAD@{3}: reset: moving to df136f
df136f4 HEAD@{4}: reset: moving to df136f499b87ac6d6b2
df136f4 HEAD@{5}: commit: delete
113dcfe HEAD@{6}: commit: test4
03d99a4 (HEAD -> master) HEAD@{7}: commit: test3
b099664 HEAD@{8}: commit: test2
01197a2 HEAD@{9}: commit (initial): test1
远程仓库
添加SSH key。
如果之前没有创建过,可输入:
ssh-keygen -t rsa -C "youremail@example.com"
一路回车,可在用户主目录下生成.ssh目录,其中id_rsa为私钥,id_rsa.pub是公钥。然后就可以进入代码托管平台将公钥里的内容添加到账号的公钥里面了
添加远程仓库
在代码托管平台上新建一个仓库,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
关联远程仓库:
git remote add origin [git_add]
关联后使用git push -u origin master
第一次推送master分支所有内容,此后则用git push origin master
推送最新更新
从远程库克隆
首先要知道仓库地址,一般都是在代码页就有了,然后使用指令git clone [git_add]
就好了
分支管理
创建与合并分支
创建并切换分支
git branch -p [brach_name]
查看当前分支
git branch
当前分支前面会标一个*号
切换分支
git checkout [branch_name]
分支合并
git merge dev
将dev分支合并到当前分支
删除分支
git branch -d dev
查看分支合并图
git log --graph