git 配置,可以重复设置,二者相对应
git config —global user.name "ALguojian"
git config —global user.email "jzhszy@foxmail.com"
重置远程库的账号密码,针对https连接
git config --global credential.helper store
git常用命令
git branch -m devel develop (重命名本地分支名字,命名之后,直接提交到远程,然后需要将本地和远程分支同步一次)
git branch –set-upstream-to=origin/develop (同步本地和远程连接)
git rm -r –cached . (删除在git管理中文件的缓存)
git rm -f aa.build (强制删除在git管理中文件的缓存)
mkdir test(创建文件夹test)cd test(切换到test目录)touch a.md(新建a.md文件)git init(初始化git仓库)默认在master分支git status(查看状态)git add(缓存,待提交)git add .(添加所有文件)git add -u(将文件的修改、文件的删除,添加到暂存区)git add -A(将文件的修改,文件的删除,文件的新建,添加到暂存区)git rm --cached(删除缓存)git fetch origin(自动获取更新远程分支)git commit(提交) git commit -m “第一次提交”git commit -am "提交信息"(所有的改动都更新到缓存区并提交,相当于git add .和git commit -m 的合并)git log(commit记录)git branch分支(查看本地分支)git branch -r(查看远程分支列表)git checkout develop origin/develop(远程的 develop 分支迁到本地)git checkout -b develop origin/develop(把远程分支迁到本地顺便切换到该分支)git branch a(创建分支 a)git checkout a(切换到 a 分支)git checkout -b a(创建并切换到 a分支)git merge a(合并分支 a 到主分支)合并之前先切换到master分支(在master执行)git rebase a(合并分支a)(在a分支处理)git rebase -i <commitID>(删去那些无关紧要的提交,整理提交记录)git rebase side another合并another分支到side分支上,并且提交记录在最前端git commit --amend -m "这是新的提交日志"修改上次提交日志
merge只是合并另外一个分支的内容,rebase也合并另外一个分支的内容,但是会把本分支的commits顶到最顶端。具体可以查看下面的说法
https://www.zhihu.com/question/36509119/answer/67828312
http://www.cnblogs.com/kidsitcn/p/5339382.html
http://blog.csdn.net/fybon/article/details/52460516
git branch -d a(删除分支 a )git branch -D a(强制删除分支a,针对于 a 有代码没有合并到master,git branch -d a 删除不了)git push --delete origin devloper(删除远程分支)git tag v1.0(建立版本1.0,查看历史版本)git checkout v1.0(切换到1.0版本)git stash(把当前分支所有没有commit的代码暂时保存起来(执行了add 也无所谓))git stash list(查看暂存区的记录)git stash apply(回到暂存之前)git stash drop(回来之后建议删除stash记录)git stash pop(回到暂存之前,并删除记录)git stash clear
是清空所有暂存区的记录,drop 是只删除一条,当然后面可以跟 stash_id 参数来删除指
定的某条记录,不跟参数就是删除最近的,而 clear 是清空。git rebase -i HEAD~4(改变之前4次提交的顺序)git reset HEAD~a(回退到某一个版本)(reset只在本地使用,远程推送建议使用revert会再提交一个新的纪录,该记录引入更改–这些更改刚好就是用来撤销上次提交的,回到上次提交之前的状态)git reset HEAD^(回退到上一个版本)git reset HEAD^^(回退到上上个版本)git reflog(回退错了,前进)git revert HEAD(撤销上次提交,用于远程推送)
添加SSH
在git bash 输入 ssh-keygen -t rsa 生成文件,github创建新的SSH并填入,之后输入 ssh -T git@github.com 测试是否添加成功
推送或者下拉(先pull再push)
git push origin master 推送
git pull origin master 下拉
git pull origin master --allow-unrelated-histories
git push -f origin master 更新
git clone git@github.com:ALguojian/test.git下载github上面的项目到本地
关联giuhub仓库
git remote add origin https://github.com/ALguojian/git_study.git
origin就是仓库名字,建议名字和远程仓库一样,较易管理
git remote -v 查看该项目有哪些仓库
git push origin master 提交代码可以到 master 分支,或者其他分支
git remote rm "origin" 删除origin远程仓库
alias 配置 简短参数
git config --global alias.c checkoutgit config --global alias.cm commitgit config --global alias.st statusgit config --global alias.br branch
git config -l 查看所有配置
补充,移动到其他提交记录,即HEAD的指向
git checkout a 不仅用于切换分支还可用于切换提交记录,此时a代表提交记录的哈希值(很长),不过只需要前几位即可
- 使用
^向上移动 1 个提交记录 - 使用
~<num>向上移动多个提交记录,如~3
^后面加数字标识回到父类其他分支用法:git checkout HEAD~; git checkout HEAD^2; git checkout HEAD~2
并且还支持链式操作:git checkout HEAD~^2~2
所以master^相当于“master 的父节点”。master^^ 是 master 的第二个父节点,也可以将 HEAD 作为相对引用的参照,可以一直使用 HEAD^向上移动
git branch -f master HEAD~3 将 master 分支强制指向 HEAD 的第 3 级父提交(强行改变分支所处位置)
git cherry-pick C2 C3 C4(改变提交记录与主分支,C2是提交的记录的哈希值)
git fetch 同步绑定的仓库(一般是其他分支)
git pull 就是 git fetch 和 git merge <just-fetched-branch> 的缩写!
git fakeTeamwork foo 3模拟远程提交,可以指定分支和次数