如果在本地第一次使用git,则需要配置 git config –global 参数
git config –global user.name "vitalemonate"
git config –global user.email "[email protected]"
初始化仓库
git init
添加文件到暂存区
git add xxx
将暂存区内容添加到仓库中
git commit -m "balabala"
登录github并新建一个仓库,起名为learngit,因为目前新建的远程仓库的默认分支为main,而本地默认分支为master,为方便使用,将本地分支master重命名为main
git branch -M main
https方式关联本地与远程仓库
git remote add origin https://github.com/vitalemonate/learngit.git
SSH方式关联本地与远程仓库
git remote add origin [email protected]:vitalemonate/learngit.git
如果在使用SSH前已经建立了https的关联方式,可以先删除https的关联方式,再建立SSH连接
git remote rm origin
将本地内容推送到远程仓库
git push -u origin master
生成SSH密钥对
ssh-keygen -t rsa -C "[email protected]"
执行以上指令后会在用户的home目录下生成两个文件
-
私钥文件:
/wanghao/.ssh/id_rsa
-
公钥文件:
/wanghao/.ssh/id_rsa.pub
查看公钥
cat ~/.ssh/id_rsa.pub
将其中的内容复制,粘贴在github的setting中的SSH keys中
添加完成之后点击 Add SSH key ,Github和主机之间的SSH配对完成,在终端执行验证是否添加成功
之后就可以向远程仓库推送内容
git push -u origin master
显示工作目录和暂存区的状态
git status
当工作区有改动,临时区为空,diff的对比是工作区与最后一次commit提交的仓库的共同文件;当工作区有改动,临时区不为空,diff对比的是“工作区与暂存区的共同文件”
git diff
按时间先后顺序列出所有的提交,最近的更新排在最上面
git log
1.HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令
git reset --hard commit_id
2.穿梭前,用git log
可以查看提交历史,以便确定要回退到哪个版本。
3.要重返未来,用git reflog
查看命令历史,以便确定要回到未来的哪个版本。
git add
命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit
就可以一次性把暂存区的所有修改提交到分支
场景1:当你改乱了工作区
某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
, git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file
,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
最新版本的git已经使用git restore
代替了原来的reset和checkout命令了,如下:
git restore readme
(使用 "git restore <文件>..." 丢弃工作区的改动)
(use "git restore ..." to discard changes in working directory)
git restore --staged readme
(使用 "git restore --staged <文件>..." 以取消暂存)
(use "git restore --staged ..." to unstage)
删除工作区文件,并且将这次删除放入暂存区, 注意要删除的文件是没有修改过的
,就是说和当前版本库文件的内容相同
git rm xxx
git remote add origin [email protected]:wanghao/learngit.git
关于origin:远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。
本地分支向指定远程分支推送
git push origin <本地分支名>:<远程分支名>
推送到与本地当前分支同名的远程分支上
git push origin <本地分支名> 将本地当前分支
将本地当前分支推送到与本地当前分支同名的远程分支上
git push
第二种和第三种方式需要在第一次使用时将本地分支与远程同名分支相关联:
git push --set-upstream origin <本地分支名>
简写方式
git push -u origin <本地分支名>
git branch -vv
git remote show origin
cat .git/config
查看本地分支
git branch
查看远程分支
git branch -r
创建分支
git branch <name>
切换分支
git checkout name
或者git switch name
创建+切换分支
git checkout -b name
或者git switch -c name
合并某分支到当前分支
git merge name
删除分支
git branch -d name
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本
团队合作的分支看起来就像这样
git stash
命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。这也就是说,stash中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上
1 当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用git stash命令将修改的内容保存至堆栈区,然后顺利切换到hotfix分支进行bug修复,修复完成后,再次切回到dev分支,从堆栈中恢复刚刚保存的内容。
2 由于疏忽,本应该在dev分支开发的内容,却在master上进行了开发,需要重新切回到dev分支上进行开发,可以用git stash
将内容保存至堆栈中,切回到dev分支后,再次恢复内容即可。
恢复,但是恢复后,stash内容并不删除,需要用git stash drop
来删除
git stash apply
恢复的同时把stash内容也删掉
git stash pop
恢复指定num的内容并在stash中删除
git stash pop stash@{$num}
查看stash了哪些存储
git stash list
首先,可以试图用git push origin branch-name
推送自己的修改
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull
试图合并
如果合并有冲突,则解决冲突,并在本地提交
没有冲突或者解决掉冲突后,再用git push origin branch-name
推送就能成功
如果git pull
提示no tracking information
,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to branch-name origin/branch-name
创建本地分支和远程分支的链接关系
标签是版本库的一个快照,每个标签都与一个commit绑定
新建一个标签,默认为HEAD
,也可以指定一个commit id
git tag tagname
指定标签信息
git tag -a tagname -m blablabla
查看所有标签
git tag
推送一个本地标签
git push origin tagname
推送全部未推送过的本地标签
git push origin --tags
删除一个本地标签
git tag -d tagname
删除一个远程标签
git push origin :refs/tags/tagname