普鲁鲁西 | Git使用教程个人笔记
零、远程仓库准备工作
在开始前,我们需要先注册好GitHub账号。因为你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要设置:
(1) 创建SSH Key。在用户主目录下(通常在C:\Users\你的用户名.ssh),看看有没有.ssh 目录,如果有的话,看此目录下有没有 id_rsa 和 id_rsa.pub 这两个文件,如果有,直接跳到阶段一。如果没有,打开Git Bash,创建SSH。
# 在本地创建ssh key,打开终端,输入以下命令行,然后系统要求输入密码,直接按回车表示不设密码
ssh-keygen -t rsa -C "GitHub邮箱"
# 进入.ssh文件夹,ls查看内容
cd ~/.ssh
(2) 登录GitHub,打开"Settings",然后点击"SSH and GPG Keys",再点击"New SSH Key"进行SSH Key 的创建,填上任意 Title ,把 C:\Users\你的用户名.ssh / id_rsa.pub 中的内容复制到Key文本框内。
一、Git基本版本控制
1、在命令行中配置本地仓库的账号和邮箱
git config --global user.name "GitHub账号名"
git config --global user.email "GitHub邮箱"
2、初始化Git
现在,我们可以开始对项目进行版本控制。在桌面或者某文件夹右键,点击Git Bash Here(或者使用 cd 命令导航到要在终端中设置版本控制的目录),现在你可以像这样初始化 Git 存储库:
# 这将创建一个名为 .git 的新子目录(Windows下该目录为隐藏的),其中包含所有必
# 需的存储库文件(Git 存储库框架)。至此,你的项目中尚未跟踪任何内容。
git init
3、添加并提交
# 要开始对现有文件进行版本控制,你应该先跟踪这些文件并进行初始提交。要做到这
# 一点,你首先需要将文件添加到 Git 中,并将它们附加到 Git 项目中。
git add <file>
git commit -m 'first commit'
4、远程备份
# 转到 http://github.com 并创建一个存储库,然后,使用存储库的链接将其添加为本地 git 项目的来源
# 即该代码的存储位置。添加后,远程库的名字就是 origin ,这是Git默认的叫法。然后,我们就可
# 把本地库的所有内容推送到远程库上:
git remote add origin + git仓库链接(这里的"+"请省略)
5、推送到GitHub
# 将代码推送到 GitHub,成功备份代码。
git push origin master
经百度后发现是因为我们在本地新建库后,与远程仓库的内容不一致导致的。为此在向远程库推送的时候,要先进行pull,让本地新建库和远程库进行同步。
正确步骤总结如下:
# 初始化仓库
1.git init
# 添加文件到本地仓库,点的话表示所有文件都添加到仓库
2.git add . (文件name)
# 添加文件描述信
3.git commit -m “first commit”
# 链接远程仓库,创建主分
4.git remote add origin + 远程仓库地址
# 把本地仓库的变化连接到远程仓库主分支,即让本地新建的库和远程库进行同
5.git pull origin master --allow-unrelated-histories
# 把本地仓库的文件推送到远程仓库
6.git push -u origin master
二、处理文件
1、git status 命令用于确定哪些文件处于哪种状态,它使你可以查看哪些文件已提交,哪些文件尚未提交。
# 用于确定哪些文件处于哪种状态
git status
2、添加文件到Git中
git add filename
# 添加当前目录中的所有文件
git add -A
# 添加当前目录中的所有文件更改
git add .
# 选择要添加的更改(你可以 Y 或 N 完成所有更改)
git add -p
3、高级提交
# 提交暂存文件,通常用于较短的提交消息
git commit -m 'commit message'
# 添加文件并提交一次
git commit filename -m 'commit message'
# 添加文件并提交暂存文件
git commit -am 'insert commit message'
# 更改你的最新提交消息
git commit --amend 'new commit message'
# 将一系列提交合并为一个提交,你可能会用它来组织混乱的提交历史记录
git rebase -i
# 这将为你提供核心编辑器上的界面:
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
三、分支与合并
GitHub存储库的master分支应始终包含有效且稳定的代码。但是,你可能还希望备份一些当前正在处理的代码,但这些代码并不完全稳定。也许你要添加一个新功能,你正在尝试和破坏很多代码,但是你仍然希望保留备份以保存进度!
分支使你可以在不影响master分支的情况下处理代码的单独副本。首次创建分支时,将以新名称创建master分支的完整克隆。然后,你可以独立地在此新分支中修改代码,包括提交文件等。一旦你的新功能已完全集成并且代码稳定,就可以将其合并到master分支中!
1、分支
# 创建一个本地分支
git checkout -b branchname
# 在2个分支之间切换
git checkout prc/dev-wupx
git checkout master
# 将新的本地分支作为备份
git push -u origin branch_2
# 删除本地分支,这不会让你删除尚未合并的分支
git branch -d branch_2
# 删除本地分支,即使尚未合并,这也会删除该分支!
git branch -D branch_2
# Viewing all current branches for the repository, including both
# local and remote branches. Great to see if you already have a
# branch for a particular feature addition, especially on bigger
# projects
# 查看存储库的所有当前分支,包括本地和远程分支。
git branch -a
# 查看已合并到您当前分支中的所有分支,包括本地和远程。 非常适合查看所有代码的来源!
git branch -a --merged
# 查看尚未合并到当前分支中的所有分支,包括本地和远程
git branch -a --no-merged
# 查看所有本地分支
git branch
# 查看所有远程分支
git branch -r
# 将主分支重新设置为本地分支
$ git rebase origin/master
# 将分支推送到远程存储库源并对其进行跟踪
$ git push origin branchname
2、合并
很棒!现在,你已经学习了如何创建分支并开始敲代码!将新功能添加到分支中之后,你需要将其合并回master分支,以便您的master具有所有最新的代码功能。
# 首先确保你正在查看 master 分支
git checkout master
# 现在将你的分支合并到 master
git merge prc/dev-wupx
你可能必须修复分支与主服务器之间的任何代码冲突,但是 Git 将向你展示在键入该 merge 命令后如何执行所有这些操作。
四、修复错误和回溯
发生错误…它们经常在编码中发生!重要的是我们能够修复它们。
不要慌!Git 提供了你所需的一切,以防你在所推送的代码中犯错,改写某些内容或者只是想对所推送的内容进行更正。
# 切换到最新提交的代码版本
git reset HEAD
git reset HEAD -- filename # for a specific file
# 切换到最新提交之前的代码版本
git reset HEAD^ -- filename
git reset HEAD^ -- filename # for a specific file
# 切换回3或5次提交
git reset HEAD~3 -- filename
git reset HEAD~3 -- filename # for a specific file
git reset HEAD~5 -- filename
git reset HEAD~5 -- filename # for a specific file
# 切换回特定的提交,其中 0766c053 为提交 ID
git reset 0766c053 -- filename
git reset 0766c053 -- filename # for a specific file
# 先前的命令是所谓的软重置。 你的代码已重置,但是git仍会保留其他代码的副本,以备你需要时使用。
# 另一方面,--hard 标志告诉Git覆盖工作目录中的所有更改。
git reset --hard 0766c053
五、Git相关技巧
1、搜索
# 搜索目录中的字符串部分
git grep 'project'
# 在目录中搜索部分字符串,-n 打印出 git 找到匹配项的行号
git grep -n 'project'
# git grep -C <行数> 'something' 搜索带有某些上下文的字符串(某些行在我们正在寻找的字符串之前和之后)
git grep -C<number of lines> 'project'
# 搜索字符串的一部分,并在字符串之前显示行
git grep -B<number of lines> 'project'
# 搜索字符串的一部分,并在字符串之后显示行
git grep -A<number of lines> 'something'
2、看谁写了什么
# 显示带有作者姓名的文件的更改历史记录
git blame 'filename'
# 显示带有作者姓名和 git commit ID 的文件的更改历史记录
git blame 'filename' -l
3、日志
# 显示存储库中所有提交的列表 该命令显示有关提交的所有信息,例如提交ID,作者,日期和提交消息
git log
# 提交列表仅显示提交消息和更改
git log -p
# 包含您要查找的特定字符串的提交列表
git log -S 'project'
# 作者提交的清单
git log --author 'wupx'
# 显示存储库中提交列表的摘要。显示提交ID和提交消息的较短版本。
git log --oneline
# 显示昨天以来仓库中的提交列表
git log --since=yesterday
# 显示作者日志,并在提交消息中搜索特定术语
git log --grep "project" --author "wupx"
本文完结,希望对你有所帮助,一起努力变优秀!
参考资料:
CSDN:Git教程(完整)
知乎:看完这篇还不会用Git,那我就哭了!