笔记_Git¶
参考文献¶
-
CSDN快速推送本地到github
-
https://github.com/MalikCheng/learngit/blob/master/git_learnmichaelliao_blog.md
-
可能确定是最详细,简洁的Git手册,来自一篇微信公众号
简要摘记¶
git init # 只需一次
git add . # 本地暂存
git status #
git commit -m "annotation"
git remote add origin https://github.com/jimmmy0/repository1.git
git remote add origin git@new.github.com:IUSL-westlake/IUSL-westlake.github.io.git
git pull origin master
git push -u origin master
-
问题
Please make sure you have the correct access right and the repository exists
bash git config user.name "IUSL-westlake" git config user.email "lijianan@westlake.edu.cn"
-
注意
Support for password authentication was removed on August 13
意思是你原先的密码凭证从 2021 年 8 月 13 日开始就不能用了,必须使用个人访问令牌(personal access token),就是把你的密码替换成 token。解决方法就是添加如下口令即可bash git remote set-url origin https://<your_token>@github.com/<USERNAME>/<REPO>.git
多个github 账号¶
先参考这个,最终解决了我的问题 https://www.jianshu.com/p/3fc93c16ad2d
https://www.jianshu.com/p/89cb26e5c3e8
https://www.jianshu.com/p/a3b4f61d4747
思路
ssh 方式链接到 Github,需要唯一的公钥,如果想同一台电脑绑定两个Github 帐号,需要两个条件:
- 能够生成两对 私钥/公钥
- push 时,可以区分两个账户,推送到相应的仓库
解决方案:
- 生成 私钥/公钥 时,密钥文件命名避免重复
- 设置不同 Host 对应同一 HostName 但密钥不同
-
取消 git 全局
用户名/邮箱
设置,为每个仓库独立设置 用户名/邮箱 -
取消全局 用户名/邮箱 配置
```bash
取消全局 用户名/邮箱 配置¶
git config –-global –-unset user.name git config –-global –-unset user.email
单独设置每个repo 用户名/邮箱¶
git config user.email “xxxx@xx.com” git config user.name “xxxx” ```
-
到达新的repo, 设置新的用户名和email
bash cd iusl/build git config user.name "IUSL-westlake" git config user.email "lijianan@westlake.edu.cn"
-
生成新的ssh keys. 输入的时候尽量输全地址
bash ssh-keygen -t rsa -C "lijianan@westlake.edu.cn" /c/Users/Administrator/.ssh/id_rsa_new # 问的时候输入这个,注意原先已经有id_rsa
-
添加ssh key
bash ssh-add /c/Users/Administrator/.ssh/id_rsa_new
如果出现
Could not open a connection to your authentication agent
的错误,就试着用以下命令:bash ssh-agent bash ssh-add /c/Users/Administrator/.ssh/id_rsa_new
-
配置 .ssh/config文件
bash touch config
然后输入
```bash Host github.com #default
HostName github.com User git IdentityFile ~/.ssh/id_rsaHost new.github.com # two
HostName github.com User git IdentityFile ~/.ssh/id_rsa_new ``` -
将生成的
id_rsa.pub
,id_rsa_new.pub
内容copy 到对应的 repo -
添加新的SSH keys到新github账号的SSH设置中
-
测试一下是否可以
bash ssh -T git@new.github.com ssh -T git@github.com
Hi IEIT! You've successfully authenticated, but GitHub does not provide shell access. 出现这句,表示链接成功
-
命令行进入项目目录,重建 origin (whatever 为相应项目地址)
bash git remote rm origin git remote add origin git@new.github.com:whatever
-
成功,可以 push 测试一下
bash git push origin master
推送步骤¶
- 在Github上新建一个仓库(repository)
- 在本地创建项目文件夹,也即是本地仓库。我们的目标是要将本地仓库和远程仓库同步起来
- cd 到本地仓库文件夹内,初始化本地仓库
git init
,执行成功后,会在你的目录下生成一个.git的隐藏文件 git add .
表示把该目录下的所有文件加入到本地暂存区中。执行成功后不会有任何提示git status
该命令会把你本地工作区和暂存区的版本进行比较,查看当前的状态git commit -m "这里是注释"
该命令会把本地暂存区中的文件提交到本地历史区,注意只有在本地历史区中的内容才能提交到github。执行该命令后,我们所有的文件都只是在本地。和github没有任何关系。git remote add origin https://github.com/jimmmy0/repository1.git
该命令是把本地历史区中的文件添加到github服务器的暂存区中。这一步是本地和远程服务器建立联系的一步。执行成功后不会显示任何结果git pull origin master
该命令是先把github上的文件拉下来,注意在每次提交之前要首先进行pull,这是防止冲突。执行以后若出现问题,其实不用管,输入“:wq”回车键退出即可git pull origin branchname --allow-unrelated-histories
git push -u origin master
向github提交,执行完成后,github上的repository就有和你本地一样的代码文件了。- 到github下查看代码是否上传成功
常用命令¶
分支操作¶
git branch 创建分支 git branch -b 创建并切换到新建的分支上 git checkout 切换分支 git branch 查看分支列表 git branch -v 查看所有分支的最后一次操作 git branch -vv 查看当前分支 git brabch -b 分支名 origin/分支名 创建远程分支到本地 git branch --merged 查看别的分支和当前分支合并过的分支 git branch --no-merged 查看未与当前分支合并的分支 git branch -d 分支名 删除本地分支 git branch -D 分支名 强行删除分支 git branch origin :分支名 删除远处仓库分支 git merge 分支名 合并分支到当前分支上
暂存操作¶
git stash 暂存当前修改 git stash apply 恢复最近的一次暂存 git stash pop 恢复暂存并删除暂存记录 git stash list 查看暂存列表 git stash drop 暂存名(例:stash@{0}) 移除某次暂存 git stash clear 清除暂存
回退操作¶
git reset --hard HEAD^ 回退到上一个版本 git reset --hard ahdhs1(commit_id) 回退到某个版本 git checkout -- file撤销修改的文件(如果文件加入到了暂存区,则回退到暂存区的,如果文件加入到了版本库,则还原至加入版本库之后的状态) git reset HEAD file 撤回暂存区的文件修改到工作区
标签操作¶
git tag 标签名 添加标签(默认对当前版本) git tag 标签名 commit_id 对某一提交记录打标签 git tag -a 标签名 -m '描述' 创建新标签并增加备注 git tag 列出所有标签列表 git show 标签名 查看标签信息 git tag -d 标签名 删除本地标签 git push origin 标签名 推送标签到远程仓库 git push origin --tags 推送所有标签到远程仓库 git push origin :refs/tags/标签名 从远程仓库中删除标签
常规操作¶
git push origin test 推送本地分支到远程仓库 git rm -r --cached 文件/文件夹名字 取消文件被版本控制 git reflog 获取执行过的命令 git log --graph 查看分支合并图 git merge --no-ff -m '合并描述' 分支名 不使用Fast forward方式合并,采用这种方式合并可以看到合并记录 git check-ignore -v 文件名 查看忽略规则 git add -f 文件名 强制将文件提交
git创建项目仓库¶
git init 初始化 git remote add origin url 关联远程仓库 git pull git fetch 获取远程仓库中所有的分支到本地
忽略已加入到版本库中的文件¶
git update-index --assume-unchanged file 忽略单个文件 git rm -r --cached 文件/文件夹名字 (. 忽略全部文件)
取消忽略文件¶
git update-index --no-assume-unchanged file
拉取、上传免密码¶
git config --global credential.helper stor
基本概念¶
- 学习github基本概念和操作 https://guides.github.com/activities/hello-world/
- Repository,项目仓库:used to organize a single project,can contain folders and files, images, videos, spreadsheets, and data sets
- Branch,分支:Repositor 本身就是一个 Definitive Branch(Master Branch)
- Branching is the way to work on different versions of a repository at one time;
- A new branch called feature (because we’re doing ‘feature work’ on this branch)
- Commits,修订,提交: = saved changes, 修订的部分;
- Each verison of a porject is a commit;
- Each commit has an associated commit message,修订说明, which is a description explaining why a particular change was made.
- Pull Request, 合并请求,让别人合并你的修订
安装Git¶
- 安装Git
bash
sudo apt-get update
sudo apt-get install git
-
查看版本
bash git --version git version 2.11.0
-
配置个人信息
bash git config --global user.name "Emma Paris" git config --global user.email "eparis@atlassian.com" git config --global core.editor nanoGit
建立版本库¶
- 第一步创建版本库
bash
mkdir learngit
cd learngit
- 第二步初始化版本库,通过
git init
命令把这个目录变成Git可以管理的仓库:
bash
git init
创建完成后会多出一个 .git
的文件夹,linux系统中使用 ls -ah
查看到; windows 系统中使用dir
查看
-
第三步编写文件,比如我们编写一个
readme.txt
文件 -
第四步添加文件到版本库的暂存区,
bash
git add readme.txt
- 第五步提交, 把暂存区的文件版本提交到当前分支
bash
git commit -m "annotation"
为什么Git添加文件需要add
,commit
一共两步呢?因为commit
可以一次提交很多文件,所以你可以多次add
不同的文件,比如:
bash
git add file1.txt
git add file2.txt file3.txt
git commit -m "add 3 files."
问题¶
- 旧版本说明文档 https://toolchain.gitbook.com/
- gitbook 安装步骤参考 http://www.chengweiyang.cn/gitbook/installation/README.html
- Git 推送步骤 https://blog.csdn.net/sinat_20177327/article/details/76062030
- 如果在git commit过程中碰到file name too long 的问题,使用
git config --system core.longpaths true