下面所写的其实是写给公司内部的Git使用基础教程,我在这里也记录下。
修改Git配置
windows操作系统换行配置
git config --global core.autocrlf input
用户名、邮箱配置
git config user.name yourname --local
git config user.email yourname@tudou.com --local
克隆v3代码库
git clone git@gitlab.intra.tudou.com:static/v3.git
查看分支
列出本地所有的分支
git branch
列出远程所有的分支
git branch -r
创建分支
基于本地分支创建
git branch [BRANCH_NAME]
git push origin [BRANCH_NAME]
基于远程分支创建
git branch [BRANCH_NAME] origin/master
本地分支与远程分支绑定
绑定后操作就能省略origin [branch],使用起来更加方便高效,当然如果有多个远程需要操作就不能省略了
git push -u origin [branch]
切换分支
切换到本地分支,如果本地分支不存在自动寻找远程分支
git checkout [BRANCH_NAME]
更新分支
更新master
git pull --rebase origin master
解决rebase冲突。
git status
# 根据提示打开对应文件,搜索”<<<<<<<“字符,解决冲突后执行
git add -u
git rebase --continue
# 停止pull操作,回pull rebase之前的状态
git rebase --abort
提交代码
提交到本地版本库
git commit -m "commit message"
提交到远程master
git push origin master
合并分支
切换到master。
git checkout master
合并分支。
git merge --no-ff [BRANCH_NAME]
解决src目录下的冲突。
https://help.github.com/articles/resolving-a-merge-conflict-from-the-command-line
使用外部工具解决冲突
解决本次合并的所有冲突
git mergetool
解决特定文件的冲突
git mergetool src/js/g.js
重新构建build、dist目录下的所有冲突的文件。
ytpm [PATH]
提交代码。
git add .
git commit -m "commit message"
恢复代码
放弃本地修改(废弃本地所有未提交的文件,和远程保持一致)
git reset --hard origin/master
恢复一个提交
git revert [COMMIT_ID]
恢复merge
git revert -m 1[MERGE_COMMIT_ID]
恢复到指定版本
git reset --hard [COMMIT_ID]
删除分支
删除本地分支
git branch -d [BRANCH_NAME]
删除远程分支
git push origin --delete[BRANCH_NAME]
查看变更记录
查看变更历史
git log --decorate --numstat [PATH]
查看某个提交记录
git show --name-only [COMMIT_ID]
对比文件
git默认方式
对比工作区版本和暂存区版本
git diff --[PATH]
对比暂存区版本和版本库版本
git diff --cached --[PATH]
对比工作区版本和版本库版本(HEAD)
git diff HEAD --[PATH]
对比两个提交过的文件
git diff [COMMIT_ID_1][COMMIT_ID_2]--[PATH]
对比两个分支的文件
git diff develop master -- src/js/g.js
git diff develop:src/js/g.js master:src/js/g.js
查看其它分支上的文件
git show master:src/js/g.js
外部比较工具完成比较
比较本次合并的所有修改(只与提交前的记录比较)
git difftool
比较指定文件的历史版本
git difftool [GitHash] HEAD -- src/js/g.js
不小心在develop上进行开发时解决方案
未提交时
git stash
git checkout [BRANCH_NAME]
git stash pop
已提交时
git log -1# 记住COMMIT ID
git reset --hard origin/develop
git checkout [BRANCH_NAME]
git cherry-pick [COMMIT_ID]
不小心将develop或基于develop创建的分支合并到master上时解决方案
A--M---B <---develop
\
--C--G---J---P---Q <---master
如上例,需要先确认好J这次错误提交点以及其之前、之后提交点的hash值,并确保当前HEAD处于Q上,接着执行:
git rebase -i -p --onto P G
执行完后需要手工解决之后每次提交出现的冲突,手工比较解决掉冲突后执行:
git add . // 添加此次冲突修改
git rebase --continue
注意,上面的步骤可能会进行很多次,每次都是上面的方法;手工比较的方法可以参看[外部比较工具][1]的使用方式。
其它
Beyond Compare比较工具配置
在~/.gitconfig文件中加入以下配置,使用的比较工具为Beyond Compare,大家可以自行下载;如果是win用户对应的路径需要相应的修改。
另外,Mac版的 Beyond Compare 4 还需要进行设置让其支持通过命令行的方式调用:点击菜单 -> Install Commond Line Tools…然后输入系统登录密码即可。
[merge]
tool = bcomp
[mergetool]
prompt = false
keepBackup = false
[mergetool “bcomp”]
trustExitCode = true
cmd = “/usr/local/bin/bcomp” “$LOCAL” “$REMOTE” “$BASE” “$MERGED”
[diff]
tool = bcomp
[difftool]
prompt = false
[difftool “bcomp”]
trustExitCode = true
cmd = “/usr/local/bin/bcomp” “$LOCAL” “$REMOTE”
常用git Alias
[alias]
st = status --short--branch
pu = pull --rebase
ca = commit --amend
ci = commit -a -v
br = branch
bv = branch -vv
co = checkout
cb = checkout -b
df = diff
un = reset --hard HEAD
uh = reset --hard HEAD^
ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]"--decorate --numstat
ld = log --pretty=format:"%C(yellow)%h\\ %C(green)%ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]"--decorate --date=short--graph
ls = log --pretty=format:"%C(green)%h\\ %C(yellow)[%ad]%Cred%d\\ %Creset%s%Cblue\\ [%cn]"--decorate --date=relative
GitHub 教程系列文章:
GitHub 使用教程图文详解 http://www.linuxidc.com/Linux/2014-09/106230.htm
Git 标签管理详解 http://www.linuxidc.com/Linux/2014-09/106231.htm
Git 分支管理详解 http://www.linuxidc.com/Linux/2014-09/106232.htm
Git 远程仓库详解 http://www.linuxidc.com/Linux/2014-09/106233.htm
Git 本地仓库(Repository)详解 http://www.linuxidc.com/Linux/2014-09/106234.htm
Git 服务器搭建与客户端安装 http://www.linuxidc.com/Linux/2014-05/101830.htm
Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm
分享实用的GitHub 使用教程 http://www.linuxidc.com/Linux/2014-04/100556.htm
Ubuntu下Git服务器的搭建与使用指南 http://www.linuxidc.com/Linux/2015-07/120617.htm
Git 的详细介绍:请点这里
Git 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-09/123053.htm