直接ctrl+f搜索就行
1、打开需要被git管理的文件
2、右键单击 git bash here
3、输入命令 git init
4、被管理的文件夹中出现 .git文件夹
1、在被git管理的文件下打开git命令窗口
git status
看到有两种颜色
-红色:工作区变化了,但是没有提交到暂存区
-绿色:已经提交到暂存区,没有提交到版本库
-没有:所有东西都在版本库中了,所有文件都被git管理起来了。
3.把文件移交到暂存区:
1、把工作区变更的文件(红色的文件)提交到暂存区
git add . # . 提交所有变更的文件
dit add 文件名 # 指定某个文件提交
2、把暂存区的文件拉回到工作区[由绿变红]
git reset HEAD
3、把工作区的变更,回退 【还没有放到暂存区】
-增加的内容,删除
git checkout .
1、将暂存区的文件提交到版本库(作为一个版本)
git commit -m '注释' # 注释内容必须填写
1、将暂存区的文件提交到版本库,必须设置作者
全局作者 所有文件提交版本都用此作者
git config --global user.email "邮箱"
git config --global user.name "作者名字"
# 局部作者 当前文件提交版本用此作者
git config user.email "作者邮箱"
git config user.name "作者名字"
bisect 检测那个版本有问题,需要自己设置好的,坏的版本,然后退回中间
1、查看版本库:
git log # 查看详细的版本库 可以看到提交人,详细的commit信息
git reflog # 查看简单的版本库,
2、回归到某个版本
-只要被版本管理了,可以回退到任意版本
git reset --hard 版本号
git忽略文件
#咱们项目中,有些文件,或文件夹不想被git管理
-比如:
-node_models
-.idea
-xx.pyc # python 的编译文件
使用步骤
-1 在仓库目录下 .git 所在目录下 新建 .gitignore
-2 在里面写忽略文件
mode_models # 直接忽略该文件
.idea # 忽略.idea文件
*.pyc # 忽略 xxx。pyc结尾的文件
*.log # 同上
-3 写的就会被忽略
-4 已经被管理过的不会被忽略
忽略文件写法
文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤
例如:
a.txt:项目中所有a.txt文件和文件夹都会被过滤
/a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
/b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
x :名字中有一个x的都会被过滤(*代表0~n个任意字符)
空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件
说明:git checkout -b
分支名表示创建一个新分支并切换到这个分支上。
-
master分支、dev分支、bug分支:
在dev分支发开代码,开发完成合并到master分支,master分支出现bug到bug分支修复
-
master分支、dev分支、bug分支 、个人分支
在个人分支上开发,开发完成合并到dev分支
-
查看已建立的分支:
git branch
-
创建分支:
git branch 分支名
-
切换分支:
git checkout 分支名
-
删除分支:
git branch -d 分支名
git push origin --delete branch_name
-
合并分支:(重要)
例如: 把dev分支合并到master分支
1、先来到master分支: git checkout master
2、执行合并分支命令: git merge dev
分支合并可能会出现冲突 ---- 下面讲解
完整流程
1.建立仓库
2.设置代码
3.先拉下来一次
4.写代码
5.git add.
git commit -m 提交到本地
6.git push --force origin master
git init # 初始化本地git仓库(创建新仓库)
git config --global user.name "xxx" # 配置用户名
git config --global user.email "xxx@xxx.com" # 配置邮件
git config --global color.ui true # git status等命令自动着色
git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
git config --global color.interactive auto
git config --global --unset http.proxy # remove proxy configuration on git
git clone git+ssh://git@192.168.53.168/VT.git # clone远程仓库
git status # 查看当前版本状态(是否修改)
git add xyz # 添加xyz文件至index
git add . # 增加当前子目录下所有更改过的文件至index
git commit -m 'xxx' # 提交
git commit --amend -m 'xxx' # 合并上一次提交(用于反复修改)
git commit -am 'xxx' # 将add和commit合为一步
git rm xxx # 删除index中的文件
git rm -r * # 递归删除
git log # 显示提交日志
git log -1 # 显示1行日志 -n为n行
git log -5
git log --stat # 显示提交日志及相关变动文件
git log -p -m
git show dfb02e6e4f2f7b573337763e5c0013802e392818 # 显示某个提交的详细内容
git show dfb02 # 可只用commitid的前几位
git show HEAD # 显示HEAD提交日志
git show HEAD^ # 显示HEAD的父(上一个版本)的提交日志 ^^为上两个版本 ^5为上5个版本
git tag # 显示已存在的tag
git tag -a v2.0 -m 'xxx' # 增加v2.0的tag
git show v2.0 # 显示v2.0的日志及详细内容
git log v2.0 # 显示v2.0的日志
git diff # 显示所有未添加至index的变更
git diff --cached # 显示所有已添加index但还未commit的变更
git diff HEAD^ # 比较与上一个版本的差异
git diff HEAD -- ./lib # 比较与HEAD版本lib目录的差异
git diff origin/master...master # 比较远程分支master上有本地分支master上没有的
git diff origin/master...master --stat # 只显示差异的文件,不显示具体内容
git remote add origin git+ssh://git@192.168.53.168/VT.git # 增加远程定义(用于push/pull/fetch)
git branch # 显示本地分支
git branch --contains 50089 # 显示包含提交50089的分支
git branch -a # 显示所有分支
git branch -r # 显示所有原创分支
git branch --merged # 显示所有已合并到当前分支的分支
git branch --no-merged # 显示所有未合并到当前分支的分支
git branch -m master master_copy # 本地分支改名
git checkout -b master_copy # 从当前分支创建新分支master_copy并检出
git checkout -b master master_copy # 上面的完整版
git checkout features/performance # 检出已存在的features/performance分支
git checkout --track hotfixes/BJVEP933 # 检出远程分支hotfixes/BJVEP933并创建本地跟踪分支
git checkout v2.0 # 检出版本v2.0
git checkout -b devel origin/develop # 从远程分支develop创建新本地分支devel并检出
git checkout -- README # 检出head版本的README文件(可用于修改错误回退)
git merge origin/master # 合并远程master分支至当前分支
git cherry-pick ff44785404a8e # 合并提交ff44785404a8e的修改
git push origin master # 将当前分支push到远程master分支
git push origin :hotfixes/BJVEP933 # 删除远程仓库的hotfixes/BJVEP933分支
git push --tags # 把所有tag推送到远程仓库
git fetch # 获取所有远程分支(不更新本地分支,另需merge)
git fetch --prune # 获取所有原创分支并清除服务器上已删掉的分支
git pull origin master # 获取远程分支master并merge到当前分支
git mv README README2 # 重命名文件README为README2
git reset --hard HEAD # 将当前版本重置为HEAD(通常用于merge失败回退)
git rebase
git branch -d hotfixes/BJVEP933 # 删除分支hotfixes/BJVEP933(本分支修改已合并到其他分支)
git branch -D hotfixes/BJVEP933 # 强制删除分支hotfixes/BJVEP933
git ls-files # 列出git index包含的文件
git show-branch # 图示当前分支历史
git show-branch --all # 图示所有分支历史
git whatchanged # 显示提交历史对应的文件修改
git revert dfb02e6e4f2f7b573337763e5c0013802e392818 # 撤销提交dfb02e6e4f2f7b573337763e5c0013802e392818
git ls-tree HEAD # 内部命令:显示某个git对象
git rev-parse v2.0 # 内部命令:显示某个ref对于的SHA1 HASH
git reflog # 显示所有提交,包括孤立节点
git show HEAD@{5}
git show master@{yesterday} # 显示master分支昨天的状态
git log --pretty=format:'%h %s' --graph # 图示提交日志
git show HEAD~3
git show -s --pretty=raw 2be7fcb476
git stash # 暂存当前修改,将所有至为HEAD状态
git stash list # 查看所有暂存
git stash show -p stash@{0} # 参考第一次暂存
git stash apply stash@{0} # 应用第一次暂存
git grep "delete from" # 文件中搜索文本"delete from"
git grep -e '#define' --and -e SORT_DIRENT
git gc
git fsck
Git 是一个版本控制系统,用于跟踪和管理代码的变化。以下是一些常用的 Git 指令:
-
初始化仓库:
git init ```
-
克隆仓库:
git clone <仓库地址> ```
-
添加文件到暂存区:
git add <文件名> ```
-
提交更改到仓库:
git commit -m "提交信息" ```
-
查看当前仓库状态:
git status ```
-
查看提交历史:
git log ```
-
查看文件修改的详细信息:
git diff <文件名> ```
-
拉取远程仓库的更新:
git pull ```
-
推送本地提交到远程仓库:
git push ```
-
创建分支:
git branch <分支名>
-
切换到指定分支:
git checkout <分支名>
-
合并分支到当前分支:
git merge <分支名>
-
删除分支:
git branch -d <分支名>
-
撤销工作区的修改:
git checkout -- <文件名>
-
撤销暂存区的修改:
git reset HEAD <文件名>
-
重置仓库到指定提交:
git reset <提交哈希值>
-
创建标签:
git tag <标签名>
-
切换到指定标签:
git checkout <标签名>
-
查看远程仓库列表:
git remote -v
-
添加远程仓库:
git remote add <远程仓库名> <仓库地址>
这只是 Git 的一小部分常用指令,还有很多其他功能和选项可以使用。你可以通过输入 git --help
或者 git <指令名> --help
来获取更详细的帮助信息。
Certainly! Here are some more Git commands and concepts:
-
检出远程分支到本地:
git checkout -b <本地分支名> origin/<远程分支名>
-
查看分支列表:
git branch
-
查看远程分支列表:
git branch -r
-
查看所有分支列表(包括远程分支):
git branch -a
-
查看特定提交的详细信息:
git show <提交哈希值>
-
创建并切换到新分支:
git checkout -b <新分支名>
-
修改最后一次提交的信息:
git commit --amend
-
丢弃本地所有修改,回到上一次提交的状态:
git reset --hard HEAD
-
从远程仓库获取最新的分支列表:
git remote update origin --prune
-
拉取指定远程分支到本地:
git pull <远程仓库名> <远程分支名>:<本地分支名>
-
强制推送本地分支到远程仓库:
git push -f <远程仓库名> <本地分支名>
32.git whatchanged # 显示提交历史对应的文件修改记录
-
解决合并冲突:
当合并分支时遇到冲突,需要手动解决冲突并提交修改。
-
忽略文件:
在仓库根目录创建一个名为
.gitignore
的文件,列出需要忽略的文件或文件夹的模式。 -
组织提交为多个相关的修改:
使用
git add
命令逐个添加相关的修改到暂存区,然后使用git commit
提交它们。 -
使用 Git 标签管理版本:
可以使用标签来标记重要的提交,如发布版本。有两种类型的标签:轻量标签和附注标签。
-
使用 Git 分支管理项目开发:
分支使得在项目中并行进行开发变得容易,可以创建不同的分支用于不同的功能、修复等,然后将它们合并到主分支。
-
使用 Git Stash 保存和恢复工作区状态:
git stash
命令用于保存工作区的临时状态,可以在之后恢复这些修改。
这些是更多的 Git 指令和概念,希望对你有所帮助!如有需要,可以进一步探索 Git 的功能和选项,以满足你的具体需求。
Certainly! Here are some additional Git commands and concepts:
-
使用 Git Rebase 重新应用提交:
git rebase
命令允许将一系列提交从一个分支移动到另一个分支,并可以用于合并提交、修改提交消息等。 -
使用 Git Cherry-pick 选择性地应用提交:
git cherry-pick
命令允许选择性地将单个提交应用到当前分支,可以用于合并特定的提交而不是整个分支。 -
使用 Git Reset 撤销提交:
git reset
命令可以撤销提交并移动分支指针到指定的提交,有三种模式:--soft
、--mixed
和--hard
,它们分别影响工作区、暂存区和版本库。 -
使用 Git Reflog 查看引用日志:
git reflog
命令显示引用(分支、标签等)的日志,可以用于查看分支切换、提交和重置等操作的历史记录。 -
使用 Git Fetch 获取远程分支更新:
git fetch
命令从远程仓库获取最新的分支和提交信息,但不会自动合并或修改当前分支。 -
使用 Git Config 配置用户信息:
git config
命令用于配置 Git 的用户信息,如用户名、邮箱等,可以使用--global
选项来设置全局配置。 -
使用 Git Merge --no-ff 非快进式合并:
git merge --no-ff
命令执行非快进式合并,即在合并分支时创建一个新的提交记录,保留分支的历史信息。 -
使用 Git Bisect 查找引入 bug 的提交:
git bisect
命令用于二分查找引入 bug 的提交,通过不断切换到代码库中的不同提交来确定引入问题的提交。 -
使用 Git Submodules 管理子模块:
Git 子模块允许将一个 Git 仓库作为另一个仓库的子目录进行管理,这对于管理依赖关系或共享代码非常有用。
-
使用 Git Hooks 自定义操作:
Git Hooks 是在特定事件发生时自动触发的脚本,可以用于自定义操作,如在提交前运行测试、执行自动化脚本等。
-
使用 Git Workflows 管理开发流程:
Git Workflows 是一种组织和管理代码开发的方法,包括集中式工作流、分支工作流、Forking 工作流等。
这些是更多的 Git 指令和概念,可以帮助你更好地使用 Git 进行版本控制和代码管理。Git 是一个功能强大且灵活的工具,可以根据项目的需求进行定制和配置。希望这些信息对你有所帮助!
Certainly! Here are a few more Git commands and concepts:
-
使用 Git Revert 撤销提交:
``git revert` 命令用于创建一个新的提交来撤销先前的提交,它会创建一个反向的提交来撤销指定提交的更改。
-
使用 Git Stash 应用和管理临时存储:
``git stash` 命令不仅可以保存工作区的临时状态,还可以应用和管理这些临时存储,如应用特定的存储、查看存储列表等。
-
使用 Git Interactive Add 交互式添加文件:
``git add -i` 命令允许以交互方式添加文件到暂存区,可以选择部分文件进行添加,非常适用于复杂的修改场景。
-
使用 Git Blame 追溯代码修改历史:
``git blame` 命令显示每一行代码是在哪个提交中被修改的,可以帮助定位代码的修改来源和作者。
-
使用 Git Archive 导出仓库快照:
``git archive` 命令用于将仓库的指定版本导出为一个压缩文件,方便共享和发布仓库的快照。
-
使用 Git Ignore 文件模式匹配规则:
``.gitignore` 文件中可以使用模式匹配规则来指定哪些文件或文件夹应该被忽略,如通配符、目录匹配等。
-
使用 Git Rebase -i 进行交互式变基:
``git rebase -i` 命令允许交互式调整提交历史,可以合并、拆分、编辑提交信息等,用于整理提交历史。
-
使用 Git Cherry-pick -n 选择性地应用提交:
``git cherry-pick -n
命令与
git cherry-pick` 类似,但不会自动提交应用的提交,允许进一步修改和调整。 -
使用 Git LFS 管理大型文件:
Git LFS(Large File Storage)是一个扩展,用于管理大型文件,可以将大文件存储在 Git 仓库之外,以减少仓库大小。
-
使用 Git Worktree 管理多个工作树:
``git worktree` 命令允许在同一仓库中创建和管理多个工作树,方便同时处理多个分支或提交。
这些是一些进阶的 Git 指令和概念,可以帮助你更深入地使用 Git,并提供更多灵活性和功能。Git 是一个强大的工具,掌握这些指令和概念将使你更加熟练地进行版本控制和协作开发。希望这些信息对你有所帮助!
Certainly! Here are a few more Git commands and concepts:
-
使用 Git Rebase --onto 进行精确的变基操作:
``git rebase --onto` 命令允许将一系列提交从一个分支移动到另一个分支上的精确位置,可以指定起始和结束提交。
-
使用 Git Rerere 自动解决冲突:
``git rerere`(Reuse Recorded Resolution)是 Git 的一个特性,它可以自动记录和重用解决冲突的方法,减少重复解决相同冲突的工作。
-
使用 Git Subtree 管理嵌套仓库:
Git Subtree 允许将一个仓库的子目录作为另一个独立仓库的子目录进行管理,方便同时管理两个相关但独立的代码库。
-
使用 Git Workflows 进行持续集成和部署:
Git Workflows 可以与持续集成和部署工具集成,实现自动化的构建、测试和部署过程,提高开发流程的效率和稳定性。
-
使用 Git Hooks 定制工作流程:
Git Hooks 允许在特定的 Git 事件发生时触发自定义脚本,可以用于自动化测试、代码风格检查、文档生成等各种定制化操作。
-
使用 Git Bisect 自动化二分查找:
``git bisect` 命令可以与测试脚本结合使用,自动化地进行二分查找,快速定位引入问题的提交。
-
使用 Git Rebase -i 进行交互式变基操作:
``git rebase -i` 命令的交互式模式允许对提交进行更高级的操作,如合并提交、编辑提交消息、重新排序提交等。
-
使用 Git Archive 导出仓库快照并应用压缩:
``git archive` 命令可以将仓库的指定版本导出为一个压缩文件,并可以选择性地应用压缩算法。
-
使用 Git Reflog 恢复误删的分支或提交:
``git reflog` 命令可以查看引用的操作历史,可以用于恢复误删的分支或提交,即使没有直接引用。
这些是一些更高级的 Git 指令和概念,可以帮助你更深入地使用 Git,并在复杂的开发场景中发挥更大的作用。继续学习和探索 Git 的功能和选项将使你成为更具经验和熟练的版本控制专家。希望这些信息对你有所帮助!
Certainly! Here are a few more Git commands and concepts:
-
使用 Git Workflows 进行团队协作:
Git Workflows 可以帮助团队规范代码开发和协作,如使用分支进行特性开发、使用 Pull Request 进行代码审查等。
-
使用 Git Hooks 进行自动化测试和部署:
Git Hooks 可以与测试工具和部署工具集成,实现代码提交时的自动化测试和部署流程,提高开发效率和质量。
-
使用 Git Rebase 进行交互式历史编辑:
```git rebase -i` 命令的交互式模式允许对提交历史进行编辑,如修改提交消息、合并提交、删除提交等。
-
使用 Git Cherrypick -x 保留原始提交信息:
```git cherry-pick -x` 命令可以保留原始提交的信息,将其添加到新的提交中,方便跟踪代码的来源和历史。
-
使用 Git Bisect run 自动化测试错误定位:
```git bisect run` 命令可以与测试脚本结合使用,自动化地进行二分查找并运行测试,快速定位引入问题的提交。
-
使用 Git Submodules 更新子模块:
```git submodule update` 命令用于更新子模块,将其切换到指定的提交或分支,确保使用的是最新的子模块代码。
-
使用 Git Rebase --autosquash 自动整理提交历史:
```git rebase --autosquash` 命令可以自动整理提交历史,合并和排序提交,提升提交历史的清晰度和可读性。
-
使用 Git Stash Pop 应用并删除临时存储:
```git stash pop` 命令可以应用最近的临时存储,并将其从存储列表中删除,方便在工作区恢复临时保存的更改。
这些是一些进一步的 Git 指令和概念,涵盖了团队协作、自动化测试、历史编辑等方面的应用。继续学习和探索 Git 的功能和最佳实践将使你更加熟练地使用 Git,并提高你的开发效率和代码管理能力。希望这些信息对你有所帮助!
Certainly! Here are a few more Git commands and concepts:
-
使用 Git Workflows 进行版本发布:
Git Workflows 可以帮助管理版本发布的流程,如使用标签进行版本标识、使用分支进行发布准备等。
-
使用 Git Submodules 管理外部依赖:
Git Submodules 允许将外部依赖以子模块的形式嵌入到仓库中,方便管理和更新外部代码库。
-
使用 Git Notes 添加附加信息:
Git Notes 允许向提交或对象添加附加信息,如代码审查意见、问题追踪链接等,以帮助团队成员进行协作和沟通。
-
使用 Git Rerere-train 训练解决冲突:
````git rerere-train` 命令可以训练 Git Rerere 功能,以记录和重用解决冲突的方法,减少重复解决相同冲突的工作。
-
使用 Git Reflog 恢复误操作:
````git reflog` 命令可以恢复误操作,如误删分支、误修改提交等,通过查看引用操作历史找回丢失的提交或分支。
-
使用 Git Worktree 删除工作树:
````git worktree` 命令可以删除不再需要的工作树,清理磁盘空间和管理多个工作树的同时性。
-
使用 Git Stash Branch 创建临时分支:
````git stash branch` 命令可以在应用临时存储的同时创建一个新的分支,方便在分支上继续开发。
-
使用 Git LFS 追踪大型文件:
Git LFS 可以帮助追踪和管理大型文件,通过指定文件类型将其存储在外部存储中,减轻仓库的压力。
这些是一些进一步的 Git 指令和概念,涵盖了版本发布、外部依赖管理、附加信息添加等方面的应用。继续学习和探索 Git 的功能和最佳实践将使你更加熟练地使用 Git,并提高你的开发效率和代码管理能力。希望这些信息对你有所帮助!
要为项目增加本地和远程标签,以及查看和删除标签,可以按照以下步骤进行操作:
增加本地标签:
使用 git tag 命令在当前提交上创建一个本地标签。例如,要创建一个名为 "v1.0" 的标签,可以运行 git tag v1.0。
如果你想在之前的提交上创建标签,可以使用提交的哈希值作为参数。例如,要在特定提交上创建标签,可以运行 git tag v1.0 ,其中 是提交的哈希值。
将本地标签推送到远程仓库:
使用 git push origin 命令将指定的本地标签推送到远程仓库。例如,要将名为 "v1.0" 的标签推送到远程仓库,可以运行 git push origin v1.0。
查看标签:
使用 git tag 命令可以列出所有的本地标签。运行 git tag 命令时,它会显示所有的标签名称。
若要查看特定标签的详细信息,可以运行 git show 命令。例如,要查看名为 "v1.0" 的标签的详细信息,可以运行 git show v1.0。
删除标签:
使用 git tag -d 命令可以删除本地的标签。例如,要删除名为 "v1.0" 的本地标签,可以运行 git tag -d v1.0。
如果你已经将标签推送到远程仓库,并且想要删除远程仓库中的标签,可以运行 git push origin --delete 命令。例如,要删除远程仓库中名为 "v1.0" 的标签,可以运行 git push origin --delete v1.0。
请注意,增加和删除标签都是本地操作,如果要将本地标签推送到远程仓库或删除远程仓库中的标签,需要使用相应的推送命令。