Git常用操作

 

初始设置:

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
原文地址:https://www.cnblogs.com/luangeng/p/5738714.html