Gitee同步流程及常用指令
一、同步电脑本地文件夹到gitee的过程
1、打开Gitee,注册一个账号,注册完登录,然后在右上角点击【+】创建一个仓库,设置仓库名,设置为私有,点击创建(只执行一次)。
2、打开Git Bash。(cmd也可以完成相关的命令,区别在于底层操作系统不同,bash使用Unix,有ls等指令;而cmd是DOS。)
输入以下命令生成密钥(只执行一次):
$ ssh-keygen -t rsa -C "【你的邮箱】" #生成密钥ssh
3、基本设置(只执行一次)
$ git config --global user.name "【你的用户名】" #全局设置,声明操作的用户名字,可diy,会出现在提交记录中
$ git config --global user.email "【你的邮箱】" #全局设置,声明操作的用户邮箱,会出现在提交记录中
# 在gitee添加SSH公钥后,输入以下指令查看是否添加成功
$ ssh -T git@gitee.com # 查看是否添加ssh成功
$ git remote -v # 查看链接的远程库
4、本地文件夹初始化(只执行一次)
#以下指令只初始化一次
$ cd d:\\gitee #切换到要上传的文件夹目录下
$ git init #初始化仓库 会在当前路径下生成.git文件夹(默认为隐藏,设置成为显示)
$ git remote add origin https://gitee.com/gitee0901/tm_work2.git #加载远程仓库
5、同步文件到gitee
#上传文件到gitee
$ git add . #将本地文件提交到缓存区(这里的.表示当前文件夹中的所有内容)
$ git add * #添加所有文件,暂未使用
$ git add --all #添加所有文件,暂未使用
$ git commit -m "commit 0606" #将暂存区文件提交到本地版本库
$ git push -u origin master #上传到gitee,首次加-u,之后可以用git push origin master ,master为分支名
6、远程仓库到本地
输入命令 git pull origin master
命令可以将远程仓库的内容加载到本地的文件夹中
拉取远程文件常用的有两种方法:git pull
1、git pull <remote>:从远程库<remote>抓取所有分⽀并合并到本地仓库。
2、git fetch <remote> <branch>:从远程库<remote>抓取指定分支到本地仓库。去掉将抓取远程所有分⽀。
3、git pull <remote>=git fetch <remote>+git merge <remote>
$ git pull origin #拉取远程库文件并合并到本地仓库
#或者
$ git fetch origin #拉取远程库文件
$ git merge origin #合并到本地仓库,将origin合并到当前分支
冲突现象:
1、远程版本比本地版本更新,可以直接用git pull更新本地;
2、本地版本比远程版本更新,可以直接用git push更新远程;
3、当本地库和远程库的文件冲突时,最后使用git fetch,然后自行对比解决冲突,可以在Git Bash分别查看两个文件,对比差异,或者使用第三方可视化工具(如vscode)查看;如果直接git pull可能会出现一些逻辑不恰的合并
7、克隆远程的仓库,暂未使用:
$ git clone https://gitee.com/xin-data/my_work.git
一、初始化
git config --global user.name "username"
设置git用户名
git config --global user.email "email"
设置git邮箱号
git init
通过命令 git init 把当前目录变成git管理的本地仓库
git add filename
把文件存到暂存区
git commit -m "note"
把文件提交到本地仓库
二、常用操作
git status
查看当前库的git状态
git diff filename
查看文件改动状态
git log
查看git操作日志
git reset --hard HEAD~N
回退git版本到第N个版本前
git reflog
可查看git每步操作的版本号(查看完成按Q可退出查看)
git reset --hard verNum
git到指定版本(根据版本号)
git checkout -- filename
丢弃工作区的修改。例如修改了文档还没有git add。add后无法撤销修改。
rm filename
删除文件,删除后git checkout -- filename可以撤销删除,恢复文件。
三、远程仓库的绑定使用
ssh-keygen -t rsa -C "email"
创建SSH私人密钥和公共密钥
git remote add origion https://github.com/aaa/PC1.git
利用上一步的PC的公共密钥
先在github个人账户上New SSH Key;
再建立新仓库New repository,得到仓库的http地址后,
将github库与本地PC绑定,需在git输入github的账号和密码。
git push -u origion master
把当前分支master推送到远程(github仓库),首次加-u。
git push origion master
本地与远程仓库绑定后,修改本地后,利用该指令同步到远程仓库。
git clone https://github.com/aaa/PC2.git
从远程仓库克隆到本地。
四、分支操作
git branch
查看git所有分支。
git checkout -b 分支名
创建并切换到这个分支。相当于git branch bran1 和 git checkout bran1这两条指令。
git merge branch
现在我们想要把branch分支上增加的内容合并到当前分支,可以在当前分支(任何分支皆可)上使用该命令。
git branch -d bran2
删除某个分支。
git pull
获取远程分支上的最新内容
五、常用流程
使用Git提交文件到本地库和远程库:
1:使用 git add filename把文件添加到暂存区。
2:使用git commit -m "note"提交更改,实际上就是把暂存区的所有内容提交到当前master分支上。
3:使用git push origion master:把本地master分支的最新修改交托给GitHub的origin分支,完成这一步才真正意义上拥有了分布式版本库。(集中式、分布式)
分支管理策略:
通常我们合并分支的时候,Git一般是用Fast forward模式,这种模式下,删除分支之后,会丢掉分支信息,现在我们来使用--no--ff来禁用Fast forward模式。
1:创建一个dev分支。git checkout -b dev
2:修改README.md内容。
3:添加到暂存区、工作区。git add README.md \ git commit -m "change1"
4:切换回bran1分支。git checkout bran1
5:合并dev分支,使用命令:git merge --no--ff -m "note" dev
6:删除dev之后我们发现在最后的log中还有dev的操作。git branch -d dev
7:查看历史记录。git log
8:分支策略:master主分支应该是非常稳定的,也是用来发布的新版本,一般情况下干活都不在master分支上干,都是在新建的分支上,干完之后需要发布,或者说新建分支代码稳定之后可以合并到主分支master上。
bug管理策略:
1:隐藏当前分支下的工作状态 git stash
2:查看git状态是否干净。git status
3:切换到bug所在的分支 。gitcheckout branch
4:在bug分支上新建分支。git checkout -b branbug
5:修改bug代码
6:提交修改后的文件。git add filename\ git commit -m "fix bug xxx"
7:切换到bug所在的分支。git checkout branch
8:合并刚才的修复。git merge --no--off -m "note" branchbug
9:删除修复bug的临时分支。git branch -d branchbug
10:切换到第一步正在工作状态的分支。git checkout bran1
11:查看隐藏的工作现场。git stash list
12:恢复的方式有两种:
a、git stash apply,这种恢复方式恢复后stash内容并不删除,需要使用git stash drop来删除。
b、另一种方式是使用git stash pop,恢复的同时把stash内容也删除了。
多人合作:(本地master分支) 对应 (远程origin分支)
1:查看远程信息 git remote
2:查看远程库详细信息 git remote -v
3:拉取最新origion到当前分支 git pull
4:修改内容
5:推送自己的更改到origion :git push origion branch-name
六、note
如果我们改了本地文件,没有commit到某个分支A,那么在分支A下,cat filename是看不到本地改动 的。且在branch1下的commit,在branch2上cat filename也看不到。
一般情况下master分支是主分支,因此要时时刻刻与远程同步;一些修复的bug分支是不需要推送到远程的,只要先在本地合并到主分支上,然后把主分支master推送到远程去即可。
七、简易的命令行入门教程:
https://gitee.com/oschina/git-osc/wikis/帮助
简易的命令行入门教程:
Git 全局设置:
git config --global user.name "gitee0901"
git config --global user.email "944602965@qq.com"
创建 git 仓库:
mkdir tm_work2
cd tm_work2
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://gitee.com/gitee0901/tm_work2.git
git push -u origin "master"
已有仓库?
cd existing_git_repo
git remote add origin https://gitee.com/gitee0901/tm_work2.git
git push -u origin "master"
注意
如果新建远程仓库后,先在仓库新建、更改了文件,本地再首次push会报错Updates were rejected because the tip of your current branch is behindhint:。
解决方法:先拉取remote最新版到本地,git pull origin master --allow-unrelated-histories
,再重新push。