git命令日常使用总结

git简介

git是一种分布式版本控制系统,可以很有效的帮助我们管理在日常工作中开发中撰写的代码文件,协助我们完成版本管理,分支控制以及在出现Bug后能够准确的进行回滚

在我们日常的工作中,用到最多的git命令包括init(初始化仓库)、add(文件添加)、commit(版本提交)、branch(分支管理)、checkout(分支切换)、pull以及push(文件拉取和推送)等.

各个常用命令的使用方法以及使用场景如下:

git init

git init是实现git仓库初始化的命令,用于将指定的文件夹初始化为git仓库

创建步骤

  • mkdir /newRepo
  • cd /newRepo
  • git init

如果在执行完毕后可以看到如下输出,则表明仓库初始化完成

Initialized empty Git repository in /Users/newRepo/.git/

并且,此时在该文件下会创建一个隐藏文件夹.git,用来保存git的操作,切记不要轻易删除
除了git init外,其他任何git命令都必须在对应的文件夹下操作

git add

git add命令作用:将指定的文件添加至git仓库中
常用方式为git add <filename>,表明将指定文件名的文件添加至git仓库中.
在日常的工作中,如果我们是在已有的仓库中进行的相关工作,则可以使用git add .命令,将所有变更添加到仓库中

$ vim test.py 
$ git add test.py

例如在仓库文件夹下,新建了test..py文件,随后通过指定test.py文件名,将该文件添加到仓库中
随后,我们可以通过git status命令查看文件是否添加成功

$ git status
On branch develop

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
	new file:   test.py

每次git add表明添加了一次历史版本

git commit

然而,只通过git add <filename>将文件添加到仓库中是不够的.因为git add只是将当前文件添加至暂存区.接下来需要将文件提交至git仓库
将改动提交至git仓库需要用到git commit命令,该命令的作用是将此次git暂存区文件提交至代码仓库,有点类似于我们在日常使用虚拟机时候创建的快照一样,当后续有需要的时候,能够随时从历史记录中找到对应的提交
在日常的使用中,强烈建议在每次commit时添加注释,说明此次提交的改动内容,便于后续的检索和查看
使用方法:git commit -m "注释内容"
例如将以上暂存区内的改动内容提交至代码仓库,可以使用如下命令:

$ git commit -m "develop: add new program test.py"
[develop (root-commit) 2776459] develop: add new program test.py
 1 file changed, 1 insertion(+)
 create mode 100644 test.py

如上则表明已经将变更提交至代码仓库之中了
这时,我们可以再次通过git status命令查看暂存区中的状况

$ git status
On branch develop
nothing to commit, working tree clean

可以看到此刻暂存区中的变更已经被清除了

而为何提交文件至代码仓库中需要两步呢:
因为commit可以一次提交很多文件,所以我们可以多次add不同的文件

当对提交后的文件内容进行了修改之后,再次使用git status命令可以查看到被修改的文件提示

$ git status
On branch develop
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   test.py

可以看到对于我们修改了但没有进行提交的文件会进行提醒.
同时,我们还可以通过git diff命令判断当前文件的修改内容与已经提交内容的不同

$ git diff test.py 
diff --git a/test.py b/test.py
index 665c637..2337d1d 100644
--- a/test.py
+++ b/test.py
@@ -1 +1,8 @@
-print("hello world!")
+import datetime
+
+def main():
+    print("hello world!")
+    print(datetime.time())
+
+if __name__ == '__main__':
+    main()

因此,如果我们每次对现有文件进行了修改,最好还是先查看改动区别后在决定是否提交

而每一次执行git commit之后,git都会对提交进行记录,相关记录可以通过git log进行查询

$ git log
commit 1a17de7d15c7e27efd7e9a448d9eeb508140264f (HEAD -> develop)
Author: test <xxx@mail.com>
Date:   Sat Aug 6 12:31:46 2022 +0800

    change test.py add time

commit 27764599a5b05d3b8eb69b228d40ed55a45fb78b
Author: test <xxx@mail.com>
Date:   Sat Aug 6 11:39:52 2022 +0800
    develop: add new program test.py

基于以上的版本变更请求,当我们想要回退到指定版本的时候,可以通过git reflog命令产看提交的记录,并根据head编号使用git reset --head <heah_id>实现回退到指定版本.

执行git reflog

$ git reflog
1a17de7 (HEAD -> develop) HEAD@{0}: commit: change test.py add time
2776459 HEAD@{1}: commit (initial): develop: add new program test.py

执行 git reset --head 2776459回退到最初的版本状况

$ git reset --hard 2776459
HEAD is now at 2776459 develop: add new program test.py

此时在查看项目仓库中的相关文件就可以回到指定版本的状态
后续如果想在回到另外的状态,也可以通过这类方法实现

  • 撤销修改
    如果我们在使用过程中添加了错误的文件到暂存区中,则可以根据提示使用git restore --staged <filename>实现对文件对撤销
    例如:在当前代码仓库创建了一个新的文件README,随后使用git add .添加到了暂存区,但是突然发现该文件存在错误,需要修改时,此时仓库的git状态如下
$ vim README
$ ls
README	test.py
$ git add .
$ git status
On branch develop
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	new file:   README

这时,执行git restore --staged <file>撤销修改

$ git restore --staged README 
$ git status
On branch develop
Untracked files:
  (use "git add <file>..." to include in what will be committed)
	README

nothing added to commit but untracked files present (use "git add" to track)

可以看到此时的修改已经被撤回,我们就可以重新修改文件后重新提交了

如果提交的改动已经被git commit提交到了工作区,则需要通过git reset --head <head_id>的方式实现回退

  • 本地文件误删除后通过git恢复
    当在日常的使用过程中,如果不小心删除了本地的某些文件,需要恢复的时候,可以通过git restore <file_name>的方式实现恢复(前提是该文件之前已经提交到了git仓库)
    例如:
$ ls  
README	test.py
$ rm README 
$ ls
test.py
$ git status
On branch develop
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	deleted:    README

no changes added to commit (use "git add" and/or "git commit -a")
$ ls 
test.py
$ git restore README
$ ls
README	test.py
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值