Git 笔记

安装

git config --global user.name "Your Name" 
git config --global user.email "1837978614@qq.com"

创建版本库

git init //把这个目录变成git可以管理的仓库
git add readme.txt //把文件添加到仓库
git commit -m "wrote a readme file" //把文件提交到仓库
git status //时刻掌握仓库当前的状态
git diff //查看不同

删除版本库

find . -name ".git" | xargs rm -Rf //查找以git结尾的

版本回退

git log  //查看历史记录
git reset --hard 83c89ca4b7fd770a5b65166bd4d4c12c154dcfea //回退到某个版本
git  reset --hard HEAD^ //回退到上一个版本
git  reflog //查看命令历史
git reset --hard 45bd03c//回退到以前的修改

Git跟踪的并管理的是修改,而非文件。

git diff HEAD -- readme.txt //可以查看工作区和版本库里面最新版本的区别
git checkout -- readme.txt //丢弃工作区的修改,让文件回到最后一次commit和add的地方
git reset HEAD //丢弃暂存区的修改
git -rm  readme.txt//删除
git checkout -- readme.txt //找回

创建ssh key

ssh-keygen -t rsa -C "1837978614@qq.com"

添加远程仓库

git remote add origin git@github.com:jiangwenwen/learngit.git//在本地执行

推送到远程

git push -u origin master//第一次

git push origin master

从远程库克隆

git clone git@github.com:jiagwenwen/Book.git

git fetch:相当于是从远程获取最新版本到本地,不会自动merge。
git pull:相当于是从远程获取最新版本并merge到本地。
//查询远程的版本
git remote -v
//获取远端的master分支的最新代码到本地
git fetch origin master 
//查看版本差异
git log -p master..origin/master 
//合并最新代码到本地分支
git merge origin/master

创建与合并分支

git checkout -b dev 创建dev分支,然后切换到dev分支
git branch //查看当前分支
git checkout master//切换到master分支
git merge 用于合并指定分支到当前分支,不会新建commit
git branch -d dev //删除分支

解决冲突

git log --graph //分支合并图

分支管理策略

git merge --no-ff -m "merge with no-ff" dev //会新建一个commit

bug分支

git stash可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash apply //恢复不删除stash
git stash pop //恢复删除stash
git stash list //查看stash list

Feature分支

git branch -D feature-vulcan 丢弃一个没有被合并过的分支

多人协作

git remote -v //查看远程库信息
git push origin branch-name //从本地推送分支
git branch --set-upstream-to=origin/dev dev
git checkout -b branch-name origin/branch-name//在本地创建和远程分支对应的分支
git branch --set-upstream branch-name origin/branch-name //建立本地分支和远程分支的关联
git pull //从远程拉取分支

rebase操作可以把本地未push的分叉提交历史整理成直线 。

标签

git tag <name>//打标签
git tag //查看所有标签
git tag -a <tagname> -m "blablabla..." //指定标签信息
git tag -d v0.1 //删除标签
git push origin <tagname> //推送本地标签到远程
git push origin --tags //一次性推送全部未推送的标签
git tag -d v0.9 //先本地删除
git push origin :refs/tags/v0.9 //再远程删除
git remote rm origin 删除已有的github远程库

忽略

git check-ignore -v App.class // 查看忽略原因

异常:

错误:fatal: The remote end hung up unexpectedly

解决方法:
在克隆/创建版本库生成的 .git目录下面修改生成的config文件增加如下:
[http]
postBuffer = 524288000

添加文件

git add .  // 提交被修改的和新建的文件,但不包括被删除的文件
git add -u  --update update tracked files //更新所有改变的文件,即提交所有变化的文件
git add -A   --all  add changes from all tracked and untracked files   提交已被修改和已被删除文件,但是不包括新的文件

解决访问比较慢

修改host文件

151.101.229.194  github.global.ssl.fastly.net
151.101.72.133 assets-cdn.github.com

设置代理

git config --global https.proxy http://127.0.0.1:1080

git config --global https.proxy https://127.0.0.1:1080
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'

#只对github.com
git config --global http.https://github.com.proxy socks5://127.0.0.1:1080

#取消代理
git config --global --unset http.https://github.com.proxy)

git config --global --unset http.proxy

git config --global --unset https.proxy

npm config delete proxy

删除文件

git status //查看那些文件被删除了

git rm com/alipay/config/AlipayConfig.java//确认删除

git commit -m '删除了敏感文件'//提交

git checkout -- test.txt//删错了,回退
原文地址:https://www.cnblogs.com/jiangwenwen1/p/9454594.html