Git常用命令

使用Git的大忌:

  • 没什么有价值的修改就提交,也就是没有意义的提交
  • 提交到别人的分支
  • 提交的代码又引入了新的更严重更明显的bug,也就是不如不提交。比第一条更严重,让别人也无法合并

配置gitlab密钥

git init

常常之后,出现下面结果

1
2
3
4
5
6
7
8
9
提示:使用 'master' 作为初始分支的名称。这个默认分支名称可能会更改。要在新仓库中
提示:配置使用初始分支名,并消除这条警告,请执行:
提示:
提示: git config --global init.defaultBranch <名称>
提示:
提示:除了 'master' 之外,通常选定的名字有 'main''trunk''development'
提示:可以通过以下命令重命名刚创建的分支:
提示:
提示: git branch -m <name>

可以对分支改名。此时使用git branch无法查看分支,因为还没有任何操作。

在本地建立仓库到push的过程:

1
2
3
4
5
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/rjosodtssp/Design-Modes.git
git push -u origin master

提交会附带消息和一个哈希值,哈希值是一串包含数字和字母的随机序列。

单独 push 某文件

1
2
3
git commit test.cpp
//在vim中输入更新信息
git push origin master

Commit message 使用的 emoji

初次提交示例:

1
git commit -m ":tada: Initialize Repo"

🆕 (全新) :new: 引入新功能
(闪电) :zap: 提升性能
🔖 (书签) :bookmark: 发行/版本标签
🐛 (bug) :bug: 修复 bug
(急救车) :ambulance: 重要补丁

(扳手) :wrench: 修改配置文件
(加号) :heavy_plus_sign: 增加一个依赖
➖ (减号) :heavy_minus_sign: 减少一个依赖
(备忘录) :memo: 撰写文档
(锤子) :hammer: 重大重构
🔥 (火焰) :fire: 移除代码或文件

撤销对文件的修改

test.cpp 修改后,打算返回上次提交的状态,使用命令:

1
git checkout -- qclipper.cpp

如果要撤销 所有文件 的修改,命令为:
1
git checkout -f

git diff ReadMe.mdown 表示在commit之前查看文件修改哪些地方, 在commit之后使用此命令无效。

撤销 commit 的多种方法

那么在执行完 commit 之后,想撤回 commit

1
git reset --soft HEAD^

HEAD^ 意思是上一个版本,也可以写成 HEAD~1 。如果进行了 2commit,都想撤回,可以使用 HEAD~2

撤销 commit、并撤销 git add 操作、不撤销修改代码

1
git reset --mixed HEAD^
1
2
git reset HEAD^
// 效果和 git reset --mixed HEAD^ 一样,--mixed 是默认参数

以上操作将把HEAD指针移动到父提交,但不会改变工作目录中的文件,修改将被保留。

撤销 commit、不撤销git add .

soft

1
git reset --soft HEAD^

撤销 commit、撤销 git add . 操作、撤销修改代码

hard

1
git reset --hard HEAD^
  • 这个命令将HEAD指针移动到当前提交的父提交,并且使用--hard选项会使工作目录中的文件恢复到这个父提交的状态;
  • 这意味着所有自上次提交以来的未提交的修改都将被删除;
  • 如果想保留这些修改,可以使用git stash命令来保存它们,然后在需要的时候再应用这些修改。

免密码 push的方法

  1. 使用文件创建用户名和密码

文件创建在用户主目录下:

1
2
3
touch .git-credentials
vim .git-credentials
https://{username}:{password}@github.com

记得在真正输入的时候是没有大括号的。

  1. 添加 git config 内容

git config --global credential.helper store

执行此命令后,用户主目录下的.gitconfig 文件会多了一项:[credential]

helper = store

重新 git push 就不需要用户名密码了。

重命名文件

1
2
git mv file.cpp new_file.cpp
git push origin master

修改commit message

  上一次的message如果需要修改,使用:git commit --amend 如果上一次的commit已经push了,那么需要强制提交 git push -f origin master

gitignore

gitignore在本地仓库的根目录,执行文件屏蔽 屏蔽规则