初始设置:
git config --global user.name "username" 查看/设置用户名
git config --global user.email "email" 查看/设置邮箱
初始化本地库,关联远程库:
git init 把当前的目录变成由git管理的仓库,生成隐藏的.git目录
git remote add origin https://github.com/luangeng/testgit 将本地库关联到远程库origin
git push -u origin master 将本地master分支推送到远程库,并关联其分支
git remote 查看远程库的信息
git remote show [name] 查看远程库详细
git remote –v 查看远程库的详细信息
从远程获取:
git clone https://github.com/luangeng/testgit 从远程库克隆到本地
git pull origin master 从远程master分支获取 并merge到本地
git fetch origin master 从远程master分支获取 但不merge
git merge origin/master 合并远程分支到当前分支
git checkout -b branch-name origin/master 基于远程分支在本地创建新分支
分支管理:
git branch 查看本地分支
git branch -a 查看所有分支
git branch dev 创建dev分支
git checkout master 切换到dev分支
git checkout -b dev 创建并切换到dev分支
git branch –d dev 删除dev分支
git merge dev 合并dev分支到当前分支
git branch --set-upstream dev origin-dev #添加本地dev分支与远程origin-dev分支的链接
本地修改推送到远程:
git add 1.txt 把1.txt文件添加到暂存区
git rm XX 删除XX文件
git status 查看本地文件状态
git commit –m “add 1.txt” 提交文件, –m后面的是注释
git push origin master 把当前本地分支master推送到远程库origin的对应分支
git commit -am 'xxxx' add并commit
本地撤销:
git diff 1.txt 查看1.txt文件修改了哪些内容
git log 查看历史记录
git reflog 查看历史记录的版本号id
git reset --hard HEAD^ 回退到commit前的版本,
git reset --hard HEAD~3 回退到commit前三个版本
git checkout -- a.txt 把a.txt在工作区的修改全部丢弃
git reset HEAD <file> 撤销暂存区的修改(unstage)
git stash:
git stash [save ‘message’] 将当前分支所有修改存档,并将工作空间还原到最近一次commit的状态(clear状态)
git stash list 查看存档栈,按入栈的顺序展示,最后stash的在最上面
git stash show [stash@{1}] 查看存档的修改内容 ,不加参数则显示最近一次的stash
git stash pop [stash@{1}] 用存档恢复工作区,并删除该存档,修改有冲突时失败,不加参数则恢复最近一次的stash
git stash apply 同stash pop ,但是不删除存档
git stash drop 删除指定存档
git stash clear 清空所有存档,删除其中所有的修改
注意:不要stash太多次,避免混淆; stash操作包括暂存区。
标签:
git tag v01 添加新标签
git tag 查看所有标签
git tag -d v01 删除标签
修改上一次错误的提交:(适用于未push的commit):
git commit --amend 用于对最新一次提交进行撤回,以修补错误(提交说明或者文件),该操作会撤回并删除上一次commit,然后新生成一个commit。用例:
1. 修改代码(包含了错误代码或漏提交文件)
2. commit 错误代码(包含了错误的commit记录)
3. 修改错误代码 并且add该代码文件 和 漏提交的文件,,,(然后发现错误)
4. git commit --amend
5. 修改错误commit记录,退出编辑,完成
注意:该操作会删除commit记录,故该commit必须(未公开)只在本地,否则会对别人造成影响
使用reset回退错误的commit,(适用于未push的commit):
当commit了错误的代码,还未push,可以使用reset命令,将commit撤销,错误代码还保留着,用例:
1. git commit -m '正确的代码'
2. 写了错误的代码
3. git commit -m '错误代码' 没有push(然后发现错误)
4. git reset HEAD^
5. 上次commit被撤销,回到第2步时的状态
6. 修改错误代码,再次commit
注意:push之后的commit不可用此方法,原因是reset之后远程commit记录滞后本地,无法再push
使用revert 撤销错误的commit和push:
当commit了错误的代码并push后,可以使用git revert命令,将代码回退到 错误提交前一次提交的状态,也就是相当于还没有写错误代码,然后再push一次即可。用例:
1. git commit -m 'add 1'
2. 写了错误的代码
3. git commit -am 'add error 1 code' 并且 push,,(然后发现了错误)
4. git revert HEAD
5. 编辑revert的原因,退出编辑
6. 此时工作空间clear,错误代码不见了,回到了第1步提交后的状态
7. 写正确的代码,add commit push 。 全部commit记录如下:
注意:revert会丢弃所有错误代码,而有时我们只是想再修改下,故需要先通过分支备份代码。
修改上一次错误的提交信息:(适用于push后的commit)
git rebase -i HEAD^
修改pick为reword, 退出编辑
修改提交记录,退出编辑
git push -f origin master
使用rebase合并分支:
当多分支开发时出现分叉的情况时,可以使用rebase命令将其他分支的提交插入进到当前分支的提交之前的位置。
如图,在mywork分支执行 git rebase origin 之后,把mywork分支里的每个提交(commit)取消掉,并且把它们临时保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把"mywork"分支更新到最新的"origin"分支,最后把保存的这些补丁应用到"mywork"分支上,
相当于将创建分支的动作推迟到C4之后。
.gitignore文件:
/表示目录 如 log/ 表示log目录
* 通配符
?通陪单个字符
!排除
log/* log目录下所有文件
github关于ssh-key的帮助:
https://help.github.com/articles/generating-an-ssh-key/
ssh-keygen -t rsa -C "your_email@qq.com" 生成公钥私钥
设置对比工具为beyond compare:
修改~/.gitconfig文件为:
[diff]
tool = bc3
[difftool "bc3"]
cmd = /usr/bin/bcompare "$LOCAL" "$REMOTE"
[difftool]
prompt = false
[merge]
tool = bc3
[mergetool "bc3"]
cmd = /usr/bin/bcompare "$LOCAL" "$REMOTE" "$BASE" "$MERGED"
trustExitCode = true