git使用手顺

一个low的开发可能还不是太需要这个东西,一个人的安全部可能也不太需要。一个团队的开发那就得需要了。团队协作开发这个东西必须得懂。所有如果你觉得自己貌似用不到git也可以呀,那只能说明你还没达到那个规模。更准确的说是一个人的开发。git让团队协作变得更加简单。其次就是版本管理,如果不知道什么是版本管理,那只能说明你写的代码根本不重要,丢了也就丢了。并且也不存在迭代的问题。在公司可能一年就让你琢磨这一个功能,一直不停的改改。版本的回滚,比如回滚到历史上的任意一个版本。如果每次更新都手动备份一份。次数多了难免忘记了。需要一个东西,自动的进行备份。以后想回来就自动的回来。这就是git,就这2功能
git window 安装完之后:

在这里插入图片描述
启动git bash(相当于在里面集成了一个小型的linux);

liangyi@DESKTOP-253QPV7 MINGW64 /e
$ mkdir git_test  ##创建文件夹 
liangyi@DESKTOP-253QPV7 MINGW64 /e
$ git init   ##git的初始化
Initialized empty Git repository in E:/.git/
$ cd git_test/
liangyi@DESKTOP-253QPV7 MINGW64 /e/git_test (master)
$ cd .git/
liangyi@DESKTOP-253QPV7 MINGW64 /e/git_test/.git (GIT_DIR!)
$ ls  ##创建了很多文件
config  description  HEAD  hooks/  info/  objects/  refs/

git 存每次我们改变了什么什么东西,都在这些隐藏目录里。这个目录不要动
我创建了一个小的python脚本
我们需要手动告诉git 我们需要保存文件

vim first_file.py
git add first_file.py    ##让git帮管理代码,把代码添加到仓库
git commit -m "commit my first git file"  用git commit 告诉git,把文件提交到仓库

git add 只是把代码放到git 暂存区
git commit 把代码从暂存区存入仓库
在这里插入图片描述
团队协作需要知道是谁提交的代码。所以这需要配置用户信息
配置完之后,再执行git commit

$ git commit
Aborting commit due to empty commit message.  ###git commit 需要加说明的

然后我们重新git commit 在最下面添加一行备注,然后保存退出

$ git commit
[master (root-commit) fabb31d] git test commit
 1 file changed, 2 insertions(+)
 create mode 100644 first_file.py

这个时候告诉我们一个文件改变,插入了2行数据,创建了一个文件 644 是文件的权限放到了仓库里

$ git commit
On branch master
nothing to commit, working tree clean

再次commit 告诉我们工作区是干净的
这个时候我们重修修改我们的脚本文件
在这里插入图片描述
我新增了345行修改了第2行
重复执行上述操作

$ git add first_file.py
warning: LF will be replaced by CRLF in first_file.py.
The file will have its original line endings in your working directory

liangyi@DESKTOP-253QPV7 MINGW64 /e/git_test (master)
$ git commit
Aborting commit due to empty commit message.

这个时候我们又弹出了文本,比较麻烦的。所以我们加入-m 直接搞定

$ git commit -m "second git test"
[master 0f7886f] second git test
 1 file changed, 4 insertions(+), 1 deletion(-)

此时我执行2个操作,对这个脚本进行第三次修改,同时新增一个新文本并添加内容
然后执行git status

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
        modified:   first_file.py
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        read.txt
no changes added to commit (use "git add" and/or "git commit -a")

说我们的修改并没有提交,可以使用add 文件名 放到暂存区,checkout file 丢弃(文件里面已经有修改了,可以通过checkout回滚)
untracked 没有跟踪的文件,我们需要add 后才能管理它

$ git checkout first_file.py

liangyi@DESKTOP-253QPV7 MINGW64 /e/git_test (master)
$ cat first_file.py
def sayyi(name):
    print("helo world")
    print 1
    print 2
    print 3

我还增加了三行。被回滚了,把我们没有提交的代码给撤回了。
我们还没有add 就可以撤回。为什么呢?
首先看我们在暂存区有没有代码,提交了之后暂存区的代码就被移到了仓库里,暂存区就没了。如果没有就到仓库里找
我们checkout 就相当于吧仓库里的代码又拉下来一份放到我们的本地,所以checkout就撤回了。
add 可以同时对一个目录的代码添加

$ git add .
warning: LF will be replaced by CRLF in read.txt.
The file will have its original line endings in your working directory

liangyi@DESKTOP-253QPV7 MINGW64 /e/git_test (master)
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   first_file.py
        new file:   read.txt


liangyi@DESKTOP-253QPV7 MINGW64 /e/git_test (master)
$ git commit -m "third commit"
[master ac0e533] third commit
 2 files changed, 8 insertions(+)
 create mode 100644 read.txt

git add . 对当前目录下的所有文件添加
git status 查看当前的代码修改状态
git checkout 把代码从暂存区回滚到工作区
##之前提交到仓库的版本有问题了。需要回滚啊,可是我已经提交了很多次了。我要回滚到指定的那一次。


查看git日志
黄色的才是最重要的,git里面的胃一值就是MD5值,确保每个版本都是唯一的
忽略都作者信息:

$ git log --pretty=oneline
ac0e533bee7cc1277421b81b5b9adbeef9fd2b01 (HEAD -> master) third commit
0f7886f67eaef804c099894fda5f22e0a53f31d0 second git test
fabb31d267ff5b284f9e6c7c612c57d8afc98a2a git test commit

回退到上一个版本:

$ git reset --hard HEAD^
HEAD is now at 0f7886f second git test

reset 重置,–head 把版本号指向上一个。再次查看日志

$ git log --pretty=oneline
0f7886f67eaef804c099894fda5f22e0a53f31d0 (HEAD -> master) second git test
fabb31d267ff5b284f9e6c7c612c57d8afc98a2a git test commit
没了哦
$ ls
first_file.py

文件没了。干干净净的回滚了。然后我继续开发,继续提交代码commit,突然发现回滚错了怎么办。我想再回去

$ git reset --hard ac0e533bee7cc1277421b81b5b9adbeef9fd2b01
HEAD is now at ac0e533 third commit

liangyi@DESKTOP-253QPV7 MINGW64 /e/git_test (master)
$ cat first_file.py
def sayyi(name):
    print("helo world")
    print 1
    print 2
    print 3
    print 4
    print 5
    print 6
    print 7

复制上面的ID,执行回滚。又回来了

$ git log
commit ac0e533bee7cc1277421b81b5b9adbeef9fd2b01 (HEAD -> master)
Author: yi <971339318@qq.com>
Date:   Tue Oct 16 22:57:24 2018 +0800
    third commit
commit 0f7886f67eaef804c099894fda5f22e0a53f31d0
Author: yi <971339318@qq.com>
Date:   Tue Oct 16 22:41:22 2018 +0800
    second git test
commit fabb31d267ff5b284f9e6c7c612c57d8afc98a2a
Author: yi <971339318@qq.com>
Date:   Tue Oct 16 22:34:03 2018 +0800
    git test commit

那假如我们找不到版本号怎么办呢。看不到了。怎么办怎么办,最后的救命稻草

$ git reflog
ac0e533 (HEAD -> master) HEAD@{0}: reset: moving to ac0e533bee7cc1277421b81b5b9adbeef9fd2b01
7571eaf HEAD@{1}: commit: change 5th
6abc5ae HEAD@{2}: commit: commit after rollback
0f7886f HEAD@{3}: reset: moving to HEAD^
ac0e533 (HEAD -> master) HEAD@{4}: commit: third commit
0f7886f HEAD@{5}: commit: second git test
fabb31d HEAD@{6}: commit (initial): git test commit

git reset --heard HEAD^ 回滚到上一次
git reset – heard sssss 回滚大指定的版本
git reflog 查看所有的操作,找到指定的版本

本地删除文件,git版本库没有删除
$ ls
first_file.py  read.txt

liangyi@DESKTOP-253QPV7 MINGW64 /e/git_test (master)
$ rm read.txt
liangyi@DESKTOP-253QPV7 MINGW64 /e/git_test (master)
$ git status
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

2种方案:1. git add/rm 把版本库也删掉,并且git commit;
git reset HEAD file 从暂存区回滚回工作区
2.git cheout 版本库还有。可以一键撤销(没有add 和 rm 之前可以执行)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值