1、比对两个文件的差异
windows:FC old_file new_file
linux : diff -u old_file new_file
2、一些常用命令
day1:
git init 创建一个空仓库
ls -ah 查看当前目录下的隐藏文件
rm -rf file_name 删除 file
windows下自动缓缓
git config --global core.autocrlf false //禁用自动转换
git add file_name 添加文件到仓库
git add file2.txt file3.txt 提交多个文件
git commit -m 'desc about message'提交此次执行结果
git diff 查看文件修改情况
++表示新增的内容
--表示减少的内容
git status 查看 当前git状态
git log 可以查看历史提交情况 按照时间降序排列
git reset --hard HEAD^ 回退到上一个修改内容状态
git reset --hard commit_id 到指定的commit_i所在版本内容
git reflog 用于查看近期的提交commit_id 可用于 后悔时候回退到指定版本
cat ~/.ssh/id_rsa.pub 查看key
rm -rf .git 除git仓库
rm -rf hello-world
cat ~/.ssh/id_rsa.pub 查看key
day2:
1、暂存区与工作区
暂存区: 最后一次add 后的状态
工作区: 当前操作的地方
2、丢弃修改
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。(注意-- 后面有个空格)
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。
3、删除文件
//删除文件并提交删除请求
git rm file_name
git commit -m 'delete file'
4、创建SSH Key
ssh-keygen -t rsa -C "youremail@example.com"
创建过程会提示你你的Key所在目录
我的是 c:/Users/zhangwei/.ssh
该目录下面会有生成两个文件 id_rsa(private key)、 id_rsa.pub(public key)
5、本地git关联 github仓库
a、https 方式
git remote add origin https://github.com/zhangwei13623613927/learngit.git
b、ssh方式
git remote add origin git@github.com/zhangwei13623613927/learngit.git
其中 origin 为 对远程仓库取的名字
git remote rm origin 可删除 远程仓库origin
git push origin master 推送最新修改到github
6、克隆远程仓库到本地
git clone git@github.com/Tianweidadada/hello-world.git
注 : 此处也可以使用https方式(https方式需要验证)
Tianweidadada换为你的github的用户名
hello-world改为你要克隆的远程仓库名字
7、创建、查看分支
git branch 查看分支 *指向当前分支
git branch -r 查看远程分支
git remote 查看远程仓库信息
git remote -v 查看详细信息
git branch branch_name 创建名为branch_name的分支
git checkout -b dev 创建并指向新的分支
<==> git branch dev(创建)、 git checkout dev(切换)
8、合并分支
git merge branch_name 把branch_name 分支合并到当前分支
a、Fast-forward(快速模式、直接把master 指向新提交的dev、此方式不会有痕迹)
b、git merge --no-ff -m 'desc message' branch_name ( 强制不使用Fast- forward、这会导致一次新的commit)
9、删除分支
git branch -d 删除分支
git branch -D branch_name 强行删除分支
10、查看分支合并情况
git log --graph --pretty=oneline --abbrev-commit(以路线形式展示、近期操作一目了然)
git log --graph (查看分支图)
11、场景:当前任务未完成,急需转到另一个分支操作
git stash 存储当前工作区
git stash pop 恢复工作区并删除stash
git stash list 查看stash列表
git stash apply stash@{0} 恢复指定的 stash
12、推送本地分支到远程仓库
git push origin local_branch_name 把本地指定分支推送到远程分支origin(可变)
图为本地git仓库同步到github上的信息
day3
1、打标签(方便识别修改、默认打标签在最新提交的commit上)
git tag <tag_name>
git tag 查看标签
git tag <tag_name> <commit_id> 为指定的id打标签
git log --pretty=oneline --abbrev-commit 查看id与描述(简化的)
git show <tag_name> 查看标签详细情况
git tag -a <tagname> -m 'blablabla' 带有描述信息的标签
注:标签对应着commit 一个标签可能对应这多个branch状态
2、删除标签
a、删除本地标签
git tag -d <tag_name>
b、删除远程标签
先删除本地标签
git push origin :refs/tags/<tag_name>
3、推送标签到远程
git push origin <tag_name>
git push origin --tags 推送本地所有未被推送的标签
4、删除已经关联的Github
git remote rm origin
git remote add <branch_name> git@github.com:Tianweidadada/learngit.git 关联到github
git remote -v 查看关联信息
5、git log -1 查询最后一次提交
6、别名
(1)加上 --global 代表所有仓库都可用
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C( yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
(2) 不加global 代表当前仓库修改别名
git config alias.ci "commit"
7、 用户主目录下存放着 .gitconfig文件(内部有username,email,alias...)
path: C:/Users/<username>/.gitconfig
8、每个仓库下的 .git目录下 存放着 config 文件(当前的仓库配置文件)
cat .git/config
实战:把自己做的android Demo 推送到github上面
1、创建本地仓库
cd 到指定项目下
git init
2、添加项目到本地仓库
git add .
3、远程连接GitHub
需要提前在github上面建立一个空的仓库命名为 MaterialDemo(该仓库不要勾选Initialize repository whie README.md)
git remote add origin git@github.com:Tianweidadada/MaterialDemo.git
4、推送到github
git push -u origin master
注:多人操作时候 可能遇到的问题解决:
但是此时出现了问题,提示 rejected 也就是github 拒绝了推送,因为github已经有新的改动
根据提示 进行
git pull 把远程最新内容 拉回到本地
执行后 又有了新的问题 提示没有指定合并的对象
git branch --set-upstream-to=origin/master master (origin/master为远端的分支 master为本地分支)
再次 git pull 即可
注意:
步骤3 不要勾选
这样创建的是一个空的仓库、可以从以下三种方案向该仓库添加内容(我们选的是第一种)
问题:
stackoverflow上面看了下 说明了原因:
是传的文件太大了,超过默认的限制了。
git 下运行这个命令
git config http.postBuffer 524288000 // 局部
git config --global http.postBuffer 524288000 //全局
https://stackoverflow.com/questions/15240815/git-fatal-the-remote-end-hung-up-unexpectedly
上传过程可能会出现新的问题 而终止上传、问题在于网速太慢
解决方案(windows):
C:\Windows\System32\drivers\etc 目录下有个hosts文件(默认没有写权限,你需要自行解决)
输入域名
github.com
github.global.ssl.fastly.net
分别查得 其ipv4地址 加到 hosts文件中 (编辑器打开 hosts文件)如下
保存 然后 进入cmd 执行 命令 ipconfig /flushdns 刷新dns缓存区 ok 再次 git push -u origin master 就可以成功上传了
更详细的步骤可参考 : 推送本地项目到github
Fork clone update PullRequest : https://blog.csdn.net/jasonLee_lijiaqi/article/details/80511723