Git的基本操作

Git的基本操作


配置


  • 常用:
    • name
    • email
      表示是追溯到具体那个用户对代码的修改
bash 复制代码
    # 配置全局用户名
    git config --global user.name "Your Name"       
    # 配置全局用户邮箱
    git config --global user.email       "email@example.com"
    # 配置全局颜色
    git config --global color.ui true       
    # 配置全局编辑器
    git config --global core.editor vim     
    # 配置全局合并工具
    git config --global merge.tool vimdiff      
    # 配置全局合并工具提示
    git config --global mergetool.prompt false      
    # 配置全局缓存凭证
    git config --global credential.helper cache     
    # 配置全局缓存时间
    git config --global credential.helper 'cache --timeout=3600'        
    # 配置全局推送默认方式
    git config --global push.default simple     

使用Git:


  • 查看当前仓库状态:
    * git status
  • 初始化仓库:
    * git init

文件状态

git中的文件有两种状态: 未跟踪已跟踪

--> 文件状态:

  • 未跟踪:表示文件未被git所管理,没有加入到git仓库中。
  • 已跟踪:表示文件已被git所管理,并且已经加入到git仓库中。
    未跟踪指文件没有被git所管理,已跟踪指文件已被
    git管理。已跟踪的文件又有三种状态: 未修改、修改和暂存

暂存,表示文件修改已经保存,但是尚未提交到git仓库。

未修改,表示磁盘中的文件和git仓库中文件相同,没有修改。

已修改,表示磁盘中文件已被修改,和git仓库中文件不同。

可以通过git status 来查看文件的状态

基本文件操作

  • 添加文件到git仓库:
    • git add <filename>
    • git add .
  • 提交文件到git仓库:
    • git commit -m "message"
  • 查看文件修改记录:
    • git log

刚刚添加到文件夹中的文件,是未跟踪的状态

未跟踪-->暂存 :将文件切换到在暂存状态:git add <filename> (只是暂存并未入库到git仓库中)
git add *:将所有已修改(未跟踪)的文件暂存

暂存-->未修改 :将文件切换到在未修改状态:git commit -m "注释" (将暂存文件入库)
git commit -a -m "注释":将所有已修改(未跟踪)的文件暂存并提交到git仓库中

未修改-->已修改 :直接修改文件内容会自动触发

  • 总结步骤:每当有文件修改后,需要提交仓库时:
  1. 先将文件添加到暂存区:git add <filename>
  2. 再将文件提交到仓库:git commit -m "注释"

查看刚刚一系列操作文件的修改日志:git log

常用文件命令

  1. 重置文件
bash 复制代码
    # 恢复文件至最近一次的提交
git restore <filename>

    # 取消暂存状态
git restore --staged <filename>
  1. 删除文件
bash 复制代码
    # 删除文件
git rm <filename>
    #强制删除
git rm <filename> -f    
  1. 移动文件
bash 复制代码
    # 移动文件
git mv <filename> <newfilename>

分支

git在存文件时,每一次代码代码的提交都会创建一个与之对应的节点,git就是通过一个一个的节点来记录代码的状态的,类似链表,每一个分支像指针一样,指向一个分支节点,并且可以访问到其之后的节点。节点会构成一个树状结构,树状结构就意味着这个树会存在分支,默认情况下仓库只有一个分支,命名为master,在使用gi时,可以创建多个分支,分支与分支之间相互独立,在一个分支上修改代码不会影响其他的分支。

bash 复制代码
    # 创建分支
git branch <branch name>
    # 切换分支
git switch <branch name>
    # 创建并切换分支
git switch -c <branch name>
    # 删除分支
git branch -d <branch name>
    # 查看分支
git branch
    # 合并分支
git merge <branch name>

c1 表示第一次提交,c2 是第二次,...每次提交都会在 "头节点"插入新的节点。

从c1开始,默认主分支master下创建一个新节点,又提交的三次到到c4节点,然后在master 节点创建新的分支update ,在update分支下,又提交两次到c6节点,重新回到master分支,再次创建新分支bug1,在bug1分支下又提交了两次,产生了两个新节点c7,c8

在开发过程中,我们经常需要创建分支,然后进行开发,开发完成后,再将分支合并到主分支中,这样就可以保证主分支的代码是最新的。

远程仓库(remote)


远程仓库是用来存储代码的,可以理解成是一个远程的版本库,可以用来存储代码,可以用来进行代码的版本控制,可以用来进行代码的备份,可以用来进行代码的共享。

将本地库上传git:

bash 复制代码
git remote add origin https://github.com/.....
# git remote add <remote name> <url>
git branch -M main
# 修改分支的名字的为main
git push -u origin main
# git push 将代码上传服务器上

将本地库上传gitee:

bash 复制代码
git remote add gitee https://gitee.com/ymhold/vue-course.git
git push -u gitee main

远程库的常用操作的命令

bash 复制代码
git remote                              # 列出当前的关联的远程库
git remote add <远程库名> <ur1>         # 关联远程仓库
git remote remove <远程库名>            # 除远程库
git push -u <远程库名> <本地分支名>          # 向远程库推送代码,并和当前分支关联
git push <远程库> <本地分支>:<远程分支> #将本地仓库分支推送到远程仓库的指定分支
git clone <ur1>                        # 从远程库下载代码


git push                               # 如果本地的版本低于远程库,push认是推不上去
git fetch                               # 要想推送成功,必须先确保本地库和远程库的版本一致,fetch它会从远程仓库下敕所有代码,
                                        #但是它不会将代码和当前分支自动合并,使用fetch拉取代码后,必须要手动对代码进行合并
git pull                               # 从服务器上拉取代码并自动合并

注意: 推送代码之前,一定要先从远程库中拉取最新的代码,为保证版本一致

tag标签


  • 当头指计没有执行某个分支的头部,这种状态我们称为分离头指(HEAD detached) ,分离头指针的状态下也可以操作操作代码,但是这些操作不会出现
    在任何的分支上,所以注意不要再分离头指针的状态下来操作仓库。
    如果非得要回到后边的节点对代码进行操作,则可以选择创建分支后再操作
bash 复制代码
git switch -c<分支名><提交id>
  • 可以为提交记录设置标签,设置标签以后,可以通过标签快速的识别出不同的开发节点:
    标签是用来标记代码版本,可以理解成是一个代码的快照,可以用来标记代码的版本,可以用来进行代码的版本控制,可以用来进行代码的备份,可以用来进行代码的共享。
bash 复制代码
git tag <tag name>                    # 给当前节点创建标签
git tag                                # 查看标签
git tag -a <tag name> -m "message"       # 创建带有说明的标签
git show <tag name>                      # 查看标签信息                      
git tag <tag name> <节点ID>             #为某一节点创建标签

git push 远程仓库 标签名  # 推送标签到远程仓库
git push 远程仓库 --tags  # 推送所有标签到远程仓库
git tag -d 标签名                # 删除本地标签
git push 远程仓库 --delete 标签名  # 删除远程标签

.gitignore (忽略监视)

.gitignore文件用来忽略不需要的文件,可以用来忽略一些不需要该文件夹里用git来监视管理的文件或文件夹,例如node_modules文件夹,或者一些配置文件,或者一些临时文件等等。
.gitignore文件中的每一行都表示一个需要忽略的文件或文件夹

bash 复制代码
# 忽略所有.a文件
*.a
# 但跟踪所有的lib.a,即便你在前面忽略了
!lib.a
# 只忽略当前目录下的TODO文件,而不忽略subdir/TODO
/TODO
# 忽略build/目录下的所有文件
build/
# 忽略doc/notes.txt,但不忽略doc/server/arch.txt
doc/*.txt
相关推荐
l and1 小时前
Git 行尾换行符,导致无法进入游戏
android·git
风行男孩1 小时前
Git 中忽略文件的版本跟踪(初级方法及高级方法)
git
ziyu_jia1 小时前
【日常开发】Git Stash使用技巧
git·git stash
catmes8 小时前
Git开发常用命令总结
git
是姜姜啊!13 小时前
git命令
git
云只上17 小时前
git更改当前项目的远程仓库,保留原始仓库提交记录提交到新仓库
git
__zhangheng18 小时前
Mac 查询IP配置,网络代理
linux·服务器·网络·git
乐闻x18 小时前
VSCode 插件开发实战(十二):如何集成Git操作能力
ide·git·vscode
旺旺大力包21 小时前
【 Git 】git 的安装和使用
前端·笔记·git
Domain-zhuo1 天前
Git和SVN有什么区别?
前端·javascript·vue.js·git·svn·webpack·node.js