文章目录
- 代码仓库
- 创建仓库
- 1.进入需要创建代码库的文件夹
- 2.创建/切始化仓库
- 3.关联远程仓库
- 拉取远程仓库到本地
- 添加文件到仓库
- 1.查看工作区状态
- 2.添加文件到暂存区
- 3.提交到本地仓库
- 4.对比工作区文件变化
- 仓库配置
- 1.配置全局用户名和邮箱
- 2.配当前仓库用户名和邮箱
- 3.查看Git全局配置
- 代码版本/提交切换
- 查看过去版本/提交
- 1.提交的详情
- 2.提交的简介
- 回退版本/提交
- 1.回退到当前最新提交
- 2.回退到上次提交
- 3.回退到上n次提交
- 4.回退到某次提交
- 重返未来版本
- 1.查看历史提交以及被回退的提交
- 2.回到未来版本
- 撤销修改
- 1.工作区文件撤销
- 2.暂存区文件撤销
- 3.提交到了版本库
- 删除文件
- 1.从版本库删文件
- 2.恢复删除
- 3.从版本库中删除文件,但是本地不删除该文件
- 暂存修改
- 忽略文件
- 分支
- 创建与合并分支
- 1.创建分支
- 2.切换分支
- 3.合并分支
- 4.删除分支
- 删除本地分支
- 删除远程分支
- 5.查看分支
- 6.合并分支,解决分支冲突
- 7.开发完需要提交PR/MR
- 暂存修改
- 1.暂存工作现场
- 2.恢复工作现场
- 恢复
- 删除
- 恢复+删除
- 多人协作
- 1.查看远程库信息
- 2.更新/推送远程库
- 更新远程库信息
- 将远程库最新修改更新到本地
- 将本地修改推送到远程仓库
- 3.本地分支与远程分支交互
- 使用远程分支A创建本地分支
- 代码版本tag
- 1.查看tag
- 本地tag
- 远程tag
- 2.操作tag
- 添加tag
- 给当前版本加tag
- 给历史版本加tag
- 删除tag
- 删除本地标签
- 删除远程标签
- 推送tag到远程仓库
- 更新到本地
- 其他生僻命令
- 查看代码历史记录
- 查找引入 bug 的提交
- 复制提交到当前分支
- 查看命令
代码仓库
创建仓库
1.进入需要创建代码库的文件夹
cd 文件路径
2.创建/切始化仓库
git init
3.关联远程仓库
git remote add origin 远程仓库URL
拉取远程仓库到本地
或者直接克隆远程的仓库,更简单方便。
git clone <远程仓库URL>
添加文件到仓库
1.查看工作区状态
git status
2.添加文件到暂存区
添加单个文件:
git add 文件名
添加所有文件:
git add .
会忽略的文件:.gitignore
中指定的文件会被忽路、空目录
3.提交到本地仓库
git commit#我的电脑是Windows,此时进入了一个文本编辑器(vim)
#使用CTRL+C,输入i,进入插入模式
#使用CTRL+C,输入:wq,保存退出
也可以使用git commit -m "commit message"
,建议提交遵循commit message
规范。
使用git commit -m "commit message"
的方式提交代码虽然快捷,但是有一些潜在的问题:
- 提交信息可能过于简单:使用
-m
参数,你可能会倾向于写一些简短的提交信息,这可能会导致提交信息缺乏必要的详细内容,使得其他开发者难以理解这次提交的目的和内容。 - 无法处理复杂的提交信息:如果你的提交信息需要多行,或者需要更复杂的格式(比如列表、引用等),那么
-m
参数就无法满足需求了。 - 可能会忽略未跟踪的文件:
git commit -m
只会提交已经被添加到暂存区的文件,如果有新的文件被修改但是还没有被添加到暂存区,那么这些文件就不会被提交。
4.对比工作区文件变化
git diff
建议将beyond compare
配置为diff
工具,用于diff
以及merge
冲突
仓库配置
1.配置全局用户名和邮箱
git config --global user.name "name"
git config --global user.email "email address"
若是个人开发机可以这样配置,若是公共编译机则不能这样配置。
2.配当前仓库用户名和邮箱
git config user.name "name"
git config user.email "email address"
3.查看Git全局配置
git config --global -l
代码版本/提交切换
注意:这里的版本均为本地仓库版本。
查看过去版本/提交
1.提交的详情
git log
2.提交的简介
git log --pretty=oneline
回退版本/提交
1.回退到当前最新提交
git reset --hard HEAD
2.回退到上次提交
git reset --hard HEAD^
3.回退到上n次提交
git reset --hard HEAD~n
4.回退到某次提交
git reset --hard commit_id
# 可通过git log获取id
重返未来版本
1.查看历史提交以及被回退的提交
git reflog
注意:该记录有时限,且只在本地
2.回到未来版本
git reset --hard commit_id
撤销修改
1.工作区文件撤销
如果文件没有被提交到暂存区(即没有执行 git add
命令),你可以使用 git checkout 文件名
来撤销对该文件的修改。
git checkout 文件名
2.暂存区文件撤销
如果你想将暂存区的文件撤销到工作区,你可以使用 git reset HEAD 文件名
命令。这个命令不带 --hard
参数,所以它只会将暂存区的文件撤销到工作区,而不会影响工作区的文件。
git reset HEAD 文件名
如果你想撤销暂存区的文件,你可以使用 git checkout 文件名
命令。这将会撤销你对该文件的所有修改。
git checkout 文件名
3.提交到了版本库
参见回退版本/提交
删除文件
1.从版本库删文件
git rm 文件名
修改后需要提交
2.恢复删除
参考撤销修改
3.从版本库中删除文件,但是本地不删除该文件
git rm --cached 文件名
暂存修改
参照分支-暂存修改
忽略文件
通过git
仓库下的.gitignore
文件屏蔽某些中间文件/生成文件
分支
创建与合并分支
1.创建分支
仅创建:
git branch 分支名
创建并切换:
git checkout -b 分支名
在本地仓库操作,创建的都是本地分支。
2.切换分支
git checkout 分支名
3.合并分支
合并某分支到当前分支:
git merge <要合并的分支>
禁用 Fast-forward 模式:
git merge --no-ff
变基:
用于重新应用一系列提交到另一个分支上。
git rebase <要提取提交的分支>
4.删除分支
删除本地分支
删除未合并分支:
git branch -D 分支名
删除已合并分支:
git branch -d 分支名
删除远程分支
git push origin -d 分支名
也可以在界面操作。
5.查看分支
查看当前分支:
git branch
查看所有分支消息:
git branch -a
例如:
* masterremotes/origin/master
6.合并分支,解决分支冲突
-
将要合并的分支更新到最新
-
切换到主分支
-
合并分支
-
解决合并时的conflict
-
提交到版本库
-
合并成功
-
查看分支状态
git log --graph git log --graph --pretty=oneline --abbrev-commit
7.开发完需要提交PR/MR
通过PR/MR来合并开发分支与主分支。
暂存修改
1.暂存工作现场
git stash
2.恢复工作现场
恢复
git stash apply
删除
git stash drop
恢复+删除
git stash pop
多人协作
1.查看远程库信息
#详细
git remote -v#不详细
git remote
2.更新/推送远程库
更新远程库信息
git fetch
将远程库最新修改更新到本地
git pull#或
git fetch + git merge
将本地修改推送到远程仓库
git pushgit push origin 分支名
3.本地分支与远程分支交互
使用远程分支A创建本地分支
git checkout -b A origin/A
#origin是远程仓库名,若名字一样origin/A可以省略
将本地分支与远程分支作关联
git branch --set-upstream-to=origin/remote_branch your_branch#或
git checkout your_branch
git branch -u origin/remote_branch
代码版本tag
1.查看tag
本地tag
git tag -l
远程tag
git ls-remote --tags origin
2.操作tag
添加tag
给当前版本加tag
git tag -a 标签名 -m "这是备注信息"
给历史版本加tag
git tag -a 标签名 commit_id -m "这是备注信息"
删除tag
删除本地标签
git tag -d <tag_name>
删除远程标签
git push origin :refs/tags/<tag_name>
推送tag到远程仓库
git push origin <tag_name>#推送所有未提交的tag
git push origin --tags
更新到本地
git pull origin --tags
其他生僻命令
查看代码历史记录
git blame <file_name>
查找引入 bug 的提交
这个命令可以通过自动搜索的方式来查找引入 bug 的提交。利用二分查找法,自动检查每个提交是否引入了 bug。
git bisect start
git bisect bad # 当前版本是有bug的
git bisect good v1.0 # v1.0 版本没有 bug
git bisect reset
复制提交到当前分支
将指定的提交应用到当前分支。常用于将其他分支的提交复制到当前分支。
git cherry-pick <commit-id>
查看命令
#常用命令
git help#所有命令
git help -a