参考文档 git基本使用 点击->git教程<-- git 常用命令参考
- 简单了解Git
有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。 但额外增加的工作量却微乎其微。 - 本地版本控制系统
许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。 这么做唯一的好处就是简单,但是特别容易犯错。 有时候会混淆所在的工作目录,一不小心会写错文件或者覆盖意想外的文件。
- 集中化版本控制系统
可以让在不同系统上的开发者协同工作,有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。 而管理员也可以轻松掌控每个开发者的权限,并且管理一个 CVCS 要远比在各个客户端上维护本地数据库来得轻松容易。缺点是中央服务器的单点故障。 如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。 如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据。 - 分布式版本控制系统
客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。
- 直接记录快照,而非差异比较
- 近乎所有操作都是本地执行
- Git 保证完整性
Git 有三种状态,你的文件可能处于其中之一:已提交(committed)、已修改(modified)和已暂存(staged)。 已提交表示数据已经安全的保存在本地数据库中。 已修改表示修改了文件,但还没保存到数据库中。 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
基本的 Git 工作流程如下:
-
在工作目录中修改文件。
-
暂存文件,将文件的快照放入暂存区域。
-
提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。
如果 Git 目录中保存着的特定版本文件,就属于已提交状态。 如果作了修改并已放入暂存区域,就属于已暂存状态。 如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。
Git常用命令:
- git init 初始化
- git status 查看文件状态
- git add . 追踪文件,把文件添加到暂存区
- git commit -m '注释' 把暂存区的文件提交到本地的版本库中
- git remote add origin https://github.com/neglect/test.git 建立本地仓库和远程仓库的连接,origin是远程仓库的别名,远程仓库的地址是 https://github.com/neglect/test.git 在GitHub上创建的仓库。
- git push -u origin master 把本地版本库中的文件推送到服务器版本库中,-u 是本地分支和远程分支关联(如果远程仓库没有这个分支则会创建)(一个分支关联一次就不需要再加-u) ,master 是版本库的一个分支。版本库理解成一个目录的话,那么分支可以认为是该目录下的一个子目录。
- ssh-keygen -t rsa -c "github的邮箱" 执行此命令前需要先查看是否已经有ssh密钥 cd ~/.sh(Linux) cd C:\Users\fb (Windows)查看是否有.ssh目录有则备份后删除(fb是用户名,如果是管理员则是administrator)执行命令后,会生成公钥和私钥,id_rsa.pub 文件里的字符串就是公钥。
在GitHub里创建文件如上图,然后把字符串复制进去即可。这样就不需要每次 git push的时候输入用户名和密码了。
-
git config --global user.name "yourname" git config --global user.email "youremail"
- git log 查看项目的日志 git log <file> 查看指定文件的日志 git log . 查看当前目录的日志
- git log -p -1 #查看最近1次的文件变更 -2 就是倒数第二次的
- git reset --hard ^ 回退到上一个版本 git reset --hard ^^ 回退到上上个版本,以此类推
- git reset --hard 索引ID 即可回退到指定版本,索引ID是在 git log 的时候会显示的。
- git branch 查看有哪些分支
- git branch abc 就创建了一个abc分支
- git checkout abc 切换到abc分支
- git merge origin/abc 如果你当前是在master分支,输入这条命令,就会把abc分支合并到master分支。
- git fetch 查看服务器版本库哪些分支更新了
- git diff 查看合并后的代码是否有冲突
- git remote -v 查看你要指向的远程repository
- git add 撤销文件: git reset HEAD 撤销上一次add的全部文件, git reset HEAD XXX/XXX/XXX.java 撤销指定的上一次添加的文件
- git add 相关参数
git add . 提交被修改的和新建的文件,但不包括被删除的文件
git add -u --update update tracked files 更新所有改变的文件,即提交所有变化的文件
git add -A --all add changes from all tracked and untracked files 提交已被修改和已被删除文件,但是不包括新的文件
- git clone -b 分支 地址 clone远程仓库指定分支的内容
- git remote -v 查看当前项目的远程地址,是否正确
- git remote set-url origin 远程仓库地址 修改origin对应的远程仓库地址
- git branch 查看本地分支 git branch -a 查看远程所有分支列表 (删除的也还会显示出来) (绿色表示当前项目所在分支,红色表示远程分支列表)
- git show commit_id 查看commit内容
- git 在Windows、Linux都可以使用。不要在线上服务器使用push, 线上服务器只使用pull , 把代码拉倒服务器上即可。安全。
- 原则上是不同目的的修改是放在不同的 commit 里的,修改一个功能做一次commit,如果针对不同功能进行commit,分多次提交,以后版本回退方便,修改不同功能一次性提交以后可能也会有未知麻烦。注释尽可能清晰,描述清楚。
- 可参考的文章:https://blog.csdn.net/baimafujinji/article/details/79597654
- .gitignore https://www.jianshu.com/p/74bd0ceb6182