一、查看所有配置:
git config --list
二、设置git软件的用户名和邮箱(自己设置的配置会生成一个.gitconfig文件,放在电脑用户文件夹下):
git config --global user.name "tan":配置用户名为tan
git config --global user.email "tan@xxx.com":配置用户名的邮箱为tan@xxx.com,没有校验,随便写
三、创建仓库:
git init:在命令行的文件夹下创建一个空本地仓库
四、本地仓库的操作
1、查看文件状态
git status:可以查看分支名(branch)和文件的状态,如已修改(Modified),未跟踪的(untracked),未修改的不会有提示
git status -s:简洁版的git status,
红色M代表文件修改了但未加入暂存区,
绿色M代表文件修改了并且已加入暂存区,
??代表未跟踪的,
A代表文件已被加入到暂存区
等等
2、未暂存的文件添加到暂存区和解暂存
git add 文件名(fileName):将文件加入暂存区
git reset 文件名(fileName):将暂存区的文件取消暂存
3、暂存区文件的提交(commit)
git commit -m "提交的日志信息":不带文件名会提交暂存区所有的文件
git commit:提交全部暂存区文件,并打开一个编辑器,让你写入提交日志('i':插入,'ESC':退出编辑,':wq':保存并退出)
git commit -a -m "提交的日志信息":该语句可将不是暂存区的文件直接commit,因为-a就代表提交到了暂存区。两步合为一步了
4、已commit的文件删除
git rm 文件名:会放在暂存区,在commit之后就删除了。如果直接在文件夹中删除,则不会放在暂存区,
要将其删除,就必须先add进暂存区,再commit
5、将文件添加至忽略列表
- 原因:自动生成的文件,比如日志文件,class文件就不需要通过git提交,git一般只负责提交源代码。这种情况下,我们可以在工作区中创建一个.gitignore文件(文件名固定,可以在git命令行中用touch .gitignore语句创建)
忽略规则:
1、 *:通配符(匹配任意)
2、 !(取反):比如!hello.class文件,git就不会忽略掉hello.class文件
3、 /xxx:忽略当前目录下的xxx文件
4、 doc/:忽略当前目录下的doc文件夹下的所有
5、 doc/*.txt:忽略当前目录下的doc文件夹里的所有txt文件
6、 doc/**/*.class:忽略当前目录下的doc文件里的所有文件夹里的class文件
6、查看git操作日志
git log:因为日志太多,不会一次性全部显示,按回车会显示下面的,按Q会退出。
五、远程仓库的操作
1、查看本地仓库连接的远程仓库
git remote:可以查看到本地关联的的远程仓库的别名(粗略查看)
git remote -v:显示远程仓库地址(详细点)
git remote show 远程仓库的别名(shortname):可查看更多信息(更详细)
2、添加(add)远程仓库(一个本地仓库可以添加多个远程仓库)
git remote add 仓库别名(shortname) 远程仓库的地址(url):
3、clone远程仓库
git clone 远程仓库的链接(url):比如https://gitee.com/code_zhisheng/myFirstRepository.git,
克隆远程仓库到此命令行文件夹下面
4、移除(rm)远程仓库
git remote rm 仓库别名(shortname):该命令不会影响到真正的远程仓库
5、从远程仓库中抓取(fetch)与拉取(pull)
1、抓取(fetch)
git fetch 仓库别名(shortname) 远程仓库的分支名(branches):从远程仓库获取最新版本带本地仓库,不会合并(merge)
如果仓库别名就是默认的origin,分支名为master,则这两个可以省略
git merge origin/master:合并到本地仓库
2、拉取(pull)
git pull 仓库别名(shortname) 远程仓库的分支名(branches):从远程仓库获取最新版本带本地仓库,会合并(merge),
但本地仓库已提交其他文件时不能成功拉取,
如果本地仓库有其他文件,则会报refusing to merge unrelated histories,因为怕覆盖掉你原本的文件,可以下面语句允许合并
git pull 仓库别名(shortname) 远程仓库的分支名(branches) --allow-unrelated-histories:
6、推送(push)到远程仓库
git push 仓库别名(shortname) 本地仓库的分支名(branchName):需要对应网址的账号密码验证
该账号和密码会保存在 控制面板-> 用户账户 -> manage windows credentials,这样下次推送时就不需要再次验证了
六、Git分支操作
1、查看分支
git branch:列出所有本地分支
git branch -r:列出所有远程分支
git branch -a:列出所有本地和远程的分支
git branch -vv:查看所有本地分支,并可查看是否和远程分支建立映射关系
2、创建和切换分支(在正在使用的分支下创建新的分支,新的分支将会复制正在使用的分支的所有内容进行初始化 )
git branch 新分支名(newBranchName):在本仓库中新建一个分支
git checkout 已存在的分支名(existBranchName):切换到指定的分支下,前面会有*提示
3、本地仓库分支推送到远程仓库
git push 仓库别名(shortname) 本地仓库的分支名(branchName):
4、合并分支和解决冲突
git merge 分支名(branchName):将指定的分支名的分支文件合并到正在使用的分支里(branchName -> 正在使用的分支)
如果这两个分支都在相同部分做了修改,则会产生冲突,需要我们自己去解决。当解决了之后,再用
git add 冲突文件名(conflictFileName),
git commit
完成冲突分支的标记合并
5、删除分支
git branch -d 分支名(branchName):根据分支名删除分支,未push的不能删除
git branch -D 分支名(branchName):根据分支名强力删除分支,未push的也能删除
git push 远程仓库的别名(shortname) -d 分支名(branchName):删除远程仓库中的分支
6、修改分支名
git branch -m oldName newName:oldName是当前分支名,newName是想改成的名
7、本地更新远程仓库分支
git remote update origin --prune
git remote update origin -p
8、分支追踪(名字不同也可以)
1.git checkout -b local-branchName origin/remote-branchName:
在本地新建分支local-branchName,并和对应的远程分支remote-branchName做映射,最后再checkout并pull
2.git branch --set-upstream local-branchName origin/remote-branchName:
将本地分支local-branchName分支追踪远程分支origin/remote-branchName(建立映射关系)
3.git branch -u origin/remote-branchName:
将当前分支跟踪远程分支origin/remote-branchName
七、Git标签操作
标签:指的是某个分支的某个特定时间点的状态,记录了截止到当前时间的当前分支的全部内容。根据标签,我们可以很方便的切回到标签标记时的状态
1、创建、列举、推送标签
git tag 标签名(tagName):创建一个新标签
git tag:列出所有标签
git show 标签名(tagName):查看tag的信息
git push 仓库别名(shortname) 标签名(tagName):将指定的标签推送至远程仓库
2、检出标签
git checkout -b 新的分支名(newBranchName) 标签名(tagName):新建一个分支,根据标签名指向指定的标签
3、删除标签
git tag -d 标签名(tagName):删除本地仓库中指定的标签
git push origin :refs/tags/标签名(tagName):删除远程仓库中指定的标签
八、使用TortoiseGit操作Git
Windows Shell Interface to Gittortoisegit.org直接使用默认设置安装好,点击鼠标右键进行操作
![fbd319ce982351752b3eba172023d0d5.png](https://i-blog.csdnimg.cn/blog_migrate/dcf9896a549b1e6e03ac265abda300a5.jpeg)
文件图标指示:
- 绿√:已commit
- 红!:untracked(未跟踪的)
- 蓝+:已add(已添加到暂存区)
- 啥都没有:一般就是ignore的
九、IDEA里使用Git
1、配置git软件的位置
![6a1fa6d3034c37414707d408be0184fe.png](https://i-blog.csdnimg.cn/blog_migrate/6a3e844efcf8d79e5fd5fec84dc8868e.png)
添加好后可以点击Test进行验证
2、添加.gitignore文件(IDEA可以下载ignore的插件,里面有大量的模板,File -> new 创建)
对于IDEA来说,.idea文件夹、maven工程编译后的target文件夹,.iml文件等等都是不需要提交到仓库的,但.idea文件夹在创建工程就有了,会缓存,所以添加到了.gitignore还是会有红色的叹号,可以使用以下语句清除缓存
git rm -r --cached .idea:清除.idea的git缓存
3、git使用
![55998b095a6a5478d4cd0e1e8ee70a50.png](https://i-blog.csdnimg.cn/blog_migrate/d03b6e6a7600a6c6eeeb34f952f950fc.jpeg)
十、SSH(secure shell)协议克隆远程仓库
1、在Git提供的命令行工具Git Bash生成公钥和私钥
ssh-keygen -t rsa:生成Git的公钥和私钥(一直回车)
生成的文件会放在当前user的.ssh文件夹下
![8a09ffc6c6dd3699b1e979d156db5560.png](https://i-blog.csdnimg.cn/blog_migrate/3752e3cf77f3d9066390b35c401fad05.png)
2、将公钥添加到对应的网站上
- GitHub添加公钥:setting -> SSH and GPG keys -> New SSH key,公钥文件夹的全部字符串复制粘贴到key里面,再起个Title就行,克隆仓库就可以使用SSH方式了
- Gitee(码云)添加公钥:setting -> SSH keys,类似上面操作就行
git clone SSH方式的url:使用SSH协议clone远程仓库