- 初始化git仓库
git init
- 把某个文件添加到git仓库
git add readme.txt
- 添加所有文件到仓库
git add .
- 把文件提交到仓库
git commit -m "wrote a readme file" (-m "这里是提交说明")
- 查看仓库当前的状态
git status
- 查看文件具体的更改内容
git diff readme.txt
- 查询历史记录
git log
或者更加清晰的
git log --pretty=oneline
- 版本回退
git reset --hard HEAD^
当我们用HEAD时,表示最新的版本。
- 用来记录你的每一次命令
git reflog
- 可以丢弃工作区的修改
git checkout -- yourefile
- 切换分支
git checkout your-branch
- 删除文件
1.从本地 rm test.txt
2.从版本库 $ git rm test.txt
3.$ git commit -m “remove test.txt”
4.删除错了需要回滚:git checkout – test.txt
- 关联远程仓库
git remote add origin git@server-name:path/repo-name.git
如:
git remote add origin https://github.com/YiHongZeng/MessageBoard.git
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
- 克隆git项目到本地
$ git clone http:xxx.com
- 创建分支
git checkout -b dev
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
$ git branch dev
$ git checkout dev
-
查看分支
$ git branch -
合并其他分支的内容到当前分支
git merge dev
- 删除分支
git branch -d dev
-
Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
$ git stash
git stash list命令看看
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了: -
查看远程库的信息
git remote
origin
查看详细信息
git remote -v
origin git@github.com:xxx/learngit.git (fetch)
origin git@github.com:xxx/learngit.git (push)
- git忽略文件,但排除个别文件
忽略指定的文件夹,但排除index.html文件
/storage/cache/*
!/storage/cache/index.html
- 指定拉取代码时候的账号密码
git pull https://username:password@xxx.com/project_name.git
(username不用邮箱的@部分)
- 切换远程仓库地址:
方式一:修改远程仓库地址
【git remote set-url origin URL】 更换远程仓库地址,URL为新地址。
方式二:先删除远程仓库地址,然后再添加
【git remote rm origin】 删除现有远程仓库
【git remote add origin https://xxx.you-url.com】添加新远程仓库
- 导出指定的两次提交记录之间的改动文件(git diff --diff-filter=ACMR 如果文件本删除或报错,不导出这些文件)
git archive -o ./export.zip 7b9cead0f411ce42637f7633cfbb7c9078d3202e $(git diff --name-only a0ca27310aab94205d18c3415bd40b9821de2650 7b9cead0f411ce42637f7633cfbb7c9078d3202e)
a0ca27310aab94205d18c3415bd40b9821de2650 开始 commitId
7b9cead0f411ce42637f7633cfbb7c9078d3202e 结束 commitId
- 多人参与项目开发的时候,经常会遇到代码格式化不一致,在提交的时候出现很多冲突的情况。其中换行符冲突就是一种,在不同的系统平台上是不一样的。UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是 0x0D(CR),后来的 OS X 在更换内核后与 UNIX 保持一致了。但 DOS/Windows 一直使用 0x0D0A(CRLF) 作为换行符。所以会出现使用mac的开发者修改的代码中是lf换行,windows用户使用的crlf换行符,总是互相影响。还有一个原因是,git默认配置了autocrlf为true,也就是说默认所有代码都会被提交成了crlf,但是如果不同开发者自己配置的autocrlf配置不一致(比如,input或者false),就会出现总是互相覆盖的情况。以下是解决换行符冲突的解决方案:
git config --global core.autocrlf false