本文共 4337 字,大约阅读时间需要 14 分钟。
1、比对两个文件的差异
windows:FC old_file new_file
linux : diff -u old_file new_file
2、一些常用命令
day1:
git init 创建一个空仓库ls -ah 查看当前目录下的隐藏文件rm -rf file_name 删除 filewindows下自动缓缓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 查看keyrm -rf .git 除git仓库rm -rf hello-worldcat ~/.ssh/id_rsa.pub 查看key
day2:
1、暂存区与工作区 暂存区: 最后一次add 后的状态 工作区: 当前操作的地方2、丢弃修改 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。(注意-- 后面有个空格) 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD,就回到了场景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 推送最新修改到github6、克隆远程仓库到本地 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} 恢复指定的 stash12、推送本地分支到远程仓库 git push origin local_branch_name 把本地指定分支推送到远程分支origin(可变)
图为本地git仓库同步到github上的信息
day3
1、打标签(方便识别修改、默认打标签在最新提交的commit上) git taggit tag 查看标签 git tag 为指定的id打标签 git log --pretty=oneline --abbrev-commit 查看id与描述(简化的) git show 查看标签详细情况 git tag -a -m 'blablabla' 带有描述信息的标签 注:标签对应着commit 一个标签可能对应这多个branch状态2、删除标签 a、删除本地标签 git tag -d b、删除远程标签 先删除本地标签 git push origin :refs/tags/ 3、推送标签到远程 git push origin git push origin --tags 推送本地所有未被推送的标签4、删除已经关联的Github git remote rm origin git remote add 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/ /.gitconfig8、每个仓库下的 .git目录下 存放着 config 文件(当前的仓库配置文件) cat .git/config
实战:把自己做的android Demo 推送到github上面
1、创建本地仓库 cd 到指定项目下 git init2、添加项目到本地仓库 git add .3、远程连接GitHub 需要提前在github上面建立一个空的仓库命名为 MaterialDemo(该仓库不要勾选Initialize repository whie README.md) git remote add origin git@github.com:Tianweidadada/MaterialDemo.git4、推送到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 //全局
上传过程可能会出现新的问题 而终止上传、问题在于网速太慢
解决方案(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 就可以成功上传了更详细的步骤可参考 :
Fork clone update PullRequest :