github学习

创建版本库

mkdir repo
cd repo
git init
git add readme.txt
git commit -m "text for read"

简单的设置

git config --global user.name "xiaoming"
git config --global user.email "xiaoming@school"
git config --global color.ui true

版本操作

git status
git diff readme.txt
git log
git log --pretty=oneline
git reset --hard HEAD^			#回到上一个版本
git reset --hard HEAD^^			#回到上上一个版本
git reset --hard HEAD~100		#回到上一百个版本
git reset --hard 1345212		#回到指定的版本
git reflog						#记录每一次命令

git checkout -- filename		#:改乱了工作区,或者想丢弃工作区的修改时
git reset HEAD filename			#:改乱了内容,还添加到了暂存区,回到上一条命令的场景,重新放回工作区

版本回退:提交了不合适的修改到版本库(未提交到远程库)

删除文件

git rm test.txt
git commit -m "remove file"
git checkout -- test.txt		#删错文件恢复

远程版本库

1、创建一个远程Git仓库
2、按照提示做

# 添加后远程库的名字就是origin, 可以改为别的
git remote add origin git@github.com:GodsLeft/zhu_repo.git	

# 本地库的所有内容推送到远程库上,-u把本地的master分支内容推送到远程
# 新的master分支,还会把本地的master分支和远程的master分支关联起
# 来,以后简化命令
git push -u origin master

git push origin master: 使用了-u之后,以后就这样

克隆远程版本库

git clone git@github.com:GodsLeft/gitskills.git

分支

git branch				#查看分支
git branch name			#创建分支
git branch -d name		#删除分支
git checkout name		#切换分支
git checkout -b name	#创建 + 切换分支
git merge	 name		#合并某分支到当前分支
分支冲突,修改之后再提交
# 查看分支图
git log --graph --pretty=oneline --abbrev-commit

#合并分支的时候使用的是Fast forword,这种模式,删除分支后会丢掉分支信息
//如果强制禁用,就会在merge时生成一个新的commit,这样从分支历史上就可以看出分支信息
git merge --no-ff -m "merge with no-ff" dev

bug分支

git stash					#存储当前工作现场
git checkout master			#切换到主分支
git checkout -b issue-101	#从master创建临时分支
git add readme.txt
git commit -m "fix bug 101"		#修复bug并提交
git checkout master			#切换到master分支
git merge --no-ff -m "merged bug fix 101" issue-101	#合并分支
git branch -d issue-101		#删除分支

git checkout dev			#切换到原来dev分支
git stash list				#查看工作现场
git stash apply				#恢复现场,但是不删除stash内容
git stash drop				#删除stash内容
git stash pop				#恢复并删除stash内容
git stash apply stash@{0}	#可以多次stash,恢复的时候,使用git stash list查看,回复指定的stash

git branch -D Name 			#强行删除未合并过的分支

多人协作

git remote						#查看远程库信息
git remote -v					#更详细信息
git push  origin branch-name	#从本地推送分支
git pull						#如果推送失败,先抓取远程新的提交
git checkout -b branch-name orgin/branch-name	#在本地创建和远程分支对应的分支
git branch --set-upstream branch-name origin/branch-name #建立本地分支和远程分支关联

标签管理

git branch				#查看分支
git checkout master		#切换到要打标签的分支上
git tag v1.0			#打一个标签,标签默认打到新提交的commit上的
git tag					#查看所有标签
git log --pretty=oneline --abbrev-commit		#查看历史
git tag v0.9 commit-id		#对历史版本打标签
git show v0.9				#查看标签信息
git tag -a v0.1 -m "version 0.1 released" 66763723	#创建带有说明的标签

git tag -d v0.1				#删除标签,创建的标签都之存储在本地,不会自动推送到远端
git push origin v1.0		#推送标签到远程
git push origin --tags		#一次性推送尚未推送的标签
git tag -d v0.9		
git push origin :refs/tags/v0.9		#如果标签已经推送,删除

忽略文件

在git工作区根目录下创建一个.gitignore文件,写入要忽略的文件名
提交.gitignore

配置别名

git config --global alias st status :配置别名
–global :是针对当前用户起作用的,如果不加,只针对当前仓库起作用
.git/config :每个仓库的配置文件都放在这里
~/.gitconfig :当前用户的Git配置文件
配置别名(alias)可以直接修改这个文件,改错了可以删掉文件重新通过命令配置

几个概念
  • 工作区:在电脑中能看到的目录
  • 版本库:.git 不是工作区,而是Git的版本库。其中最重要的就是stage暂存区,Git为我们自动创建的第一个分支master,以及一个指向master的HEAD指针

其他

# 强行移动分支
git branch -f master HEAD~3


# 撤销变更
## git reset
- 变更还在,只是处于未加入暂存区的状态
- 对远程分支是无效的

## git revert
- 会创建一次新的提交,与当前的父提交是一样的,然后推送到远程,大家共享

# git cherry-pick
将c2 c4这两次提交放到当前的分支上
git cherry-pick c2 c4


# git rebase -i HEAD~2
git rebase branch1 branch2
branch1 作为 branch2 的 base

git tag v1.0 c1


git describe


# 只更新本地的远程分支
git fetch(单纯的下载操作)
- 从远程仓库下载本地仓库中确实的提交
- 更新远程分支指针

git pull == git fetch + git merge

如果要更新远程的代码库
需要合并自己的分支到最新的代码库,然后push
git fetch
git rebase/merge
git push

git pull --rebase  == git fetch + git rebase


# 在推送远程分支是不建议使用 merge  但是没有提交历史

当你克隆的时候Git会为远程仓库中的每个分支在本地仓库中创建一个远程分支(o/master)

# 使其他分支跟踪远程的origin/master分支
git checkout -b totallyNotMaster o/master

git branch -u o/master foo

git push origin(远程) master(本地分支)
git push origin   foo

git push origin <source>:<destination>

git fetch origin foo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值