Git基础知识、使用命令

git教程

安装完成后,配置
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

1、pwd:显示当前路径
Windows默认路径

2、git init :把当前目录变成git可以管理的仓库
.git 目录默认是隐藏了,用ls -ah 可以看到

3、文件要放在仓库目录下
$ git add xx.txt :把文件添加到仓库
$ git commit -m "wrote a readme file" :把文件提交到仓库
-m : 后面的说明很重要,通过git log命令时能看到。

4、git log :显示提交日志
git log --pretty=oneline :以单行形式显示提交日志
每一个id都不一样,HEAD为当前版本,HEAD^ 为上一版本,HEAD~100为往上100个版本

5、$ git reset --hard HEAD^:回退到上一个版本
$ git reset --hard 312322:指定回到id为312322版本

6、$ git reflog:记录每一次命令

工作区和暂存区
工作区:电脑里能看到的目录,文件为 Untracked 状态
版本库(Repository):.git目录 git版本库
工作区 -》 暂存区(add) -》 提交到分支(commit)
commit 只对暂存区的修改进行提交
git diff HEAD -- readme.txt :命令可以查看工作区和版本库里面最新版本的区别,如果没有区别没有显示
git checkout -- readme.txt:
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令 git checkout -- file
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令 git reset HEAD file ,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考 版本回退 一节,不过前提是没有推送到远程库。

rm test.txt:删除test.txt 工作区文件
git checkout -- test.txt:恢复版本库中文件到工作区
git rm test.txt:删除版本库中文件,连带删除本地文件
git reset --hard HEAD~1:恢复到上一版本的版本库

github
第一步:创建SSH Key。
$ ssh-keygen -t rsa -C "youremail@example.com"
用户主目录找到 .ssh 目录,里面有 id_rsa 和 id_rsa.pub ,这两个是ssh key的秘钥对,前者是私钥,后者是公钥。
第二步:登录GitHub,打开“setting”,“ssh keys"页面,在key文本框里粘贴公钥内容

第一次关联GitHub库时,加上 -u 参数,不仅把本地分支内容推送到远程,还会把两者关联起来,以后推送和拉取就可以简化命令。

从远程库克隆

分支
Git鼓励大量使用分支:
查看分支: git branch
创建分支: git branch <name>
切换分支: git checkout <name>
创建+切换分支: git checkout -b <name>
合并某分支到当前分支: git merge <name>
删除分支: git branch -d <name>

当两个分支都对统一文件同一部分内容进行修改提交后,master进行合并分支时,会出现存在冲突提示。
使用 cat file.txt 可以直接查看文件内容。
修改了冲突之后,再次提交即可,最后删除分支即可。
使用带参数的git log 可以看到分支的合并情况
git log --graph --pretty=oneline --abbrev-commit

git merge --no-ff -m "merge with no-ff" dev :带 --no-ff 参数,表示禁用Fast forward

分支策略
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先, master 分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;那在哪干活呢?干活都在 dev 分支上,也就是说, dev 分支是不稳定的,到某个时候,比如1.0版本发布时,再把 dev 分支合并到 master 上,在 master 分支发布1.0版本;
你和你的小伙伴们每个人都在 dev 分支上干活,每个人都有自己的分支,时不时地往 dev 分支上合并就可以了。

bug分支
1.git stash :保存当前工作现场
2.确定是哪一个分支上修复bug,就在该分支创建临时分支
3.然后修复bug(add,commit)
4.切换到该分支,完成合并后删除临时分支
5.bug修复完成,返回之前的分支干活
git stash list :查看刚才存储的工作现场
恢复有两个方法:
(1)git stash apply :恢复后,stash内容并不删除,需要用git stash drop删除
(2)git stash pop:恢复的同时把stash内容也删除了

feature分支
新增新功能时,开一个feature分支
删除未合并分支:git branch -D feature‘

多人协作
推送分支
git push origin dev
抓取分支
1.克隆项目到本地电脑
git clone git@github.com:shayvmo/learngit.git
默认情况下,只能看到本地的master分支
2.要在远程dev分支上进行开发,必须创建远程origin的dev分支到本地
git checkout -b dev origin/dev
因此,多人协作的工作模式通常是这样:
1.首先,可以试图用 git push origin branch-name 推送自己的修改;
2.如果推送失败,则因为远程分支比你的本地更新,需要先用 git pull 试图合并;
3.如果合并有冲突,则解决冲突,并在本地提交;
4.没有冲突或者解决掉冲突后,再用 git push origin branch-name 推送就能成功!
如果 git pull 提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令 git branch --set-upstream branch-name origin/branch-name
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
小结
  • 查看远程库信息,使用git remote -v
  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;
  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
  • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
  • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

删除远程文件
git rm --cached "filepath":删除缓存中的文件,不删除本地物理文件
git rm --f "filepath“:删除物理文件和缓存中文件

删除文件夹
git rm -r "dir"

git push --set-upstream origin dev:设置远程推送分支
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值