Git系统学习笔记
一、相关网站
二、Git文件的三种状态
- 已修改(modified)
- 已暂存(staged)
- 已提交(commited)
- 工作区(开发) --> 暂存区( add ) --> 版本库(commit)
三、Git基本命令
- git init 初始化。生成.git文件夹和里面一系列文件。
- git add text.txt(添加文件到暂存区)
- git rm --cached text.txt(将文件回退到工作区)
- git commit -m 'init message' 提交修改的文件到版本库
git commit --amend -m '修正提交信息'
git commit -am '添加并提交' - git checkout -- text.txt 将版本库的内容覆盖到当前文件
- git status 查看当前状态
- git rm text.txt 删除文件,将删除文件纳入到暂存区。
四、user.name 和 user.email(三个地方可以配置)
查看用户配置信息:git config --global --list
- 系统的(几乎不用), git config --system user.name 'lfw'
- 全局的, git config --global user.name 'lfw'
- 针对特定项目, git config --local user.name 'lfw'
- cat ~/.gitconfig 查看配置
- git commit --amend --reset-author 重新配置用户信息
- 记住用户名和密码(进入目录):git config --global credential.helper store
五、.gitignore文件
忽略文件.png
六、分支
-
查看分支 :git branch 或者 git branch -a 或者 git branch -av
-
创建新的分支 :git branch v_new_branch
-
切换分支: git checkout v_new_branch
-
创建并切换分支:git checkout -b test(分支名称)
-
切换到某次提交:git checkout 5a7cf(提交的Logid)
-
根据某次提交的Log Id创建一个新的分支:git branch fixbug(分支名称) 5a7cf(提交的Logid)
-
修改分支名称:git branch -m master master2(名称由master 改成 master2)
-
推送新的分支:
git push --set-upstream origin dev (dev:dev2)
git push -u origin test
一样的效果
git push origin HEAD:dev2
git push origin dev:dev2 -
拉取远程分支:
git checkout -b dev origin/dev
git checkout --track origin/dev -
删除本地分支:git branch -d dev
-
删除远程分支:
git push origin :dev(将本地空的分支推送到远程分支)
git push origin --delete dev -
克隆远程分支:git clone 远程仓库地址 文件夹
-
合并某分支到当前分支:git merge <name>
git checkout -- 文件 :工作区的内容,回到最后一次add到暂存区的内容。
git reset HEAD test.txt :移除一次add。
git修改远程仓库地址(三种方法):
1.修改命令
git remote origin set-url [url]
2.先删后加
git remote rm origin
git remote add origin [url]
3.直接修改config文件
七、临时保存(stash)
- git stash save '分支修改Bug,临时保存工作内容'
- git stash pop 恢复最后一个临时保存工作内容。
- git stash list 查看临时保存列表。
- git stash apply stash@{1} ,回复到列表中的指定位置。
-
git stash drop stash@{0} ,删除一条临时保存。
stash.png
八、Git标签
- git tag v1.0.0 简单的打个标签
- git tag -a v1.0.5 -m '带消息的' 带注释信息的打标签
- git tag 查看标签列表
- git tag -l 'v*' 查找tag
- git tag -d v1.0.0 删除本地tag
git push origin :refs/tags/v1.0
git push origin --delete tag v1.0 - git push origin v1.0 v2.0 (将标签推送到远程)
-
git push origin --tags(推送所有标签到远程)
Git标签.png
九、Diff 和文件删除
-
git blame test.txt (查看这个文件修改信息)
diff.png - rm -rf .git(删除文件夹下的内容包括文件夹)
- rm -rf * 删除当前目录下的所有文件
十、关联远程仓库(常用)
- 创建本地git:git init
- 添加到暂存区: git add .
- 提交到本地仓库: git commit -m '准备关联远程仓库'
- 去创建远程项目,并得到远程项目的地址
- 本地添加远程仓库: git remote add origin 远程仓库的项目地址
- 如果是SSH,就配置一下SSH:git remote show origin
- 关联本地仓库: git push -u origin master
- 输入帐户和密码,搞定。
强制更新
git fetch --all
git reset --hard origin/master
本地分支关联到远程分支
git branch --set-upstream-to=origin/master master
SSH配置
- git remote show 显示远程仓库名称
- git remote show origin(远程仓库名称),显示详情信息
- SSH生成配置
- 查看:which ssh-keygen
- 生成:ssh-keygen (回车、回车就行)
完整生成:ssh-keygen -t rsa -C "邮箱名称" (回车、回车就行)
- 生成:ssh-keygen (回车、回车就行)
- 复制id_rsa.pub复制到远程仓库
分支开发模型
分支开发模型.png设置别名: git config --global alias.br branch
git config --global alias.unstage 'reset HEAD'
多模块开发一:submodule
- 添加submodule:git submodule add git@github.com:wenkency/git_child.git libxxx
- 更新远程:git submodule foreach git pull
- 克隆一:
git clone http://xxx parent
git submodule init
git submodule update --recursive - 克隆二:
git clone http://xxx git_parent --recursive
5.删除submodule
git rm --cached libxxx
rm -rf libxxx
git add .
git commit
多模块开发二:subtree
- 关联:git remote add subtree-origin http://xxx
- 添加: git subtree add --prefix=subtree(目录) subree-origin master --squash
- 更新:git subtree pull --prefix=subtree subtree-origin master --squash
- 推送:git subtree push --prefix=subtree subtree-origin master
--squash(合并提交信息) ,生成提交新的ID。--squash要么都用,要么都不用
其它命令
- cherry-pick
- rebase(和merge)
- 处理git 访问不到22端口问题 ,在.ssh目录下,创建config并添加下面内容
Host github.com
User 61128910@qq.com
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 22