git学习笔记(本地仓库与github)

几个区域的区别,及git工作流程
在这里插入图片描述

参考:廖雪峰的官方网站-git,这里面写得非常清楚,咱们就不要再造轮子了,现在把我常用的几个功能写一下,以防忘记。
此为Windows下的git。



1. 安装

从https://git-for-windows.github.io下载,然后正常安装即可。

2. 创建账号

安装完成后,找到git bash打开;
输入命令

$ git config --global user.name "Your Name"
$ git config --global user.email email@example.com

完成账号创建。

2.1 设置当前仓库的用户名和邮箱

git config user.name "Your Username"
git config user.email "your-email@example.com"

有时候开发需要连接不同的git,账号可能会不同,可以单独设置当前仓库的用户名和密码。

3. 创建本地版本库

打开git bash,通过命令进入需要创建版本库的文件夹,输入命令:

git init

完成版本库的创建
这里写图片描述

4. 添加文件

在git bash中通过git add命令将文件夹内文件添加至版本库,add命令有很多参数,具体可在网上找到,以下命令可将所有文件添加到版本库:

git add .

5. 提交

在git bash中通过git commit命令将add的文件提交到版本库,完成版本更新。命令如下:

git commit -m "create repo"

引号内为本次commit标记。

提交后修改commit描述:

git commit --amend

6. 本地库同步至github

在完成了本地库的创建后,可将本地库同步至github。

6. 1 本地生成ssh key

在git bash中输入:

ssh-keygen -t rsa -C "email@example.com"

会提示生成的ssh key,一路回车键
这里写图片描述

6. 2 将ssh key添加到github

key中填生成的id_rsa.pub文件内容,生成文件的目录在上图中… save the key (路径)
这里写图片描述

6. 3 github创建版本库

填写完名字后记住:不要勾选 “Initialize this repository with a README”,勾选了其实也没事,就是麻烦一些,网上可以找到解决方案。

6. 4 本地库关联github仓库

创建完github库后,将github仓库地址复制下来,就是那个
https://github.com:xxxxx/ccc.git
通过git bash进入需要同步的本地仓库,在命令行中输入:

git remote add origin https://github.com:xxxxx/ccc.git

完成关联

6. 5 本地库同步至github

git push -u origin master

第一次同步需要加“-u”,后面就不需要了。
详细如下:
这里写图片描述

7 从远程库克隆、获取、上传

克隆

git clone git@github.com:xxxxx/ccc.git

从关联的远程仓库获取到本地

git pull origin master     

从本地上传到关联的远程仓库

# 本地master传到远程的origin:master分支
git push origin master
# 本地master传到远程的orgin:develop分支
git push origin master:develop

比较本地与远程仓库的区别

git fetch origin
git diff origin/master

8 忽略文件和路径 .gitignore、不再跟踪

https://github.com/github/gitignore上有各种项目的忽略文件模板。

# 忽略指定的文件名
bin
# 通过正则表达式忽略文件
[Bb]uild
# 忽略特定后缀文件
*.exe
# 忽略根目录文件夹
/bin/
# 忽略指定文件夹下的文件
bin/*
# 忽略指定文件夹
bin/

由于需要创建.gitignore文件,而windows上无法直接创建无文件名的文件,可以借助git bash创建,也可以使用touch创建文件。

# 打开.gitignore文件
vim .gitignore

注意:.gitignore需放在与.git文件夹同级的目录下;而非.git下

各种工程的gitignore文件参考:https://github.com/github/gitignore/

删除跟踪文件,有时候发现这个文件不需要再跟踪了:

# 只删除跟踪,不删除本地文件
git rm --cached <文件路径>
# 删除跟踪并删除本地文件
git rm <文件路径>

9 分支管理


# 创建分支b1
git checkout -b b1
# 切换到分支master
git checkout master
# 将A分支的f1文件合并到当前分支(需要再次确认,y yes,a all,n no...)
git checkout --patch A f1
# 删除本地分支
git branch -d [branch name]

在实际使用过程中遇到一个很坑爹的事情:我在A分支创建了一个文件,然后切换回master分支,发现master分支也出现了这个文件;按我的理解,在哪个分支创建的文件只属于某一分支,不应该出现在其他分支的。在网上找到了一个解释:《新建的文件没有纳入版本管理,所以会被带到切换的分支》。新建的文件是个普通文件,并不属于某一分支,所以在任何分支都能看到。所以记住:添加文件后记得立马commit一下。

10 版本回退、版本切换

# 切换到指定版本
git reset --hard 版本id
# 查看版本id
git log
# 查看版本切换日志(包含所有的版本id)
git reflog

有时候本地commit后,发现有修改的文件未加进去,不想两次commit,则可以删除前一次commit后,再次add commit:

 git reset HEAD~1 

11 查看文件列表

git ls-files

12 文件比较

几个区:

    1. 工作区,当前在编辑的内容
    1. 暂存区,git add后的区
    1. 本地版本库,git commit后的区
    1. 本地远程分支,git push、git fetch、git pull 都会经过本地远程分支区,是本地版本库和远程版本库的桥梁
    1. 远程版本库,在服务器上的版本库

12.1 工作区与暂存区的比较

# 工作区与暂存区比较
git diff 
# 简短区别
git diff --stat
# 指定文件
git diff  filepath 

12.2 工作区与本地版本库

# 工作区与HEAD ( 当前工作分支) 比较
git diff HEAD
# 指定文件
git diff HEAD filepath 
# 指定版本
git diff <commitID>
# 指定版本指定文件
git diff <commitID> filepath

# 工作区文件与branchName 分支的文件进行比较
git diff branchName filepath  

12.3 暂存区与版本库

# git diff --staged 或 --cached  filepath 暂存区与HEAD比较
git diff --cached             // 暂存区和最新版本库
git diff --cached <commitID>  // 暂存区和某版本库
git diff --cached <comitID> -- <fileName>

12.4 不同版本库

git diff <commitID> <commitID2>
git diff <commitID> <commitID2> -- <fileName>

12.5 暂存区与本地远程区

git diff origin/master

13 协作

团队协作时,通常有多个维护一个项目。每次提交前,需拉取远程仓库的修改,合并到本地后,再提交到远程仓库。

在这里插入图片描述

  • git fetch 拉取远程仓库修改记录到本地仓库
  • git merge 本地仓库合并到工作目录
  • git commit 工作目录提交到本地仓库
  • git push 本地仓库提交到远程仓库

本地和远程都修改

    1. git stash 隐藏本地修改
    1. git pull 拉取远程修改(或 git fetch + git merge)
    1. git stash pop stash@{id} 恢复隐藏的本地修改

git stash

  • 隐藏git stash save “save xxx”
  • 查看 git stash list
  • 恢复git stash pop stash@{0}

忽略对文件权限的修改

在linux上经常因为文件权限修改后,git status会爆红,忽略的方法:

#设置了忽略文件权限。
git config core.filemode false
#查看配置
cat .git/config
 
#也可以直接修改git配置文件中的filemode字段,默认为true
vi .git/config

error 常见错误

可能遇到的错误:

  1. 如何解决failed to push some refs to git,与github同步后,添加了remark文件但未同步至本地时会出现此错误。
    先输入如下命令,将数据同步到本地,再将本地数据同步到github就不会有问题了。
git pull --rebase origin master`
  1. Unlink of file ‘.git/objects/pack/pack-***.pack’ failed. Should I try again? (y/n)
    是因为文件被占用了,关闭占用即可
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值