Git 学习笔记

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文件(默认没有写权限,你需要自行解决)

进入 https://www.ipaddress.com/ 

输入域名

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值