git基础操作

直接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。

请注意,增加和删除标签都是本地操作,如果要将本地标签推送到远程仓库或删除远程仓库中的标签,需要使用相应的推送命令。

相关推荐
时差95327 分钟前
MapReduce 的 Shuffle 过程
大数据·mapreduce
kakwooi1 小时前
Hadoop---MapReduce(3)
大数据·hadoop·mapreduce
数新网络1 小时前
《深入浅出Apache Spark》系列②:Spark SQL原理精髓全解析
大数据·sql·spark
晓理紫7 小时前
使用git lfs向huggingface提交较大的数据或者权重
git
昨天今天明天好多天7 小时前
【数据仓库】
大数据
油头少年_w7 小时前
大数据导论及分布式存储HadoopHDFS入门
大数据·hadoop·hdfs
Elastic 中国社区官方博客8 小时前
释放专利力量:Patently 如何利用向量搜索和 NLP 简化协作
大数据·数据库·人工智能·elasticsearch·搜索引擎·自然语言处理
力姆泰克8 小时前
看电动缸是如何提高农机的自动化水平
大数据·运维·服务器·数据库·人工智能·自动化·1024程序员节
力姆泰克8 小时前
力姆泰克电动缸助力农业机械装备,提高农机的自动化水平
大数据·服务器·数据库·人工智能·1024程序员节
我不是程序猿儿8 小时前
【GIT】sourceTree的“当前分支“,“合并分支“与“检出分支的区别
git