git连接github手把手实践
git安装过程免述,网上一大堆。
github注册过程免述,网上一大堆。
背景:已安装完成的git客户端(自己win7 64位) github注册账户一个
需求: 将本地Repository上传至github仓库;
将远程github仓库clone到本地;
一、将本地Repository上传至github仓库;
1、git部分
git客户端下,终端核心命令是两个git pull ; git push ;分别对应 拉取远端仓库文件 和 上推本地仓库文件。首先需要理解git的仓库机制,此处借用网上的图片:


所有git add上来的文件都是存放在stage块,只有在git commit的时候才会提交至master分支。注意,此时和github远程端还没有任何联系。到此处整个结构暂且留个印象。
开始初始化步骤:
进入 git bash设置提交人和邮箱:
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
--global表示全局,如果单个仓库设置可以不加,只会对本地当前仓库起效。
git config --list 查看配置列表是否生效。
切换到需要建仓的目录,git init初始化一个空库(会在文件夹下看到一个.git文件夹,里面存放相关的管理信息,建仓的目录就是该仓库的名称),新建/拷贝 需要管理的代码文件到仓库目录下;
git add 新增文件名 :此时文件在对应结构图中的stage,此处可以多次add 最后一个commit;

git commit 新增/修改文件名/-a : 进行commit提交,提交完成后文件在对应结构图中的master分支;
命令执行时会进入message版本信息的填写处,一般提交要求信息必输。且此时能在gui下看到待提交的文件。


此处提交信息的录入方式是参考Linux下Vim的编辑方式,可以参考下相关知识;
i 录入信息 Esc退出录入模式 :wq 保存退出
到此为止,一个更新操作保存到本地仓库的步骤就完成了。接下来我们上传到github远端。
2、本地git与github远程端建立联系
首先需要github上建立一个Repository,这个很简单,不再细述;
有两种方式建立联系:
1)使用git bash
git remote add 远端仓库映射名称 github远端Repository地址
如图:

2)使用git GUI
Remote-Add...:

name对应 远程仓库映射名称,即bash下的org
location对应github地址
注意:这两者连接方式是相通的,比如在bash上设置过后,启动GUI发现也是会生效的

至此git本地仓库和github建立关联完毕
3、代码数据上传
1)bash下
git push -u 远程仓库映射名称 本地分支;
例如本次:

2)GUI下
Remote-push...

或者在仓库扫描完毕、提交后,直接点击下方的push按钮。
如果是以https访问,上传是会要求输入github用户名和密码的。
至此,本地仓库上传远程端结束。
二、将远程github仓库clone到本地;
1、bash命令
git init 建立本地自己的一个空仓库
git remote add 建立本地仓库和远程端仓库连接
git pull 远程仓库映射名称 本地仓库
将远程端代码文件clone本地

2、gui

选择clone

target处需要自己编写对应的仓库名,即红框处,并且!此处不需要自建对应的文件夹,否则会报已存在目录的错误,git会自己建一个自己输入仓库名为文件名的文件夹
clone即可。
三、其他
1、SSH方式连接github
在GUI处生成公钥

如果没有口令可默认为空。
生成完毕后会在User下的.ssh文件夹生成以下两个文件:

在github端的setting下录入在GUI中生成的密钥

保存即可。
测试:

四、版本管理
常用命令:
Git 全局设置
git config --global user.name "Administrator" git config --global user.email "admin@example.com"
创建一个新存储库
git clone ssh://git@c7n-gitlab.longi-silicon.com:32222/operation-ithzero001/longi-msp-mechcost.git
cd longi-msp-mechcost
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
推送现有文件夹
cd existing_folder git init git remote add origin ssh://git@c7n-gitlab.longi-silicon.com:32222/operation-ithzero001/longi-msp-mechcost.git git add . git commit -m "Initial commit"
(git commit --no-verify -m 'info') git push -u origin master
推送现有的 Git 存储库
cd existing_repo git remote rename origin old-origin git remote add origin ssh://git@c7n-gitlab.longi-silicon.com:32222/operation-ithzero001/longi-msp-mechcost.git git push -u origin --all git push -u origin --tags
查看本地分支
git branch
创建本地新分支:
git checkout -b new_branch_name
创建远程对应分支(推送本地分支到远程):
git push --set-upstream origin new_branch_name
删除本地分支:
git branch -D branch_name
回退Git向前的分支版本
git reset
git reset [--soft | --mixed | --hard] [HEAD]
git reset –-hard HEAD~3 # 回退上上上一个版本 的 提交(注意是提交)
git reset --merge HEAD~1 # 回退上一个版本 的 合并(注意是合并)
git push origin dev --force #强制push远程dev分支 直接丢弃回退
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,
版本会递增,不影响之前提交的内容
git revert 和 git reset的区别
1. git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
2. 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
3. git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。
创建新的分支版本(例如发版分支)
git branch dev # 1、本地创建一个新的分支git checkout dev # 2、切换到新创建的分支
git push origin dev # 3、将新的分支发布到gitlab上
git branch --set-upstream dev origin/dev (--set-upstream参数已废弃) # 4、跟踪远程分支
git branch --set-upstream-to=origin/dev dev或者
git push -u origin dev
参考
框架图摘自:
廖雪峰的git教程 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013745374151782eb658c5a5ca454eaa451661275886c6000
joshua317 https://www.cnblogs.com/joshua317/articles/4606328.html
浙公网安备 33010602011771号