git基本操作

git初始化

1
2
cd $work # 进入工作目录
git init

git查看当前个人信息

1
2
git config user.name # 姓名
git config user.email # 邮箱

git个人信息初始化

1
2
git config --global user.name "your name" # 姓名
git config --global user.email "you@yourdomain.example.com" # 邮箱

git文档忽略机制

1
2
cd $work
echo "zh" > .gitignore

git添加文件

1
2
git add . # 添加所有文件
git add filename1.format2 filename2.format2 # 可以一次添加多个文件,中间用空格隔开

注:如果只是修改或者删除了已被 Git 管理的文档,是没必要使用 git add 命令的

git提交

1
2
3
git commit
git commit -m "your version info" # 版本更新信息可以加入中文
git-commit # 命令的 -a 选项可将所有被修改的文档或者已删除的文档的当前状态提交到仓库中

当进入commit日志文件时,输入字母 c 可以进入编辑状态,这个时候就可以修改注释信息啦 ~

修改完之后按 esc键退出编辑状态,再按大写 ZZ就可以保存退出vim编辑器

image-20211130194540903

查看当前git仓库信息

1
git remote show origin

查看版本历史

1
2
git log # 查看版本历史
git log --stat --summary #查看每一次版本的大致变动情况

image-20211130201817429

b95f2282d2f29ec3b13ac0dd38ad32ad17e7b985为版本号,可通过 git show查看:

1
2
3
4
5
6
git show b95f2282d2f29ec3b13ac0dd38ad32ad17e7b985
git show b95f2
git show HEAD # 显示当前分支的最新版本的更新细节
git show HEAD^ # 查看 HEAD 的父版本更新细节
git show HEAD^^ # 查看 HEAD 的祖父版本更新细节
git show HEAD~4 # 查看 HEAD 的祖父之祖父的版本更新细节

撤销与恢复

保存本地修改,只撤销提交记录

  • 执行 git log命令,显示已提交的信息

    1
    git log
  • 执行 git reset 你提交前的一个commit id

    1
    git reset commit_id

不保存本地修改,直接还原到某一id版本

  • 执行 git reset –hard 你想要到某一个版本的commit id

    1
    git reset –hard 你想要到某一个版本的commit_id

    注:该操作会强制将本地git仓库还原至该id的文件

git reset —hard 操作后的数据恢复

分为三种情况:

  1. 之前的修改进行了 commit 提交,也就是说我们回退前的修改(曾经)存在于版本里;
  2. 之前的修改未进行 commit提交,但是进行了 git add 操作;
  3. 之前的修改未进行 commit 提交,也未进行 git add操作。

针对第一种情况:

  • 拿到之前修改的 commit id

    1
    git reflog

    git reflog命令,它会显示出你之前的所有操作

    777834-20190710102803303-1176293372

  • 执行 git reset --hard [hash]就可以回退到之前修改的状态,比如 62f039e 就是我的 reflog提交的哈希值,对其进行 reset即可

针对第二种情况:

主角命令 git fsck,这里呢不具体讲解此命令,只是简单描述利用此命令进行文件恢复。

img

img

如图示,我新建了文件 c.txt并添加了内容 ‘git fsck’,添加到缓存之后进行了 reset操作, 此时因为没有进行 git commit操作所以没有hash值,可供恢复,这个时候需要进行操作 git fsck --lost-found操作,返回如下结果:

img

关于此命令,git官网的解释

image-20220112180500039

根据提示,找到目录’.git/lost-found’,可以看到,

img

我们在commit’和‘other’目录下分别看到命令窗口打印出的文件,在‘other‘目录下找出之前遗失的文件

img

然后新建’c.txt’文件,并将文件内容复制过去,结束。

是不是很麻烦,特别是一次提交的文件多了,一个一个新建(修改)复制过去好烦哦。

是的很烦,所以保持良好的习惯。永远不要让这种操作降临到自己身上才是正道。(这只是为不可控的意外情况准备的)

针对第三种情况:

暂时还没有找回的办法

获取帮助

1
2
git help # 获取帮助
git help <command> # 获取某条命令的帮助

git协同开发

克隆仓库

1
git clone git_address

获取仓库最新文件

1
git pull git_address
1
2
git add .
git commit -m "commit info"

推送至远程仓库

1
git push origin master # 将本地master分支的最新修改推送到远程仓库

git项目分支管理

创建分支

1
git branch branch_name

转换分支

1
git checkout branch_name

分支合并

1
git merge branch_name

删除分支

1
2
git branch -d branch_name
git branch -D branch_name # 强制删除某分支