Git学习攻略


Linux 经常使用命令:
1.cd pwd su   2.ls; ls-l; ll  3.mkdir   4.touch 
5.cat       6.grep   7.history   8.clear
9. 文件写入 >   10.rm   11.cp mv  12.aliasgit

Git安装配置:
git config --global user.name "..."
git config --global user.email "..."缓存

TortoiseGit 图形化Git管理工具服务器

Git经常使用命令:
HEAD 当前版本库的头指针
HEAD^ 版本库的上一次提交
~n 前n次提交
暂存区stage
工做区
1.git init 初始化仓库
2.git clone 克隆仓库代码
git pull 更新代码
git fetch; git merge
3.git branch
1)git branch name 建立分支
2) git branch -m oldName newName 本地分支重命名(未推送至远程)
3) git branch -v 查看当前分支
4) git branch 查看全部分支
5) git branch -d 删除本地分支 -D 强制删除
6)git branch -f 强制修改分支位置,让分支指向另外一个提交
7) git push origin --delete newName 删除远程分支
4.git checkout 检出分支 默认是暂存区
1)git checkout -b 建立并切换分支
2)git checkout branch 切换分支,更新HEAD指向branch,并用branch指向的树更新暂存区和工做区
3)git checkout 汇总显示工做区、暂存区和HEAD的区别
4)git checkout -- filename 用暂存区的filename文件覆盖工做区的文件。(至关于重置)
5)git checkout branch -- filename 用branch所指向的提交中的filename 替换工做区和缓存区的相应文件。
origin/develop 服务器develop分支
6)git checkout . 暂存区文件覆盖本地全部文件
7)git checkout HEAD . 或git checkout HEAD <file> 用HEAD指向的master分支中的所有或部分文件替换暂存区和工做区中的文件
5.git add
1) git add -u 将本地文件的变动(修改、删除)所有记录到暂存区
2)git add -a 将工做区中全部改动和新增文件添加至暂存区
3) git add -i 选择性的添加文件
4) git add . 添加全部变动的文件至暂存区
6.git commit
1) git commit -m "..." 提交代码并注释
2)git commit --amend 撤销最近提交
7.git status 暂存区和工做区改变
1)git status -s 精简输出
8.git diff 代码比对
1).git diff 工做区和暂存区比较
2).git diff HEAD 工做区和HEAD比较 HEAD是远程分支
3).git diff --cached 暂存区和HEAD比较
4).git diff B A
9.git log 代码提交历史
1)git log --online
2)git log -n(数字) --pretty=oneline 最近提交的几条记录
3)git log --graph 查看分支合并图
4) git log --stat 查看每次提交的文件变动统计
git reflog
1) git reflog show branch1 查看branch1提交记录
10.git reset 重置命令
1). git reset --hard HEAD^ 完全撤销最近的提交。引用,工做区,暂存区都回退。本身当前版本写的代码丢失。
  git reset --hard 版本号 回退值某个版本
2). git reset 和 git reset HEAD
重置暂存区,将git add命令撤销
3). git reset --filname 和 git reset HEAD filename 将文件filename改动撤出暂存区,撤销git add
4). git reset HEAD^ 和 git reset --mixed HEAD^ 工做区不改变,暂存区和引用回退。(未提交的代码不受影响)
5).git reset --soft HEAD^ 工做区和暂存区不改变,引用回退。至关于撤销git commit
11.git mv oldFileName newFileName 文件更名
12.git stash 保存和恢复工做进度
1)git stash 保存当前工做进度。分别对暂存区和工做区的状态进行保存
save "message...." 保存进度并进行说明
2)git stash list 显示进度列表。
3)git stash pop 恢复最新保存的工做进度,并将恢复的工做进度从储存的工做进度列表中清除
4)git stash [save [--patch] [-k|--[no-] keep-index] [-q|--quiet] [<message>]]
--patch 显示工做区和HEAD的差异
-k或--keep-index 保存进度后不会将暂存区重置
5)git stash apply 和stash pop同样,可是不删除恢复的进度
6)git stash drop [<stash>] 删除一个存储的进度。默认删除最新的进度。
7) git stash clear 删除全部储存的进度
13.git push origin yourbranch 上传你的分支至仓库
1)git push -f 强制推送
2) git push origin --delete newName 删除远程分支app

14.git pull 更新代码
1) git pull origin branch 从branch上更新到当前分支
从branch上更新的别人的新代码自动放到暂存区中,更改完本身的代码,git add,而后git commit会把更新的夜一块儿提交上去。
15.git fetch origin 从远程分支拉取代码
git fetch origin branch1:branch2 拉取远程branch1代码 到 本地branch2
git diff temp git merge branch2 git branch -d branch2
16.git merge
1)git merge master 合并master分支至当前分支
2)git merge --no-ff dev --no-ff 分之合并以后,从分支历史上就能够看出分支信息 工具

git rebase develop 移动分支,把当前分支移动到develop分支以后合并
有冲突则解决冲突,而后git rebase --continue
git rebase --abort 终止rebase行动,回到rebase以前的状态。
17.git remote and origin url 关联远程仓库
git remote -v
18.git rev-parse 版本表示法
1)git rev-parse --symbolic --branchs 显示分支
2)git rev-parse --symbolic --tags 显示里程碑
3) 显示为对于哈希值 git rev-parse HEAD
19. git tag
1)git describe 版本号
2)git tag 查看全部标签
      -n 查看标签说明
3)git tag <tagname> 建立标签
          -a带说明
          -m "msg" 带说明
4)git show <tagname> 查看标签信息
5)git tag -d <tagname> 删除标签
6)git push origin <tagname> 本地标签推送至远程
7) git push origin --tags能够推送所有未推送过的本地标签
8) git push origin :refs/tags/<tagname>能够删除一个远程标签
20.git config --global alias.name "git commit -s" 命令别名
例如:name = ci ;git ci = git commit -sfetch

 

常见问题:ui

1.更新代码有冲突:
1)、git stash ;git pull; git stash pop
2) 、git add ;git commit;git pull
3) 、git fetch ;git rebase o/master;git push ; rebase 当前分支移动到o/master分支,最后再用 git push 推送到远程仓库。
4)、git fetch;git merge o/master;git push 合并以后多一个分支
5) 、git pull --rebase;git push 没合并,直接移动,少一个分支url

更新命令以后:
1.某个文件乱了,想修改这个文件。
1)、只改变工做区 git checkout --file 暂存区文件覆盖工做区文件
2)、同时改变暂存区 1>. git reset HEAD file;git checkout --file 先重置暂存区,再覆盖工做区文件
2>. git checkout origin/develop --file 用服务端develop分支文件覆盖本地的文件spa

此时文件更改成修改前的,而后你把最新的代码合并进来。指针

2.用工具解决冲突:tortoisegit,source tree