基本使用
1.初始化一个本地仓库(第一次提交需要初始化):
git init
2.将README.md文件添加到缓存(第一次需要添加该文件)
git add README.md
3.将文件添加到缓存(.代表所有文件)
git add .
4.提交缓存中的代码至本地仓库
git commit -m "本次提交的相关描述"
5.关联远程仓库(第一次需要关联,后期只需要直接提交)
git remote add origin 远程仓库地址
6.提交 本地仓库 的代码至 远程仓库master分支 下
git push -u origin master
细节
-
因为git是分布式版本控制系统,所以需要填写用户名和邮箱作为标识,可以设置全局的,也可以对某个仓库指定不同的用户名和邮箱。
局部设置:
git config user.name 你的用户名 git config user.email 你的邮箱
全局设置:
git config --global user.name 你的用户名 git config --global user.email 你的邮箱
查看配置:
git config --list
-
每次提交代码前最好先拉取一下服务器的代码,用以更新本地代码,避免覆盖他人的代码。(默认拉取master分支的代码)
git pull
拉取dev分支的代码:
git pull origin dev
-
拉取代码后,查看当前项目中有哪些文件被修改过(vscode的项目后面对应的字母)
git status
- Untracked: 未跟踪,此文件在文件夹中,但并没有加入到git库,不参与版本控制。通过
git add
状态变为Staged
- Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为
Modified
. 如果使用git rm
移出版本库, 则成为Untracked
文件 - Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过
git add
可进入暂存staged
状态, 使用git checkout
则丢弃修改过, 返回到unmodify
状态, 这个git checkout
即从库中取出文件, 覆盖当前修改 - Staged: 暂存状态. 执行
git commit
则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify
状态. 执行git reset HEAD filename
取消暂存, 文件状态为Modified
- Untracked: 未跟踪,此文件在文件夹中,但并没有加入到git库,不参与版本控制。通过
-
将状态改变的代码提交至缓存
提交全部修改过的文件
git add .
提交指定文件
git add 文件名称
提交指定路径下的所有 被修改过的被跟踪代码文件
git add -u 路径
提交指定路径下的所有 被修改过的未被跟踪代码文件
git add -A 路径
报错
-
在第一次提交时(git push -u origin master),我报了如下错误
To ***提交地址*** ! [rejected] master -> master (fetch first) error: failed to push some refs to '提交的地址' 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.
原因:因为第一次提交时没有将README.md文件提交到缓存区,而GitHub上的README.md文件又不在本地代码目录结构中,导致项目目录冲突,所以可以先拉取合并一下远程仓库上的代码再进行提交。
拉取代码:
git pull --rebase origin master
-
拉取项目时如下错误
$ git pull --rebase origin master error: cannot pull with rebase: You have unstaged changes. error: please commit or stash them.
原因:因为本地有更改的代码没有提交,可以提交或者暂存后在拉取代码。
解决方式:
提交:
git add . git commit -m "提交描述"
暂存:
git stash
-
关联至远程仓库时(git remote add origin 远程仓库)报如下错误
error: remote origin already exists.
原因:远程源已经存在。
解决方式:先查看是否是我们需要的远程仓库,如果是,直接push即可;如果不是,则删除现有的远程仓库,然后再重新关联新的远程仓库即可。
查看远程仓库的信息:
git remote -v
删除远程仓库:
git remote rm origin
补充知识
Linus 发现在命令行下选择要提交的修改,是一件很麻烦的事情,所以,Linus 就在 commit 之前,发明了一个暂存区的概念,可以随意的把各种修改的文件放进去,这样就可以用多个指令精确的挑选出我们需要提交的所有修改,然后再一次性的(原子性的)提交到版本库,问题就完美的解决了 。
参考链接:
https://blog.csdn.net/s_y_w123/article/details/112465793
参考链接(上传本地代码至GitHub):
https://zhuanlan.zhihu.com/p/193140870