借此机会写篇博客汇总一下自己去公司实习之后遇到的一些常见关于Git的操作。
Git基本认识
Git把数据看作是对小型文件系统的一组快照,每次提交更新,或在Git中保存项目状态时,Git主要对当时的全部文件制作一个快照并保存这个快照的索引。同时,为了提高效率,如果文件没有被修改,Git不再重新存储文件,而是只保留一个链接指向之前存储的文件。Git对待文件的方式更像是一个快照流。
Git项目中三个工作区域的概念:Git仓库(.git directory)、工作目录(Working Directory)及暂存区域(Staging Area)。
Git工作的主要流程:
- 在工作目录中修改文件。
- 暂存文件,将文件的快照放入暂存区域。
- 提交更新,找到暂存区域的文件,将快照永久性存储到Git仓库目录。
Git常见操作
Git设置用户名、密码
Git设置全局用户名、密码操作:
- git config --global user.name [username]
- git config --global user.email [email]
设置的时候,需要将上述内容中的[username]和[email]替换成自己的用户名和密码即可。
设置好之后通过Git保存用户名、邮箱:
- 使用命令直接修改config文件即可保存。
echo "[credential]" >> .git/config
echo " helper = store" >> .git/config - 直接修改.git/config文件
ubuntu@VM-7-212-ubuntu:~/kernel-code/kernel-netfilter-sample-code$ vim .git/config
##修改成如下
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = https://github.com/Miss-you/kernel-netfilter-sample-code.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
##主要是后面这两行,如果不想保存,则删除即可
[credential]
helper = store##保存
设置并保存后可以通过Git config --list查看已设配置,显示如下则操作成功。
GIt提交代码
- git branch : 查看当前的所有分支,并且确定当前位于哪个分支上。
- git status:显示工作目录和当前暂存区状态。
- git checkout 分支名:切换已经存在的分支。
- git checkout -b 分支名:不存在的分支,创建并切换到新分支。
- git add .:将当前目录的更改添加到暂存区。
- git add -A:将工作目录中的所有更改添加到暂存区,无论这些更改是否被git跟踪。
- git commit -m "test":将暂存区的更改创建一个新的提交(commit)保存到本地仓库。
- git push origin 分支名(mastr/ test_01):将本地仓库中的分支推送到远程Git仓库中。
- git push -u origin 分支名:-u的作用是设置上游(远程分支)跟踪当前的本地分支。第一次推送一个新分支时,使用-u选项可以指定远程分支作为本地分支的上游分支。
- git push -f origin 分支名:强制将分支分支推送到远程。如果当前分支所在的版本号commit ID不是最新提交的版本号,会抛弃此版本之后的提交记录。
- git pull origin master:拉取远程分支最新代码到本地。
Git合并分支
企业开发中上线前都需要拉取最新master分支,并将其合并到对应的上线分支。
- 切换到master分支【git checkout master】
- 拉取远程分支的最新分支【git pull origin master】
- 切换到对应的上线分支,如:feat/print_0523【git chekout feat/print_0523】
- 将master分支合并到当前分支【git merge master】此命令会将当前master分支代码合并到当前所在分支。
- 解决合并分支冲突。
- 推送合并后的分支到远端。
Git进行版本回退
恢复到一个旧版本、并且旧版本后的代码都抛弃:
回退原理:git reset --hard 命令会将HEAD指针、当前分支指针和索引区都移动到指定的commit ID,从而重置工作区为该版本。
- 查看版本号:【git log】查找历史提交版本号。找到需要回滚的目标版本号。
- 使用【git reset --hard 版本号】将版本回退。此命令会将HEAD指针、当前分支指针和索引区都指向指定的commit ID,并重置工作区为该版本。
- 推送修改【git push -f 】,此时不能使用 git push 推送,因为我们本地库HEAD指向的版本比远程库的要旧。使用git push -f 强制推送上去。
Git抛弃本地分支拉取仓库对应分支的最新代码
Git什么需要需要抛弃本地分支,拉取远程最新分支,当误操作将本地某个分支更改之后,并且更改的部分涉及面比较大。此时需要舍弃本地仓库中对应分支,直接拉取远程最新分支。
- 使用 git branch 检查当前是否处于目标分支。
- 如果处于目标分支,直接执行后续操作,如果没有处于目标分支,使用git checkout 分支名 切换到对应目标分支。
- git status :检查本地是否有未提交的代码。
- git stash:如果有未提交的代码,使用此命令将其暂存起来。git commit 也可以。
- git fetch origin master:获取最新的远程master分支代码。
- git reset --hard origin/master:重置本地分支到远程master分支的状态。
- 如果前面的步骤中执行了git stash将本地未提交的分支暂存,此时需要使用git stash apply将更改应用到master分支。
如何将本地已有代码推送至git仓库
在电脑已经安装了git工具的前提下,按照下面步骤执行。
- 在github建立仓库,赋值仓库地址:GitHub - Wwt15537588047/learn_netty
- 在本地建立项目文件,并写入README.md文件:echo "Learn_netty" >> README.md
- 初始化本地仓库:git init
- 将当前分支代码添加暂存区中:git add .
- 将暂存区中的内容新建一个commit 保存到本地仓库:git commit -m "feat : first code"
- 通过IDEA添加远程仓库地址: git remote add origin “步骤一仓库地址”
- 推送代码到远程仓库:git push -u origin master
.gitignore文件的使用
.gitignore用于忽略某些文件,从而使得其不被提交到远程仓库:
如果在提交代码的时候使用了git add -A此时被.gitignore跟踪的代码会失效。想要.gitignore生效,一般需要配合git add . 命令使用。
如果已经使用了git add -A此时如何处理:
git rm -r --cached . #清除缓存
git add . #重新trace file
git commit -m "update .gitignore" #提交和注释
git push origin master #可选,如果需要同步到remote上的话
GIt连接超时问题的解决
最近在学习Git过程中总是出现本地IDEA写完代码推送至远程仓库时显示无法推送,连接失败:连接超时Recv failure: Connection was reset。
解决方案:在Git中设置网络代理。
1. 在windows中打开网络设置查看网络代理(查看代理地址端口号):
2. 在IDEA终端配置网络代理:
git config --global http.proxy http://127.0.0.1:33210
3. 查看配置是否成功:
git config --global -l
查看代理是否配置成功:
配置成功后,再次推送代代码即可成功。