git基础使用
在本地初始化仓库
git init
将已有项目clone到本地
git clone git@github.com:xxx/yyy.git
如果显示(yes/no/[fingerprint])情况输入yes
如果显示报错(Permission denied)时,需要先配置通信公钥
配置公钥
首先打开终端,输入ssh-keygen -t rsa -b 4096 -C "your_email@example,然后一直按回车,最后会生成公钥文件,最后再输入cat ~/.ssh/id_rsa.pub即可查看公钥文件内容
提交到本地仓库
git add.
git commit -am "add new file"
其中引号中的内容可以随意填写,相当于备注。
推送到远程仓库
git push origin main
整体流程
git 进阶
查看文件状态使用git status命令查看,其中状态有以下几种:
- 未追踪状态 Untracked 使用git add.进入暂存区
- 放入暂存区未提交状态 Staged 使用git commit 进行提交
- 提交后被修改状态 Modified 提交后被修改所以需要再次提交,输入
git add .
git commit -m "提交文件的修改"
这行代码等同于
git commit -am "提交文件的修改"
忽略文件
日常工作中需要忽略一些文件进入Git的管理,我们就可以创建一个名字为.gitignore的文件.然后在文件中写入要忽略的文件,例如
# 忽略.a为后缀的文件
*.a
# 尽管上面忽略了.a为后缀的文件,但不忽略lib.a
!lib.a
# 只忽略当前目录下的TODO文件,但不忽略子目录下的TODO文件
/TODO
# 忽略build/目录下的所有文件
build/
# 忽略doc/notes.txt,但不忽略 doc/server/a.txt
doc/*.txt
# 忽略doc/目录下的所有的 .pdf文件
doc/**/*.pdf
删除文件
it rm readme.md
: 把readme.md文件移除的这个变动暂存,并且本地也删除 readme.md文件
git rm --cached readme.md
: 把readme.md文件移除的这个变动暂存,但本地保留readme.md文件(该文件变成未追踪状态)。
git rm -f readme.md
:对于被提交后做了修改(处于已修改状态)的文件,想把文件移除的变动暂存必须加-f
参数
场景二:
小A在提交代码时不小心把一个用于本地测试的数据库文件 database 一并提交并推送到Github,导致Github源码体积增加几百M。现在他需要在仓库中删除database文件,但本地依然保留该文件(本地开发需要)。
# 本地保留database, 把删除的变动暂存
git rm --cached database
# 提交变动。注意:此地不需要执行 git add .
git commit -m "删除无关文件"
touch .gitignore
echo database > .gitignore
git add .
git commit -m "添加.gitignore"
git push origin master
撤销文件
当你提交了后发现忘记了暂存某些需要的修改,可以输入
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
最终你只会有一个提交——第二次提交将代替第一次提交的结果。
取消变动的暂存
git reset HEAD <file>
来取消暂存。
撤消对文件的修改
git checkout -- [file]
用来撤销文件的修改。
远程仓库的操作
git clone git@github.com:jirengu/test.git
会把远程仓库完整的信息克隆到本地。
使用 git remote -v
查看远程仓库信息。
远程仓库地址默认的名字叫 origin
。
添加信息的地址、修改地址、删除地址
git remote add origin git@github.com:jirengu/test.git
git remote add gitlab git@github.com:jirengu/test.git
git remote set-url gitlab git@github.com:jirengu/demo.git
git remote remove gitlab
推送项目
git push origin master
git push gitlab master