配置
下载到任意盘,完成后添加环境变量: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 ""
测试删库后会不会对主分支有影响
查看主分支情况,使用 switch
或 checkout
切换到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 . 即使用密码登陆方式来验证身份已被弃用,建议使用个人访问令牌.
- 生成个人访问令牌
- 登录GitHub账户,进入个人设置页面,选择“Developer settings”>“Personal access tokens”。
- 点击“Generate new token”按钮,填写令牌名称,选择令牌的有效期和访问权限(如选择
repo
以允许访问仓库)。 - 点击“Generate token”按钮,生成令牌并保存,因为一旦离开页面将无法再次查看。
- 使用个人访问令牌
- 在提交代码时,将生成的令牌用于身份验证,代替原来的密码。
- 也可以将令牌添加到远程仓库链接中,避免每次提交代码时都需要输入令牌。
新分支关联到远程仓库
当你在使用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
- 这种方式不需要设置上游分支,但每次推送都需要手动指定分支名称。
- 1. 设置上游分支 使用以下命令来设置当前分支newbch的上游分支,关联到远程仓库origin的对应分支:
- 注意事项
- 在设置上游分支或推送代码前,确保你的本地代码是最新的,避免代码冲突。
- 如果远程仓库中还没有newbch分支,使用git push -u origin newbch命令会创建远程分支。
- 如果遇到代码冲突或其他推送失败的情况,可能需要先解决冲突或使用git pull –rebase origin newbch 命令拉取远程更新并重新基点合并。
更新本地仓库
当远程仓库文件出现了变动,在本地的仓库是暂时不会随之更新的.使用git fetch.
Git fetch是一个用于从远程仓库获取最新代码和提交信息的命令。它不会自动合并这些更新到你的当前分支,而是将它们存储在本地仓库中,以便你可以在合并之前查看和处理冲突。以下是关于git fetch
的一些关键点和常用用法:
- 基本用法
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