IDEA右键能直接查看该文件git提交过往记录
经验教训
- 提交到master之前, 记住要先merge一下master, 然后再让master merge!!!
常用命令
- git clone 项目url(clone某个项目)
- 删除远端分支: git push origin :feature
- 查看远程库: git remote(-v 显示详细信息)
提交命令
- git status(查看项目状态)
- git add(添加文件)
- git commit(添加评论,并且将变更提交到本地工作区)
- git push origin branch(发布到远端服务器)
删除文件
- git rm test.txt
- git commit -m "remove test.txt"
分支相关
- git branch -r 查看远端分支
- git branch -a 查看本地分支和远程分支
- git branch [branch-name] 新建分支,但不切换
- git checkout -b [branch] 新建分支,并切换
- git checkout [branch-name] 切换到指定分支
- git branch --set-upstream-to [remote-branch] [branch] 在现有分支和远端分支之间建立关系
- git branch 查看当前分支
- git branch -d <name> 删除分支(-D 强行删除)
- git merge <name> 合并某分支到当前分支
- git checkout -b dev origin/dev(将远程分支dev拉取到本地的dev[未建立])
解决冲突
同一份代码, 提交的结果不一样, 如何裁定?
- git pull(将远端服务器的代码拉取下来)
- git diff(查看不一致的位置,并且修改)
- 再次重复提交命令。
回到过去
- git log(查看git日志)
- git reset --(hard/soft) commit_id
回到未来
- git reflog(查看所有的commit 和 reset 操作 包括已经删除的,git log不能查看已经删除的commit)
- git reset --(hard/soft) commit_id
git概念
- 版本控制管理工具(控制和管理代码)
- 集中式版本控制(有一台中心服务器用来控制和管理版本,各个终端通过这个服务器来协同合作),分布式版本控制(每个终端都控制和管理自己独立的版本,需要协同合作的时候相互推送自己的版本,但实质上分布式也通常通过一个充当中心服务器的终端来协同合作)
- 版本库:使用git init / git clone后, 会在文件夹中生成一个.git的隐藏文件夹, 这个文件夹(.git)就是一个git的版本库。文件夹里有.git文件夹里的修改删除将会被git追踪。
-
工作区和暂存区:文件夹里排除.git文件夹 的东西被称为 工作区,而这个.git文件被称为 版本库。
-
撤销修改:1. 这个修改未add到暂存区,
-
分支:
。HEAD始终指向你当前分支的最新版本。创建一个新的分支,只不过是在原有分支的情况下多建立一个指针指向当前分支。
-
解决冲突:
, 先进行merge, 如果两个版本有冲突的话, 将冲突的文件进行修改后add, commit,就自动合并了,然后选择性删除另一分支。
-
- 如果你在dev下开发一半,突然要切换到主分支,或者XX分支进行BUG修复,咋办呢?思路:1,先保存住工作区的内容 (git stash)。2,切换到某个分支(git checkout branch)。3, 搞出一个修复bug的分支(git checkout -b bugBranch)。4,解决问题,到主分支merge一下(git checkout branch、 git merge bugBranch)。5,继续开发你的dev(git checkout 、git status、 git stash pop)。
- 当你clone一个项目的时候,git 会自动把本地的master分支和远程的master分支对应起来。远程仓库默认名字叫origin。
- rebase TODO
-
标签实质是一个commit,只不过名字比较好记。标签和一个commit一一对应。用来表示某个版本。
- 配置别名,修改用户目录下的.gitconfig文件。
- git merge实质是两个分支的最新commit和最原始的commit(两个分支分开的地方)进行比对,如果如果没有操作冲突,就自动merge,否则需要修改