1 前言

Git 是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小到大的项目。此处记录一下常用的git操作,以便日后查看或复制使用。

git在官网下载即可安装:https://git-scm.com/

如果想要命令行操作,请见下方推荐方法。

安卓端可以直接使用termux,参考:https://www.sfnote.com/android/d866.html

windows上建议使用WSL来安装使用git,参考官方文档:https://learn.microsoft.com/zh-cn/windows/wsl/install

WSL的shell建议使用Oh-my-zsh,可以提供命令补全等功能,提升工作效率,具体方法参考:https://blog.csdn.net/lixbao/article/details/119145083

2 初始化操作

以下所有git命令需要在项目所在文件夹运行!!!

2.1 查看ohmyzsh插件关于git的命令别名(未使用ohmyzsh忽略此命令)

alias | grep git

2.2 建议先创建.gitignore文件,该文件用于确定哪些文件(私密文件或无用文件)不加入版本控制

vi .gitignore

2.3 以下是一个.gitignore文件示例

# 忽略测试文件夹,*表示匹配任意文件,必须带上*否则下面的保留重要文件不生效
test/*

# 但保留test文件夹中的重要文件
!test/important.txt

# python模块缓存忽略
python/models/__pycache__/

2.4 用户配置

git config --global init.defaultBranch main
git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"

2.5 初始化仓库

git init

2.6 查看配置

git config --list

3 常用本地操作

3.1 添加文件到暂存区

git add <file>        # 添加单个文件
git add .             # 添加当前目录下的所有文件, ga .

3.2 查看仓库状态

git status  # gst

3.3 提交修改

git commit -m "描述信息"  # 或者直接git commit会调用编辑器输入提交备注信息,这样方便写多行提交信息

3.4 查看提交日志

git log                  # 查看完整日志
git log --oneline        # 每条日志显示为一行
git log --graph --oneline --all # 图形化显示提交历史

3.5 修改最新提交的描述信息

git commit --amend -m "新的描述信息"

3.6 查看当前文件变更

git diff <file_path>  # 查看工作区和最新提交的文件差异    
git diff <commit_hash or branch_name> -- <file_path>  #  查看提交或者分支和工作区的文件差异

4 远程操作

4.1 github远程仓库ssh密钥配置

如果没有ssh公钥,用如下命令创建,一路回车即可:

ssh-keygen

然后查看公钥并复制内容:

cat ~/.ssh/id_rsa.pub

登录github网站在该网址添加ssh公钥:https://github.com/settings/keys

2024-12-13T12:18:54.png

然后可以在github网站上手动创建仓库以便git进行远程连接,注意选择仓库是公开还是私密。

4.2 克隆远程仓库

git clone <repository_url>

4.3 添加远程仓库

git remote add origin <repository_url> # url格式为: git@github.com:2act/test.git

4.4 查看远程仓库

git remote -v

4.5 推送到远程仓库(进行本地commit后)

git push origin <branch_name>

4.6 拉取远程分支

git pull origin <branch_name>

4.7 获取远程更新

git fetch origin

更新远程分支信息到本地,但不会自动合并。

5 分支管理

5.1 创建新分支

git branch <branch_name>

5.2 切换分支

git checkout <branch_name>

5.3 创建并切换分支

git checkout -b <branch_name>

5.4 重命名分支

git branch -m <old_branch_name> <new_branch_name>

5.5 如果远程仓库已经有旧分支名称的记录,还需要进行以下操作:

git push origin --delete <old_branch_name>
git push origin <new_branch_name>
git branch --set-upstream-to=origin/<new_branch_name>

5.6 查看所有分支

git branch

5.7 合并分支

git checkout <target_branch>
git merge <source_branch>

5.8 删除分支

git branch -d <branch_name>        # 删除已合并的分支
git branch -D <branch_name>        # 强制删除未合并的分支

6 版本管理与历史版本切换

6.1 查看历史提交

git log
git log --oneline

6.2 切换到某个历史版本

git checkout <commit_hash>

commit_hash 是历史提交的哈希值。此操作会使工作区处于“分离头指针(detached HEAD)”状态。

6.3 从某个历史版本创建分支

git checkout -b <new_branch_name> <commit_hash>

创建一个新分支,从指定的历史版本开始编程。

6.4 回退到某个历史版本

git reset --hard <commit_hash>

将当前分支回退到某个历史版本,丢弃之后的更改,谨慎使用

7 恢复与撤销

7.1 撤销工作区的修改

git checkout -- <file>

将某个文件恢复到暂存区或最新提交的状态。

7.2 撤销已暂存的文件

git reset HEAD <file>

将已暂存的文件撤回到工作区。

7.3 删除最后一次提交

git reset --soft HEAD~1        # 保留工作区和暂存区
git reset --mixed HEAD~1       # 保留工作区,清空暂存区
git reset --hard HEAD~1        # 清空工作区和暂存区

8 解决冲突

发生冲突后,Git 会标记冲突文件。
打开冲突文件,按照 <<<< 和 >>>> 标记手动编辑。
修改完毕后,重新添加文件到暂存区:

git add <file>
git commit -m "解决冲突"

9 忽略文件

9.1 刷新.gitignore

如果已被追踪的文件需要被忽略:

git rm -r --cached .
git add .
git commit -m "更新 .gitignore"

10 标签管理

10.1 创建标签

git tag <tag_name>
git tag -a <tag_name> -m "描述信息"

10.2 查看标签

git tag

10.3 推送标签到远程

git push origin <tag_name>

10.4 删除本地/远程标签

git tag -d <tag_name>               # 删除本地标签
git push origin --delete <tag_name> # 删除远程标签

11 高级操作

11.1 Cherry-pick(挑选提交)

git cherry-pick <commit_hash>

将指定提交应用到当前分支。

11.2 Stash(暂存工作区)

git stash          # 保存当前修改
git stash list     # 查看所有存储的修改
git stash apply    # 恢复最新的暂存
git stash drop     # 删除暂存内容
git stash pop      # 恢复最新暂存并删除它

最后修改:2024 年 12 月 20 日
如果觉得我的文章对你有用,请随意赞赏