入门篇
github 上创建仓库 GitTest(勾不勾选创建文件readme均可)
本地找到合适位置(例如F:)打开 git bash
若已有项目代码文件夹,则copy至F:路径下,e.g. GitTest,
没有就mkdir -> cd
git init
git status //(可选)查看状态
git add .
git commit -m “first commit - add a project”
git remote add origin https://github.com/XXX/xxx.git
git push -u origin master
命令行解释
git init
建好一个空仓库以后,多了一个
.git
的目录。这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。最开始git status,会发现很多untracked files, git add . 之后就好了
git add .
告诉git,把文件添加到仓库
git commit -m “add files”
告诉git,把文件提交到仓库。 -m后是本次提交的说明,可以用来介绍自己做了哪些改动。
执行成功后会告诉你多少文件做了哪些改动
注:可以分次add,然后一步commit
即
1
2
3$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."git remote add origin https://github.com/XXX/xxx.git
①关于本命令
把已有的本地仓库与github上创建的远程库关联
origin 是远程仓库的别名,以后可以使用这个短的别名代指长的url,这个是默认别名,也可以起自己喜欢的。
②如果前面遇到一些问题,可能第二次remote的话会遇到
1
fatal: remote origin already exists.
解决办法:
git remote rm origin
git remote add origin https://github.com/XXX/xxx.git 即可
git push -u origin master
①关于本命令
把本地库所有内容推送到远程库上
第一次加 -u
之后只要 git push origin master
②可能会遇到
1
2
3
4
5
6
7
8To https://github.com/xxx/xxx.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/xxx/xxx.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.出现这个问题的其中一个原因就是在远程创建仓库的时候,勾选了Initialize this repository with a README这项,导致远程仓库不为空。
解决办法:先将远程仓库的内容合并到本地,然后再上传,命令如下:
- git pull –rebase origin master
- git push -u origin master
(被大佬姐姐强行拷问rebase含义,拔苗助长,萌新不应该这么早接触这个命令吧捂脸
rebase简介:
\git pull –rebase**
- 把本地 repo. 从上次 pull 之后的变更暂存
- 恢复到上次 pull 时的状态
- 合并远端的变更到本地
最后再合并刚刚暂存下來的本地变更
就是你本地的工作仓库的默认分支是master,origin/master是远程默认分支,本地和远程关联,由于远程有一个readme,相当于修改了远程分支,导致本地和远程不一致,这时,git pull –rebase origin master,把本地变更暂存,合并远端的变更(也就是 readme文件)到本地,再合并刚刚暂存的本地变更
参考链接
https://blog.csdn.net/JK198310/article/details/37881033 git rebase merge 区别
https://blog.csdn.net/weixin_30954607/article/details/98890341 git –rebase 实现的具体过程
https://blog.csdn.net/u013262534/article/details/81383058 git rebase 不同情况下的合并
(e.g.) 有一条代码线master线,同时有条新需求开发线dev线。master线从B开出分支dev线后,一直在做bug修复(C,D)。如下图:
E F G (dev)
A B C D (master)
此时,dev线需要合并master线修复的bug,以免重复开发。那我们可以用到git rebase命令。
git rebase –onto master dev,成功后,dev线就会合并C和D提交的记录。
EFG (dev)
ABCD (master)