参考资料:
目录
1. 配置
安装完成后, 打开git bash, 用 git config --global 指令进行个人信息的配置:
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
2.创建仓库
如在 "~/Desktop/git_practice" 路径下执行 git init 命令, 会在 "~/Desktop/git_practice" 路径生成一个.git目录(隐藏),这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
3.把文件放到仓库
把文件(同样要求是"~/Desktop/git_practice" 路径下的文件)放到仓库,和把大象放到冰箱需要3步相比,把一个文件放到Git仓库只需要2步
①用命令 git add把文件添加到仓库
git add <filename>
示例:
②用命令 git commit 把文件提交到仓库
git commit -m "message"
示例:
解释一下git commit命令, -m后面输入的是本次提交的说明,可以输入任意内容,最好是有意义的,这样就能从历史记录里方便地找到改动记录。
为什么Git添加文件需要两步呢?因为commit可以一次提交很多文件,所以你可以多次add
不同的文件,比如:
git add file1.txt
git add file2.txt file3.txt
git commit -m "add 3 files."
4.查看版本历史信息
在实际工作中,我们脑子里怎么可能记得一个几千行的文件每次都改了什么内容,不然要版本控制系统干什么。Git中,我们用 git log 命令查看版本的历史记录
示例:
5.版本回退
要把当前版本回退到之前的版本,使用git reset命令:
HEAD表示最新的提交的版本,上一个版本是HEAD^,上上个版本是HEAD^^,往上100个版本可以写成HEAD~100, 也可以通过commit id进行回退
(输入commit id的前几位即可, 不必全部输入,能与其他版本区分开就行,)
git reset --hard HEAD^
git reset --hard commit_id
如果回退到了某个版本, 然后后悔了, 想恢复回去怎么办?找不到新版本的commit id怎么办?
在Git中,总是有后悔药可以吃的。当你用 git reset --hard HEAD^ 回退到之前的版本时,再想恢复回来,就必须找到要恢复版本的的commit id。
Git提供了一个命令 git reflog 用来记录你的每一次命令:根据记录中的commit id, 通过git reset --hard commit_id 来实现版本恢复.
示例:
版本回退总结:
①HEAD的指向最新提交的版本,Git允许我们在版本历史间穿梭,命令:git reset --hard commit_id
②穿梭前,用 git log 查看提交历史,以便确定要回退到哪个版本
③要重返未来,用 git reflog查看命令历史,以便确定要回到未来的哪个版本
6.配置远程仓库
Github网站提供Git仓库托管服务,注册一个GitHub账号,就可以免费获得Git远程仓库。由于本地仓库和GitHub仓库间传输是通过SSH加密的, 所以需要一些设置.
①创建ssh key
看看用户主目录下有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub两个文件,如果有就跳到下一步。否则打开Shell(Windows打开Git Bash),创建ssh key.
ssh-keygen -t rsa -C "youremail@example.com"
需要把邮件地址换成自己的,后面一直回车,使用默认值.
顺利的话,可以在用户主目录里找到.ssh目录,里面有了这两个文件,它们是ssh key的秘钥对,id_rsa是私钥, 不能泄露出去, id_rsa.pub是公钥,可以放心告诉任何人
②github上设置公钥
登陆GitHub, 在设置中找到 "SSH and CPG keys", 点 "new SSH Key" ,填上任意Title,在Key栏中粘贴 id_rsa.pub 的内容
7.添加远程仓库
点击github右上角的+号, 然后选择new repository创建一个远程仓库, 再填写 repository name 后直接点 create repository (建议此时不要点add README file, 因为会导致一开始远程仓库和本地仓库间就存在文件的差异), 这样就完成了一个远程仓库的创建啦.
为本地仓库添加远程仓库的操作如下:
在本地仓库中执行: git remote add name url, 为该本地仓库添加一个远程仓库,并为其指定一个别名.
示例中, origin是我对远程仓库取的别名, git@github.com:iakhZ/learngit.git为该远程仓库对应的url
现在github上的远程仓库已经和本地的仓库关联上了.
可以用 git remote –v 命令, 显示远程仓库使用的 Git 别名与其对应的 URL
下一步,就可以把本地仓库的所有内容推送到远程仓库上.
8. 本地到远程的推送和拉取
1)把本地仓库的内容推送到远程,用git push命令,把当前分支(即 master)推送到远程.
用git branch 命令查看当前分支
用git branch -a命令查看所有分支
①先把文件 add 和 commit 到本地仓库
②使用命令: git push -u origin master 完成本地仓库到远程仓库的推送.
对-u参数的解释: 由于远程库是空的, 第一次推送master分支时, 加上-u参数, Git不仅会把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来,以后推送或拉取时可以简化命令(即直接使用git push/git pull) (参考了这个和这个的解释)
执行命令后刷新github对应的仓库, 可以看到有main/master两个分支, 在master分支下可以看到刚刚push上去的两个文件.
main/master分支的问题, 参考了下这篇帖子. 在廖的帖子中提到是因为美帝历史遗留下来的种族歧视原因导致不能用master(可译为主人), 于是github把默认分支换成了main了, all lives matter.
那么可以用git branch -m master main命令, 重命名当前分支(非必须)
这样就可以把本地仓库的文件推送到远程仓库的main分支上去了.
2)把远程仓库中的内容拉取到本地仓库, 用git pull命令
先在远程仓库新建一个gitpractice文件, 然后在本地仓库中执行git pull, 就可以获取这个文件了.
如果远程仓库的文件被修改了(比如添加了一行), 执行git pull命令, 本地仓库中的文件也会更新.
9.从远程库克隆
github上有很多优秀的开源项目, 比如稚晖君做的机械臂(Dunmy-Robot).
要把某个项目克隆到本地, 会用到git clone命令.
在github上找到对应的项目, 复制code/local/clone的里面SSH的内容(其他的也行), 然后执行:
git clone <xxxx> 就可以把相应的项目克隆到本地.
10.删除远程库
如果想删除远程库(即解绑本地和远程的连接),可用git remote rm <name>命令. 建议在使用前先用git remote -v查看远程库信息, 再次绑定远程库依然用git remote add <name> <url>命令. 这说明此处“删除”其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库.
对于git push -u origin main中-u参数的补充说明:
当按照上述操作重新为本地仓库添加了远程仓库后, 查看所有分支并没有看到远程仓库的main.
此时直接用git push是会报错的, 只能用git push origin main
但如果一开始用了git push -u origin main命令, 再查看分支就能看到远程仓库的main分支了
此时再push的话用git push命令即可.
其他知识点:
1.工作区和暂存区的概念, 点击跳转
2.管理修改, 撤销修改, 点击跳转
3.比较文件的差异(git diff命令的使用), 点击跳转
4.删除文件, git rm <filename> 再 git commit -m "message"
示例: