1、把暂存区内容回滚的工作区,回退到上一个版本
$ git reset HEAD text.txt
2、撤销修改:1. 文件在添加到缓存区前修改,则回退到原工作区状
态;
$ git checkout -- text.txt
3、查看历史提交记录
$ git log
4、回退到历史指定版本
$ git reset --hard ae0e2a5385a11917816b3f161adc19f7e53ba845
5、清空本地文件text.txt
$ git rm text.txt
6、从暂存区直接删除文件
rm -cacheed
7、除当前目录下的所有文件及目录,命令行为:
rm -r *
$ git rm --cached text.txt
8、将文件提交到仓库(把暂存区的所有内容提交到当前分支)
$ git commit -m "wrote a readme.txt."
9、确认删除后,提交到版本库
$ git commit -m "remove test.txt"
10、将文件提交到仓库(把暂存区的所有内容提交到当前分支)
$ git commit -m "wrote a readme.txt."
11、一次性提交3个文件
$ git commit -m "add 3 files."
12、将文件提交到仓库,并注释内容
git commit -m "delete bash demo"
13、git提交代码出现错误fatal: Unable to create '项目路
径/.git/index.lock': File exists.在.git上级目录操作
rm -f ./.Git/index.lock
-----------------------------------
14、远程仓库新建ssh
$ ssh-keygen -t rsa -C "1282501454@qq.com"
15、回到当前目录的主目录
cd ~
16、回到主目录
$ pwd
17、显示.ssh
cd .ssh
18、查看详细信息
$ ll
19、查看公钥内容,文件内容
$ cat id_rsa.pub
20、查看是否github是否连接成功
$ ssh -T git@github.com
21、直接跳转到指定子目录
$ cd /f/gitdemo
22、查看所有文件
$ ls -a
23、新增一个文件.md
$ echo“#newdemo”>> README.md
24、查看详细信息
$ ll
25、初始化git
$ git init
26、追加文件到缓存区
$ git add README.md
27、提交到本地库
$ git commit -m "first commit"
28、关联远程库
$ git remote add origin
https://github.com/liminga/newdemo.git
29、追加内容到远程,第二次不用-u
$ git push -u origin master
30、文本追加内容
$ vim README.md
31、退出文本
Esc :wq
32、追加到缓存
$ git add README.md
32、提交到本地库
$ git commit -m "second commit "
33、追加到远程库
$ git push
--------------------------------
// 4.6 多人协作(最好结合工作场景理解)
git remote -v // 查看远程库详细信息
git push origin dev // push本地dev分支到远程dev
git push origin master // push本地master分支到远程master(时刻保持同步)
git pull // 将最新的pull/dev(master)爬下来
git checkout -b branch-name origin/branch-name // 在本地创建和远程分支对应的分支
git branch --set-upstream-to=origin/<branch> dev // 建立本地分支和远程分支的关联
// 4.7 Rebase
git rebase // 将本地未push的分支提交整理成直线,利于查看
--------------------------------
34、克隆仓库
git clone https://github.com/liminga/clone_demo.git
34-2、以Https协议方式克隆
$ git clone https://github.com/ChrisLeejing/gitskills.git
35、新增一个txt文件,内容为clone demo
$ echo "clone demo" >> clone.txt
36、追加到远程库
$ git push
----------------------------------
标签管理
37、查看所有标签
git tag
38、创建标签
git tag v1.0.1
39、指定提交信息
git tag -a name -m "comment"
40、删除标签name
git tag -d v2.0.1
41、标签发布v1.0.1
git push origin v1.0.1
42、切换到标签与切换分支命令相同
git checkout [tagname]
43、从远程删除。删除命令也是push,但是格式如下:
$ git push origin :refs/tags/v1.0.1
--------------------------------------------
分支管理
44、创建文件夹Git
$ mkdir Git
45、查看所有分支(当前分支以‘*’标记)
git branch
46、创建分支(如:git branch dev)
git branch <name>
47、切换分支
git checkout <name>
48、创建切换分支(如:git checkout -b dev)
git checkout -b <name>
49、合并分支到当前分支上
git merge <name>
49-2、合并分支到master分支上
git checkout master
git merge <name>
50、删除该分支
git branch -d <name>
51、查看分支合并图
git log --graph
52、查看分支合并缩略图
git log --graph --pretty=oneline --abbrev-commit
----------------------------------------------------------------------------------------
git
1、下载地址 window git
https://git-scm.com/download/win
2、配置用户信息
用户名称:$ git config --global user.name "tyler"
用户地址:$ git config --global user.email "tyler@163.com"
2-1查看用户名和邮箱地址:
$ git config user.name
$ git config user.email
3、初始化版本库
- git init
4、添加文件到版本库
- git add
- git commit
5、查看仓库状态
- git status
6、命令
显示当前所在位置
$pwd
建立时间详细信息
$ ll
到上级目录
$ cd ..
到d盘
$ cd /d
创建文件夹
$ ls
回到刚才的目录
$ cd -
清屏
$ clear
查看git版本
$ git --version
显示目录下内容
$ ls -ltr
创建temp目录
$ mkdir temp
$ cd temp
$ pwd
git初始化
$ git init
查看生成的隐藏文件
$ ls -a
生成文件
$ echo "git repo2" >> test.txt
$ ll
展示当前文件内的内容
$ cat test.txt
--提交,并m注释
$ git commit -m "Init Project"
查看当前文件状态
$ git status
查看.git内的文件
$ ls -l .git
配置全局的用户名和邮箱信息
$ git config --global user.name 'Wenjie Zhang'
$ git config --global user.email 'hit-2075@126.com'
回到软件的系统工作目录
$ cd ~
--查看.gitconfig的内容
$ cat.gitconfig
--显示用户信息
$ id
--查看 .git下的内容
$ ls -l .git
--查看配置后的内容
$ cat .git/config
$ pwd
$ ls -l
--增加main.c到git中
$ git add main.c
--提交,并m注释
$ git commit -m "Init Project"
--创建文件
vi main.c
int main()
{
return 0;
}
ls -l
--查看.git的目录内容
$ ls -l .git
--删除刚刚提交的main.c文件
$ rm -f main.c
--确认没有了
$ ls -ltr
$ ls -l
$ ls -la
--使用git恢复main.c文件
git checkout -f HEAD
--查看是否恢复成功
ls -l
--创建新的文件夹ccc,进入到ccc文件夹
mkdir ccc
cd ccc
--拷贝bbb下的main.c文件到当前目录
cp ../bbb/main.c .
--查看确认
ls -ltr
--初始化git
git init
--查看main.c的内容
cat main.c
--查看main.c的hash值
git hash-object main.c
--添加当前文件夹的内容到git中
git add .
--显示.git下的内容
ls -l .git
--显示.git/objects下的内容
ls -l .git/objects/
--显示.git/objects/fc下的内容,实际上是main.c的hash的头两个字母
ls -l .git/objects/fc
--提交,并注释
git commit -m "1 commit"
clear
ls -l .git/objects/
--找到.git/objects/下所有类型为文件的对象
find .git/objects/ -type f
--显示fc047f开头的文件的内容
git show fc047f
--查看0593开头的文件的类型
git cat-file -t 0593
clear
find .git/objects/ -type f
--查看commit类型文件的内容
git show -s --pretty=raw 2364
------------------------------------------------------------------------------
--演示多文件,多目录下的blob和tree和commit的数量
--新建ddd文件夹
mkdir ddd
cd ddd
--新建 lib文件夹
mkdir lib
cd lib
--新建inc文件夹
mkdir inc
cd inc
ls
--inc下创建 trick.rb文件
vi trick.rb
sssssss
:x
cd ..
--lib下创建mylib.rb文件
vi mylib.rb
this is mylib.rb
:x
cd ..
--ddd下创建见READE文件
vi README
this is ReadMe
:x
--初始化,添加,提交
git init
git add .
git commit -m "this is first commit"
--查看生成的文件数,应该是3个blob文件3个tree文件1个commit文件
find .git/objects/ -type f
git cat-file -t ****
cd ..
-------------------------------------
--研究HEAD对象
--创建eee文件夹
mkdir eee
cd eee
--拷贝ddd的文件过来
cp ../ddd/README .
clear
--确认拷贝
ls -ltr
--初始化
git init
--添加
git add .
--提交
it commit -m "this is first commit"
--显示文件下的对像
ls -l .git/objects/
--显示对象为文件的对象
find .git/objects/ -type f
ls -l .git
--查看HEAD的内容
cat .git/HEAD
ls -l .git/refs/
ls -l .git/refs/heads/
--HEAD的内容是一个引用,查看指向的内容
cat .git/refs/heads/master
--指向的内容是那个对象的hash码
find .git/objects/ -type f
--查看该对象的类型,应该为commit
git cat-file -t ****
----------------------------
--研究tag,有引用和对象两种形式
--进到ddd文件夹
cd ddd
ls -l
--查看当前生成的对象数,7
find .git/objects/ -type f | wc -l
--修改最底层的文件
vi /ddd/lib/ind.trick.rb
*****
:x
pwd
--添加提交
git commit -a -m "second commit"
----查看当前生成的对象数,12
find .git/objects/ -type f | wc -l
ls -l .git
ls -l .git/refs/tags
轻量级的tags
git tag v1.0
ls -l .git/refs/tags
cat .git/refs/tags/v1.0
--查看标签指向对象类型
git cat-file -t ****
--commit
--查看当前生成的对象数,还是12,没有生成标签对象
find .git/objects/ -type f | wc -l
--打标签,这个会生成标签对象
git tag -a milestone1.0 -m "this is the first stable version"
--查看当前生成的对象数,13
find .git/objects/ -type f | wc -l
ls -l .git/refs/tags/
--查看标签内容
cat .git/refs/tags/milestone1.0
--查看标签指向对象,为tag
find .git/objects/ -type f
git cat-file -t ****
--tag
--再次修改文件
vi init.rb
....
--第三次打标签
git commit -a -m "third commit"
----查看当前生成的对象数
find .git/objects/ -type f | wc -l
--查看头文件内容
cat .git/HEAD
cat .git/refs/heads/master
cat .git/refs/tags/v1.0
--头文件还是指向的最新的commit对象
git cat-file -t df87
--commit
git cat-file -t 9e7b
--commit
cat init.rb
--发布tag为v1.0时的版本,格式为tar,目录在ruby下,用gzip加压,生成在/tmp//tmp/ruby1.0.tar.gz下
git archive --format=tar --prefix=ruby/ v1.0 | gzip > /tmp/ruby1.0.tar.gz
cd /tmp
ls -l
-检验生成的结果
tar zxvf ruby1.0.tar.gz
-----------------------------
pwd
ls -l
ls -la
--初始化,加载,提交
git init
git add .
git commit -m "1st commit"
--查看文件个数
find .git/objects/ -type f | wc -l
--查看分支情况
git branch
clear
--查看头文件
ls -l .git/HEAD
cat .git/HEAD
cat .git/refs/heads/master
--指向的文件类型
git cat-file -t ****
--修改文件
vi test.rb
--第二次提交
git commit -a -m "2nd commit"
--修改文件
vi README
--第三次提交
git commit -a -m "3rd commit"
--产生testing分支
git branch testing
--查看头引用指向
cat .git/HEAD
ls -l .git/refs/heads
--查看两个分支的指向,是一样的
cat .git/refs/heads/master
cat .git/refs/heads/testing
git breach
--切换分支
git checkout testing
git breach
--查看头文件指向
cat .git/HEAD
clear
git breach
ls
--修改test.rb文件
vi test.rb
--第四次提交
git commit -a -m "testing 4th commit"
--查看当前的HEAD引用
cat .git/HEAD
--查看当前的testing和master分支,应该已经不同了
cat .git/refs/heads/testing
cat .git/refs/heads/master
cat test.rb
--切换到master分支
git branch
git checkout master
--显示test.rb文件
cat test.rb
--切回到testing分支
git branch
git checkout testing
git branch
cat test.rb
clear
--切回到master分支
git branch
git checkout master
ls
-修改LICENSE2文件
vi LICENSE2
--master第四次提交
git commit -a -m "master 4th commit"
clear
--合并前master情况
git branch
ls -l
cat LICENSE2
cat test.rb
cat README
--合并前testing情况
git checkout testing
cat LICENSE2
cat test.rb
cat README
clear
--合并
git branch
git checkout master
git merge testing
clear
ls
ls -l
--合并后的情况
cat LICENSE2
cat test.rb
cat README
--删除testing分支
git branch
it branch -D testing
git branch
clear
cd ..
ls
--创建新的工作区
mkdir fw
cd fw
ls
vi main.c
ls
git init
git add .
git commit -m "1st commit"
ls
ls -l
--创建tempbr分支
git branch
git branch tempbr
git checkout tempbr
--分支的文件已经改变,提交
vi main.c
git commit -a -m "tempbr 2nd commit"
--master分支没有变化
git branch
git checkout master
cat main.c
--此时合并更容易
git merge tempbr