git基础操作

时间:2024-03-04 15:42:47

直接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 指令:

  1. 初始化仓库:

    git init
    ```
    
    
  2. 克隆仓库:

    git clone <仓库地址>
    ```
    
    
  3. 添加文件到暂存区:

    git add <文件名>
    ```
    
    
  4. 提交更改到仓库:

    git commit -m "提交信息"
    ```
    
    
  5. 查看当前仓库状态:

    git status
    ```
    
    
  6. 查看提交历史:

    git log
    ```
    
    
  7. 查看文件修改的详细信息:

    git diff <文件名>
    ```
    
    
  8. 拉取远程仓库的更新:

    git pull
    ```
    
    
  9. 推送本地提交到远程仓库:

    git push
    ```
    
    
  10. 创建分支:

    git branch <分支名>
    
  11. 切换到指定分支:

    git checkout <分支名>
    
  12. 合并分支到当前分支:

    git merge <分支名>
    
  13. 删除分支:

    git branch -d <分支名>
    
  14. 撤销工作区的修改:

    git checkout -- <文件名>
    
  15. 撤销暂存区的修改:

    git reset HEAD <文件名>
    
  16. 重置仓库到指定提交:

    git reset <提交哈希值>
    
  17. 创建标签:

    git tag <标签名>
    
  18. 切换到指定标签:

    git checkout <标签名>
    
  19. 查看远程仓库列表:

    git remote -v
    
  20. 添加远程仓库:

    git remote add <远程仓库名> <仓库地址>
    

这只是 Git 的一小部分常用指令,还有很多其他功能和选项可以使用。你可以通过输入 git --help 或者 git <指令名> --help 来获取更详细的帮助信息。

Certainly! Here are some more Git commands and concepts:

  1. 检出远程分支到本地:

    git checkout -b <本地分支名> origin/<远程分支名>
    
  2. 查看分支列表:

    git branch
    
  3. 查看远程分支列表:

    git branch -r
    
  4. 查看所有分支列表(包括远程分支):

    git branch -a
    
  5. 查看特定提交的详细信息:

    git show <提交哈希值>
    
  6. 创建并切换到新分支:

    git checkout -b <新分支名>
    
  7. 修改最后一次提交的信息:

    git commit --amend
    
  8. 丢弃本地所有修改,回到上一次提交的状态:

    git reset --hard HEAD
    
  9. 从远程仓库获取最新的分支列表:

    git remote update origin --prune
    
  10. 拉取指定远程分支到本地:

    git pull <远程仓库名> <远程分支名>:<本地分支名>
    
  11. 强制推送本地分支到远程仓库:

    git push -f <远程仓库名> <本地分支名>
    

32.git whatchanged # 显示提交历史对应的文件修改记录

  1. 解决合并冲突:
    当合并分支时遇到冲突,需要手动解决冲突并提交修改。

  2. 忽略文件:
    在仓库根目录创建一个名为 .gitignore 的文件,列出需要忽略的文件或文件夹的模式。

  3. 组织提交为多个相关的修改:
    使用 git add 命令逐个添加相关的修改到暂存区,然后使用 git commit 提交它们。

  4. 使用 Git 标签管理版本:
    可以使用标签来标记重要的提交,如发布版本。有两种类型的标签:轻量标签和附注标签。

  5. 使用 Git 分支管理项目开发:
    分支使得在项目中并行进行开发变得容易,可以创建不同的分支用于不同的功能、修复等,然后将它们合并到主分支。

  6. 使用 Git Stash 保存和恢复工作区状态:
    git stash 命令用于保存工作区的临时状态,可以在之后恢复这些修改。

这些是更多的 Git 指令和概念,希望对你有所帮助!如有需要,可以进一步探索 Git 的功能和选项,以满足你的具体需求。

Certainly! Here are some additional Git commands and concepts:

  1. 使用 Git Rebase 重新应用提交:
    git rebase 命令允许将一系列提交从一个分支移动到另一个分支,并可以用于合并提交、修改提交消息等。

  2. 使用 Git Cherry-pick 选择性地应用提交:
    git cherry-pick 命令允许选择性地将单个提交应用到当前分支,可以用于合并特定的提交而不是整个分支。

  3. 使用 Git Reset 撤销提交:
    git reset 命令可以撤销提交并移动分支指针到指定的提交,有三种模式:--soft--mixed--hard,它们分别影响工作区、暂存区和版本库。

  4. 使用 Git Reflog 查看引用日志:
    git reflog 命令显示引用(分支、标签等)的日志,可以用于查看分支切换、提交和重置等操作的历史记录。

  5. 使用 Git Fetch 获取远程分支更新:
    git fetch 命令从远程仓库获取最新的分支和提交信息,但不会自动合并或修改当前分支。

  6. 使用 Git Config 配置用户信息:
    git config 命令用于配置 Git 的用户信息,如用户名、邮箱等,可以使用 --global 选项来设置全局配置。

  7. 使用 Git Merge --no-ff 非快进式合并:
    git merge --no-ff 命令执行非快进式合并,即在合并分支时创建一个新的提交记录,保留分支的历史信息。

  8. 使用 Git Bisect 查找引入 bug 的提交:
    git bisect 命令用于二分查找引入 bug 的提交,通过不断切换到代码库中的不同提交来确定引入问题的提交。

  9. 使用 Git Submodules 管理子模块:
    Git 子模块允许将一个 Git 仓库作为另一个仓库的子目录进行管理,这对于管理依赖关系或共享代码非常有用。

  10. 使用 Git Hooks 自定义操作:
    Git Hooks 是在特定事件发生时自动触发的脚本,可以用于自定义操作,如在提交前运行测试、执行自动化脚本等。

  11. 使用 Git Workflows 管理开发流程:
    Git Workflows 是一种组织和管理代码开发的方法,包括集中式工作流、分支工作流、Forking 工作流等。

这些是更多的 Git 指令和概念,可以帮助你更好地使用 Git 进行版本控制和代码管理。Git 是一个功能强大且灵活的工具,可以根据项目的需求进行定制和配置。希望这些信息对你有所帮助!

Certainly! Here are a few more Git commands and concepts:

  1. 使用 Git Revert 撤销提交:
    ``git revert` 命令用于创建一个新的提交来撤销先前的提交,它会创建一个反向的提交来撤销指定提交的更改。

  2. 使用 Git Stash 应用和管理临时存储:
    ``git stash` 命令不仅可以保存工作区的临时状态,还可以应用和管理这些临时存储,如应用特定的存储、查看存储列表等。

  3. 使用 Git Interactive Add 交互式添加文件:
    ``git add -i` 命令允许以交互方式添加文件到暂存区,可以选择部分文件进行添加,非常适用于复杂的修改场景。

  4. 使用 Git Blame 追溯代码修改历史:
    ``git blame` 命令显示每一行代码是在哪个提交中被修改的,可以帮助定位代码的修改来源和作者。

  5. 使用 Git Archive 导出仓库快照:
    ``git archive` 命令用于将仓库的指定版本导出为一个压缩文件,方便共享和发布仓库的快照。

  6. 使用 Git Ignore 文件模式匹配规则:
    ``.gitignore` 文件中可以使用模式匹配规则来指定哪些文件或文件夹应该被忽略,如通配符、目录匹配等。

  7. 使用 Git Rebase -i 进行交互式变基:
    ``git rebase -i` 命令允许交互式调整提交历史,可以合并、拆分、编辑提交信息等,用于整理提交历史。

  8. 使用 Git Cherry-pick -n 选择性地应用提交:
    ``git cherry-pick -n命令与git cherry-pick` 类似,但不会自动提交应用的提交,允许进一步修改和调整。

  9. 使用 Git LFS 管理大型文件:
    Git LFS(Large File Storage)是一个扩展,用于管理大型文件,可以将大文件存储在 Git 仓库之外,以减少仓库大小。

  10. 使用 Git Worktree 管理多个工作树:
    ``git worktree` 命令允许在同一仓库中创建和管理多个工作树,方便同时处理多个分支或提交。

这些是一些进阶的 Git 指令和概念,可以帮助你更深入地使用 Git,并提供更多灵活性和功能。Git 是一个强大的工具,掌握这些指令和概念将使你更加熟练地进行版本控制和协作开发。希望这些信息对你有所帮助!

Certainly! Here are a few more Git commands and concepts:

  1. 使用 Git Rebase --onto 进行精确的变基操作:
    ``git rebase --onto` 命令允许将一系列提交从一个分支移动到另一个分支上的精确位置,可以指定起始和结束提交。

  2. 使用 Git Rerere 自动解决冲突:
    ``git rerere`(Reuse Recorded Resolution)是 Git 的一个特性,它可以自动记录和重用解决冲突的方法,减少重复解决相同冲突的工作。

  3. 使用 Git Subtree 管理嵌套仓库:
    Git Subtree 允许将一个仓库的子目录作为另一个独立仓库的子目录进行管理,方便同时管理两个相关但独立的代码库。

  4. 使用 Git Workflows 进行持续集成和部署:
    Git Workflows 可以与持续集成和部署工具集成,实现自动化的构建、测试和部署过程,提高开发流程的效率和稳定性。

  5. 使用 Git Hooks 定制工作流程:
    Git Hooks 允许在特定的 Git 事件发生时触发自定义脚本,可以用于自动化测试、代码风格检查、文档生成等各种定制化操作。

  6. 使用 Git Bisect 自动化二分查找:
    ``git bisect` 命令可以与测试脚本结合使用,自动化地进行二分查找,快速定位引入问题的提交。

  7. 使用 Git Rebase -i 进行交互式变基操作:
    ``git rebase -i` 命令的交互式模式允许对提交进行更高级的操作,如合并提交、编辑提交消息、重新排序提交等。

  8. 使用 Git Archive 导出仓库快照并应用压缩:
    ``git archive` 命令可以将仓库的指定版本导出为一个压缩文件,并可以选择性地应用压缩算法。

  9. 使用 Git Reflog 恢复误删的分支或提交:
    ``git reflog` 命令可以查看引用的操作历史,可以用于恢复误删的分支或提交,即使没有直接引用。

这些是一些更高级的 Git 指令和概念,可以帮助你更深入地使用 Git,并在复杂的开发场景中发挥更大的作用。继续学习和探索 Git 的功能和选项将使你成为更具经验和熟练的版本控制专家。希望这些信息对你有所帮助!

Certainly! Here are a few more Git commands and concepts:

  1. 使用 Git Workflows 进行团队协作:
    Git Workflows 可以帮助团队规范代码开发和协作,如使用分支进行特性开发、使用 Pull Request 进行代码审查等。

  2. 使用 Git Hooks 进行自动化测试和部署:
    Git Hooks 可以与测试工具和部署工具集成,实现代码提交时的自动化测试和部署流程,提高开发效率和质量。

  3. 使用 Git Rebase 进行交互式历史编辑:
    ```git rebase -i` 命令的交互式模式允许对提交历史进行编辑,如修改提交消息、合并提交、删除提交等。

  4. 使用 Git Cherrypick -x 保留原始提交信息:
    ```git cherry-pick -x` 命令可以保留原始提交的信息,将其添加到新的提交中,方便跟踪代码的来源和历史。

  5. 使用 Git Bisect run 自动化测试错误定位:
    ```git bisect run` 命令可以与测试脚本结合使用,自动化地进行二分查找并运行测试,快速定位引入问题的提交。

  6. 使用 Git Submodules 更新子模块:
    ```git submodule update` 命令用于更新子模块,将其切换到指定的提交或分支,确保使用的是最新的子模块代码。

  7. 使用 Git Rebase --autosquash 自动整理提交历史:
    ```git rebase --autosquash` 命令可以自动整理提交历史,合并和排序提交,提升提交历史的清晰度和可读性。

  8. 使用 Git Stash Pop 应用并删除临时存储:
    ```git stash pop` 命令可以应用最近的临时存储,并将其从存储列表中删除,方便在工作区恢复临时保存的更改。

这些是一些进一步的 Git 指令和概念,涵盖了团队协作、自动化测试、历史编辑等方面的应用。继续学习和探索 Git 的功能和最佳实践将使你更加熟练地使用 Git,并提高你的开发效率和代码管理能力。希望这些信息对你有所帮助!

Certainly! Here are a few more Git commands and concepts:

  1. 使用 Git Workflows 进行版本发布:
    Git Workflows 可以帮助管理版本发布的流程,如使用标签进行版本标识、使用分支进行发布准备等。

  2. 使用 Git Submodules 管理外部依赖:
    Git Submodules 允许将外部依赖以子模块的形式嵌入到仓库中,方便管理和更新外部代码库。

  3. 使用 Git Notes 添加附加信息:
    Git Notes 允许向提交或对象添加附加信息,如代码审查意见、问题追踪链接等,以帮助团队成员进行协作和沟通。

  4. 使用 Git Rerere-train 训练解决冲突:
    ````git rerere-train` 命令可以训练 Git Rerere 功能,以记录和重用解决冲突的方法,减少重复解决相同冲突的工作。

  5. 使用 Git Reflog 恢复误操作:
    ````git reflog` 命令可以恢复误操作,如误删分支、误修改提交等,通过查看引用操作历史找回丢失的提交或分支。

  6. 使用 Git Worktree 删除工作树:
    ````git worktree` 命令可以删除不再需要的工作树,清理磁盘空间和管理多个工作树的同时性。

  7. 使用 Git Stash Branch 创建临时分支:
    ````git stash branch` 命令可以在应用临时存储的同时创建一个新的分支,方便在分支上继续开发。

  8. 使用 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。
请注意,增加和删除标签都是本地操作,如果要将本地标签推送到远程仓库或删除远程仓库中的标签,需要使用相应的推送命令。