Git

配置

下载到任意盘,完成后添加环境变量:pathto/git/bin和pathto/git.cmd

环境变量配置完成后需重启生效.

设置

初始化一个新的Git仓库

命令:git init

告诉git这个文件夹需要版本控制

初始化后可以在文件夹中看见.git的隐藏文件夹

git的所有记录都会在.git这个隐藏文件夹里,一般来说不需要去研究文件夹内的文件具体有什么作用.

初始化git后,一般会默认显示”master”.也就是我们的主分支.也就是说,初始化后,默认处于主分支内.

创建文件

使用echo创建文件.

双引号内的内容就是要写入文件的内容

尖括号后是文件名.后缀名

查看当前状态

由于git有好好多个区域,当不知道自己处于什么状态时,可以使用git status命令来查看

git status命令有一些重要的信息,当前所处分支,当前提交状态,文件状态等

git add

需要把文件提交到缓存区需要使用git add.

git add 1kun.md

当在Git中执行git add命令时,如果出现警告信息“warning: in the working copy of ‘1kun.md’, LF will be replaced by CRLF the next time Git touches it”,这通常是因为Git检测到文件中的换行符在Windows和Linux/Unix系统之间不一致。具体来说,Windows系统使用CRLF(回车加换行,\r\n)作为换行符,而Linux/Unix系统只使用LF(换行,\n)作为换行符。

出现这个警告的原因可能是你在Windows系统上工作,但文件中的换行符是LF格式,这通常发生在从Linux/Unix系统或其他跨平台项目中获取的代码。Git为了保持文件在Windows系统上的兼容性,会在提交时自动将LF转换为CRLF。

解决方法

1. 忽略警告 如果你的项目只在Windows系统上开发和维护,可以忽略这个警告。因为Git会自动在提交时转换换行符,确保文件在Windows上正确显示。

2.更改Git配置 如果你希望避免这个警告,可以更改Git的core.autocrlf配置。这可以通过运行以下命令来完成:

git config --global core.autocrlf true //这会将所有添加的文件视为文本文件,并在提交时将CRLF转换为LF,在检出时将LF转换为CRLF。

3.使用.gitattributes文件 为了更精细地控制换行符的转换,可以在项目根目录下创建一个.gitattributes文件,并在其中指定特定文件的换行符处理方式。这可以确保在不同平台上的多人协作时,文件属性保持一致。

总结 :

这个警告通常不会影响项目的正常运行,但为了保持代码的一致性和避免不必要的混淆,建议根据项目需求选择合适的解决方法。如果项目涉及跨平台开发,更改core.autocrlf配置或使用.gitattributes文件是更好的选择。

再次查看状态

再次使用git status

这个时候,可以看到系统提示文件可以进行commit提交.

提交

git commit

git commit -a -m 和 git commit -am 等效

git commit 1kun.md

提交完成后自动进入了vim编辑器.并且展示内容.vim编辑器是git的默认编辑器,也可以修改成其他编辑器打开.

文件内容都被注释了,可以把有需要的内容取消注释.修改内容后保存并退出

回到bash界面,可以看到提示有文件被修改,并显示修改的内容,这里显示添加了”versuin_1″这一小段内容.

再次查看状态

再次查看状态,就会提示说工作区已经没有东西了.

也就是说当前已经把所有文件都提交到本地的版本库了.

特殊情况:多次修改未追踪或提交

如果我们在1kun.md里面再新增一行内容,可以直接使用vim编辑器进入或使用其他方式修改内容

然后再使用git status查看状态

这时候就会提示文件被修改的状态:

然后使用git add 1kun.md ,把内容添加到暂存区

然后在添加修改一次内容,再一次查看状态

这时候就会出现两种状态:

如果要退回到unstage状态,也就是工作区的时候,这里也有提示你操作的命令,在最后一次修改内容的时候,没有进行进一步操作,因此这行内容还在工作区,也就是unstage状态,这种情况可以先进行git add来把新增内容放在缓存区里,然后用git commit进行提交.

修改内容也不需要每次都打开vim编辑器,可以通过git commit -m "添加的内容"来添加提交信息就可以.

回车确认后,会显示提交结果.

查看日志

使用git log查看日志

日志从上到下为新到旧日志.

并且每一份提交都显示了操作人的名字和邮箱

还有一串哈希数字,每串哈希都代表了不同的commit.

退出日志界面:按q即可

忽略文件

在开发中会有一些不需要提交的文件,就需要让git来忽略掉这些文件.

如果有一个文件修改了或者刚刚创建,查看状态时就会显示文件被修改未提交:

这时候就可以创建一个.gitignore文件夹来存放这些不需要提交的文件

使用touch .gitignore ,查看状态时发现需要忽略的文件还存在

这时候就要把需要用编辑器打开.gitignore文件,添加图片的名字和后缀,就表示需要忽略的文件.

这时候再查看状态,可以看见需要忽略的文件已经被忽略.

分支

创建分支

使用git branch + 分支名 创建分支

但是这个指令不会让我们马上跳转到新分支上

首先使用git branch 查看是否创建成功

切换分支

使用git checkout + 分支名 切换分支,切换到halfto3分支上(也可以使用git switch + 分支名)

使用 ls 查看当前目录下的文件,可以知道文件夹里的文件都是从master主分支那里复制过来的.

删除分支文件

删库测试,手动删除文件,然后使用 git commit -a -m "" 测试删库后会不会对主分支有影响

查看主分支情况,使用 switchcheckout 切换到master主分支,然后ls查看当前目录文件

发现主分支下只有1kun.md文件,而被忽略的文件已不存在.因为被忽略的文件不被追踪.这也是.gitignore的注意事项.

.gitignore

.gitignore 文件是 Git 版本控制系统中一个非常重要的组成部分,它用于指定哪些文件或目录应该被 Git 忽略,不进行版本控制。以下是关于 .gitignore 文件的一些核心信息:

1.作用: .gitignore 文件告诉 Git 哪些文件或目录不需要被跟踪,这对于排除临时文件、编译生成的文件、个人配置文件等非常有用,可以减少仓库的大小,提高工作效率。

2. 创建与位置: 通常情况下,.gitignore 文件应放在仓库的根目录下,它可以递归应用于整个仓库。也可以放在子目录中,此时它的作用域仅限于该目录及其子目录。

3.格式规范: .gitignore 文件中的每一行都是一个模式,用于匹配要忽略的文件或目录。 支持 glob 模式匹配,例如 * 匹配任意多个字符,? 匹配任意一个字符,[abc] 匹配括号中的任意一个字符等。 可以使用 ! 前缀来取反模式,例如 !lib.a 表示忽略所有 .a 文件,但 lib.a 除外。 可以使用 / 开头或结尾来指定目录,例如 build/ 表示忽略名为 build 的目录及其内容。

4.注意事项: 如果文件已经被 Git 跟踪,那么更改 .gitignore 文件不会立即生效,需要使用 git rm --cached 命令来取消跟踪该文件。 .gitignore 文件本身可以提交到仓库中,适用于使用仓库的所有人。

5.常见问题: 如果需要忽略的文件已经被提交,需要先从 Git 中移除这些文件的跟踪,然后更新 .gitignore 文件,并提交更改。 如果需要忽略某个特定的文件或目录,但该文件或目录的父目录已经被忽略,那么需要使用 ! 前缀来重新包含该文件或目录。

删除分支

  • 删除分支
  • git branch -d + 分支名 使用-d系统会提示使用-D来删除
  • git branch -D + 分支名 如果你非常明确要删除,使用这个

创建分支同时切换分支

git checkout -b + 分支名

合并分支内容到主分支

git merge + 分支名 :比如当前我在msater分支,要合并其他分支的内容,就是git merge temp

在temp分支上对1kun.md进行新增内容,然后合并到主分支master中,使用 git commit -a -m “version4”

现在主分支master肯定没有这一行内容,切换到master分支查看

要把分支内容合并到主分支:

git merge + 分支名

把temp分支合并到主分支

分支合并冲突

比如现在为master分支新增了一行内容,同时temp分支也新增了一行不一样的内容,此时同时提交,然后进行分支合并(git merge)就会出现冲突.,并且会提示冲突的文件,这时候,在冲突的文件按照提示把内容修改过来就可以.当然,也有一些merge的工具可以处理这样的冲突问题.

使用vim打开冲突文件,会显示冲突的内容.

HEAD是当前分支冲突文件的内容冲突位置

下面是合并过来的内容

Gitee

git remote -v

查看当前远程仓库信息:

  • 其中:
  • origin 是远程仓库名称,通常就是origin,
  • 后面的URL是该远程仓库的地址,用于fetch和push操作
  • 当进行fetch和push操作的时候,就可以使用origin来代替URL了

git push

  • git add
  • git commit
  • git push

在push的时候,第一次使用会提示登陆账户,这里使用的是gitee,因此需要使用当前仓库的gitee账户登陆,登陆完成后即可完成push.

如果使用的是github,会提示 Support for password authentication was removed on August 13 2021.Please us a personal access token instead . 即使用密码登陆方式来验证身份已被弃用,建议使用个人访问令牌.

  1. 生成个人访问令牌
    • 登录GitHub账户,进入个人设置页面,选择“Developer settings”>“Personal access tokens”。
    • 点击“Generate new token”按钮,填写令牌名称,选择令牌的有效期和访问权限(如选择repo以允许访问仓库)。
    • 点击“Generate token”按钮,生成令牌并保存,因为一旦离开页面将无法再次查看。
  2. 使用个人访问令牌
    • 在提交代码时,将生成的令牌用于身份验证,代替原来的密码。
    • 也可以将令牌添加到远程仓库链接中,避免每次提交代码时都需要输入令牌。

新分支关联到远程仓库

当你在使用Git进行代码提交时,如果遇到“The current branch newbch has no upstream branch.”这个错误提示,这通常意味着你当前所在的本地分支newbch还没有与远程仓库中的任何分支建立关联。上游分支(upstream branch)是指本地分支与之关联的远程分支,用于推送(push)和拉取(pull)操作。

  • 出现错误的原因
    • 1. 创建新分支:当你在本地上创建了一个新分支newbch,并尝试直接推送这个分支到远程仓库时,会遇到这个错误,因为新分支还没有与远程的任何分支建立关联。
    • 2. 分支切换:如果你从一个已经关联了上游分支的分支切换到newbch分支,并且newbch分支没有设置上游分支,也会出现这个错误。
  • 解决方法
    • 1. 设置上游分支 使用以下命令来设置当前分支newbch的上游分支,关联到远程仓库origin的对应分支:
      • git push --set-upstream origin newbch
      • 或者使用简写形式:git push -u origin newbch
      • 这个命令会设置本地newbch分支与远程origin/newbch分支的关联,以后就可以直接使用git push和git pull命令了。
    • 2. 显式指定远程分支 如果你不想设置上游分支,也可以在使用git push命令时显式指定远程分支:
      • git push origin newbch
      • 这种方式不需要设置上游分支,但每次推送都需要手动指定分支名称。
  • 注意事项
    • 在设置上游分支或推送代码前,确保你的本地代码是最新的,避免代码冲突。
    • 如果远程仓库中还没有newbch分支,使用git push -u origin newbch命令会创建远程分支。
    • 如果遇到代码冲突或其他推送失败的情况,可能需要先解决冲突或使用git pull –rebase origin newbch 命令拉取远程更新并重新基点合并。

更新本地仓库

当远程仓库文件出现了变动,在本地的仓库是暂时不会随之更新的.使用git fetch.

Git fetch是一个用于从远程仓库获取最新代码和提交信息的命令。它不会自动合并这些更新到你的当前分支,而是将它们存储在本地仓库中,以便你可以在合并之前查看和处理冲突。以下是关于git fetch的一些关键点和常用用法:

  1. 基本用法
    • git fetch:这个命令会从默认的远程仓库(通常是origin)获取所有分支的最新代码和提交信息。
    • git fetch origin: 从名为origin的远程仓库获取所有分支的最新代码和提交信息。
    • git fetch origin branch_name: 从远程仓库origin获取特定分支branch_name的最新代码和提交信息。

    2. 与git pull的区别

    • git fetch只是获取远程仓库的更新,不会自动合并到本地分支。
    • git pull是git fetch和git merge的组合,它会获取远程仓库的更新并立即尝试将它们合并到当前分支。
    • 使用git fetch是一个安全的更新方法,因为它允许你在合并更新之前查看和解决可能的冲突。

    3. 使用git diff 来查看版本区别

    使用git diff 查看远程仓库和本地仓库的区别: git diff origin/master

    4.使用 git pull 更新本地仓库

    用于从远程仓库获取最新的提交记录,并将其合并到当前本地分支中。

    git pull 其实就是 git fetch 和 git merge 的简写,先从远程仓库获取最新的提交记录,然后将这些提交记录合并到你当前的分支中。

    • git pull [远程仓库名] [分支名]
    • [远程仓库名] 通常是 origin,是默认的远程仓库名。
    • [分支名] 是你要合并的远程分支,比如 main 或 master
    • 更新操作:
      • git pull
      • git pull origin
    • 将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并:
      • git pull origin master:brantest
    • 如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
      • git pull origin master

    No Comments

    Send Comment Edit Comment

    
    				
    |´・ω・)ノ
    ヾ(≧∇≦*)ゝ
    (☆ω☆)
    (╯‵□′)╯︵┴─┴
     ̄﹃ ̄
    (/ω\)
    ∠( ᐛ 」∠)_
    (๑•̀ㅁ•́ฅ)
    →_→
    ୧(๑•̀⌄•́๑)૭
    ٩(ˊᗜˋ*)و
    (ノ°ο°)ノ
    (´இ皿இ`)
    ⌇●﹏●⌇
    (ฅ´ω`ฅ)
    (╯°A°)╯︵○○○
    φ( ̄∇ ̄o)
    ヾ(´・ ・`。)ノ"
    ( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
    (ó﹏ò。)
    Σ(っ °Д °;)っ
    ( ,,´・ω・)ノ"(´っω・`。)
    ╮(╯▽╰)╭
    o(*////▽////*)q
    >﹏<
    ( ๑´•ω•) "(ㆆᴗㆆ)
    😂
    😀
    😅
    😊
    🙂
    🙃
    😌
    😍
    😘
    😜
    😝
    😏
    😒
    🙄
    😳
    😡
    😔
    😫
    😱
    😭
    💩
    👻
    🙌
    🖕
    👍
    👫
    👬
    👭
    🌚
    🌝
    🙈
    💊
    😶
    🙏
    🍦
    🍉
    😣
    Source: github.com/k4yt3x/flowerhd
    颜文字
    Emoji
    小恐龙
    花!
    Previous
    Next