使用Git Bash上传项目到GitHub

(1). 去GitHub官网注册GitHub账号。
(2). 安装Git。(附上Git-2.11.0安装程序
(3). 配置Git:安装完成后,运行Git Bash程序,输入以下命令来生成SSH key:

ssh-keygen -t rsa -C "email@example.com"

  其中email@example.com代表你的邮箱地址。一路点击回车,然后会在你的~/目录下生成.ssh文件夹,其中~表示当前用户的家目录,例如:C:\Users[你当前登录系统的用户名]。现在访问GitHub官网,登录,点击右上角头像旁边的三角形,依次点击Settings -> SSH and GPG keys -> New SSH key,Title随意写,然后将本地.ssh文件夹下的id_rsa.pub中的内容复制到Key中,然后点击Add SSH key。为了验证是否关联成功,在Git Bash中输入:

ssh -T git@github.com

  如果是第一次关联会提示是否continue,输入yes。如果提示如下信息,则证明关联成功:
  
  image_1b5sfuuntnji35ml1gk0u1vjqm.png-11.9kB
  
(4). 因为Git是分布式版本控制系统,所以每台机器都必须自报家门,现在需要指定用户名和邮箱地址,在Git Bash中输入如下命令:

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

  其中Your Name对应你的用户名,email@example.com对应你的邮箱地址。其中git config命令的–global参数,使用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置。
  
(5). 创建远程仓库:访问GitHub官网,点击New repository,定义你的Repository name,即远程仓库名称,自定义Description,勾选public,为了方便测试,勾选Initialize this repository with a README,然后点击Create repository,远程仓库便建好了:

image_1b5sgerua171519pk10dr3iq1qis13.png-111kB

(6). 创建本地仓库:新建一个文件夹(在这里我在D盘下新建一个GitTest文件夹),在Git Bash中进入这个文件夹,或者直接在该文件夹下右键选择Git Bash Here,然后输入命令:

git init

  会有如下提示:
  
  image_1b5sh7misocn1ct48qh111q1dl31g.png-10.6kB
  
  并且在你新建的文件夹下会生成一个.git文件夹:
  
  image_1b5sh8cc2p92du31agb8ghu0m1t.png-10.8kB
  
  严格地讲,文件夹GitTest叫作工作区,文件夹.git叫作版本库(不算工作区),它们的关系会在后面说明。
  
(7). 关联本地仓库和远程仓库。输入命令:

git remote add origin https://github.com/xiangwanpeng/TestGitHub.git

  其中“https://github.com/xiangwanpeng/TestGitHub.git”是你的远程仓库地址,可以在GitHub网站中进入你的远程仓库,点击Clone or download,复制链接得到。这样本地仓库和远程仓库就关联起来了。
  
(8). 推送本地仓库的文件到远程仓库:现在我在GitTest文件夹下新建一个文本文档test.txt,文档内容随意:
  
  image_1b5shfrg8jat1glq1ot1k9d1d342a.png-18.1kB
  
  在Git Bash中执行命令:

git add test.txt
git commit -m'first commit'

  git add test.txt命令指定将test.txt文件从工作区添加到暂存区(可以使用git add -A命令将所有内容添加到暂存区),git commit -m’first commit’指定将暂存区的内容提交到当前分支(现在默认是master分支),其中单引号内的内容是你这次提交的说明,可以自定义。
  
  image_1b5siasm11p6a4ft9t81vp2ffi2n.png-14.1kB
  
  现在,如果要通过命令git push -u origin master来将本地提交的内容push到远程仓库,会出现如下错误:
  
  image_1b5sik8g81dh1t5ii841ni0mg434.png-30.3kB
  
  这是因为我们在远程仓库中建立了README.md文件,而本地没有,需要先将远程仓库中的内容拉下来。有两种方法,一种是pull命令,另一种是使用fetch+merge命令,事实上pull=fetch+merge,现在我们使用fetch+merge:
  先执行fetch命令,从远程仓库的master分支上拉取内容:

git fetch origin master

image_1b5sjihkj31l1i3u1ovc1t7t1tun3h.png-18.7kB

  再执行merge命令将从远程仓库master分支上的拉取的内容合并到当前分支(当前默认的也是master分支)上:(Git 2.9及以上的版本中,merge和pull的命令将不允许两个不相关历史的分支进行合并,除非加上–allow-unrelated-histories,否则会报fatal: refusing to merge unrelated histories)

git merge origin/master --allow-unrelated-histories

  按回车后,会进入文本编辑模式,先输入冒号,然后输入wq按回车即可退出:
  
  image_1b5sjjbhk1v511n9mn9213bn1cpf3u.png-12.1kB
  
  现在打开工作区目录GitTest,可以发现远程仓库的README.md文件被拉取下来了:
  
  image_1b5sjl9cn11ei4st102713f6hkc4b.png-21.3kB
  
  现在再执行push命令:(关联仓库后,第一次push要加上-u参数,这样Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令,即执行命令git push origin master就可以了)

git push -u origin master

  执行成功:
  
  image_1b5sjq5sc1eqls19rn1nd21m744o.png-26.2kB
  
  而且在远程仓库可以看到,test.txt文件被push上去了:
  
  image_1b5sjrva51534130ih4e1dfq1pll55.png-82.1kB
  
  到这里,就介绍了如何从本地将文件推送到远程(一般是add + commit + push),以及从远程将文件拉取到本地(一般是fetch + merge,或者pull)。
  
补充说明:
工作区,版本库和暂存区:
工作区(Working Directory):就是在电脑里能看到的目录,比如我的GitTest文件夹就是一个工作区:(其实.git是隐藏目录,现在我设置不显示隐藏目录就看不见了)

image_1b5sk94b9mebs011hcfolg1ffq5i.png-20.7kB

版本库(Repository):工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库,设置显示隐藏文件即可看见:

image_1b5skb7aui4a1psepnnji4lcc5v.png-22.7kB

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD:

image_1b5skcdjm1jod1541156i11onvmj6c.png-71.7kB

在我们执行add命令时,是将文件从工作区添加到暂存区,当执行commit命令时,是将暂存区中的所有文件提交到当前分支。可以简单地理解为:需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。而且,一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值